From d896ba803d05bdb3cae43f1ef8a346cea81af765 Mon Sep 17 00:00:00 2001 From: Fernando Bunn Date: Tue, 11 Feb 2025 14:21:56 +0000 Subject: [PATCH 1/6] Enable Omnibar changes for AI Chat (#3954) Task/Issue URL: https://app.asana.com/0/0/1209365332925451/f **Description**: Enable omnibar changes and add new pixels --- .maestro/release_tests/application-lock.yaml | 1 + .maestro/release_tests/autoclear.yaml | 1 + .maestro/release_tests/emailprotection.yaml | 3 +- .../password-authentication.yaml | 3 + .../release_tests/password-management.yaml | 2 + Core/FeatureFlag.swift | 2 +- Core/PixelEvent.swift | 12 +- DuckDuckGo/Base.lproj/OmniBar.xib | 2 +- DuckDuckGo/MainViewController.swift | 16 +- DuckDuckGo/OmniBar.swift | 4 + DuckDuckGo/TabViewController.swift | 1 - DuckDuckGoTests/LargeOmniBarStateTests.swift | 180 +++++++------- DuckDuckGoTests/SmallOmniBarStateTests.swift | 223 +++++++++--------- 13 files changed, 244 insertions(+), 206 deletions(-) diff --git a/.maestro/release_tests/application-lock.yaml b/.maestro/release_tests/application-lock.yaml index 55a497f9ea..addf904ae7 100644 --- a/.maestro/release_tests/application-lock.yaml +++ b/.maestro/release_tests/application-lock.yaml @@ -9,6 +9,7 @@ tags: - runFlow: file: ../shared/setup.yaml +- tapOn: "Browsing Menu" - tapOn: "Settings" - scrollUntilVisible: element: "General" diff --git a/.maestro/release_tests/autoclear.yaml b/.maestro/release_tests/autoclear.yaml index 661591a155..11030d4e5d 100644 --- a/.maestro/release_tests/autoclear.yaml +++ b/.maestro/release_tests/autoclear.yaml @@ -21,6 +21,7 @@ tags: # Enable autoclear +- tapOn: "Browsing Menu" - tapOn: "Settings" - assertVisible: "Default Browser" - scrollUntilVisible: diff --git a/.maestro/release_tests/emailprotection.yaml b/.maestro/release_tests/emailprotection.yaml index ddbd7f49c6..8beb647bb7 100644 --- a/.maestro/release_tests/emailprotection.yaml +++ b/.maestro/release_tests/emailprotection.yaml @@ -7,7 +7,8 @@ tags: - runFlow: file: ../shared/setup.yaml -- tapOn: Settings +- tapOn: "Browsing Menu" +- tapOn: "Settings" # Handling two different flows because of the current experiment # TODO: Remove the unused flow when the experiment is completed. - runFlow: diff --git a/.maestro/release_tests/password-authentication.yaml b/.maestro/release_tests/password-authentication.yaml index dfe82a507c..a4d9d41eda 100644 --- a/.maestro/release_tests/password-authentication.yaml +++ b/.maestro/release_tests/password-authentication.yaml @@ -10,6 +10,7 @@ tags: file: ../shared/setup.yaml # Validate passcode requested when accessing passwords for the first time +- tapOn: "Browsing Menu" - tapOn: "Settings" - scrollUntilVisible: element: "Passwords" @@ -30,6 +31,7 @@ tags: - tapOn: "Done" # Validate initial authentication +- tapOn: "Browsing Menu" - tapOn: "Settings" - scrollUntilVisible: element: "Passwords" @@ -54,6 +56,7 @@ tags: - tapOn: "DuckDuckGO" +- tapOn: "Browsing Menu" - tapOn: "Settings" - scrollUntilVisible: element: "Passwords" diff --git a/.maestro/release_tests/password-management.yaml b/.maestro/release_tests/password-management.yaml index 79edf8a313..f5fe33edd3 100644 --- a/.maestro/release_tests/password-management.yaml +++ b/.maestro/release_tests/password-management.yaml @@ -10,6 +10,7 @@ tags: file: ../shared/setup.yaml # Validate passcode requested when accessing passwords for the first time +- tapOn: "Browsing Menu" - tapOn: "Settings" - scrollUntilVisible: element: "Passwords" @@ -53,6 +54,7 @@ tags: - tapOn: "Done" # Validate everything was saved +- tapOn: "Browsing Menu" - tapOn: "Settings" - scrollUntilVisible: element: "Passwords" diff --git a/Core/FeatureFlag.swift b/Core/FeatureFlag.swift index cb5fd79ccf..d968072d0b 100644 --- a/Core/FeatureFlag.swift +++ b/Core/FeatureFlag.swift @@ -180,7 +180,7 @@ extension FeatureFlag: FeatureFlagDescribing { case .syncSeamlessAccountSwitching: return .remoteReleasable(.subfeature(SyncSubfeature.seamlessAccountSwitching)) case .aiChatNewTabPage: - return .internalOnly() + return .enabled case .testExperiment: return .remoteReleasable(.subfeature(ExperimentTestSubfeatures.experimentTestAA)) case .maliciousSiteProtection: diff --git a/Core/PixelEvent.swift b/Core/PixelEvent.swift index bbe7a03825..f51b1934ef 100644 --- a/Core/PixelEvent.swift +++ b/Core/PixelEvent.swift @@ -76,6 +76,7 @@ extension Pixel { case settingsAutoconsentOff case browsingMenuOpened + case browsingMenuOpenedNewTabPage case browsingMenuNewTab case browsingMenuAddToBookmarks case browsingMenuEditBookmark @@ -95,6 +96,7 @@ extension Pixel { case browsingMenuFireproof case browsingMenuAutofill case browsingMenuAIChat + case browsingMenuListAIChat case addressBarShare case addressBarSettings @@ -669,7 +671,8 @@ extension Pixel { case bookmarksMigrationCouldNotPrepareDatabaseOnFailedMigration case bookmarksMigrationCouldNotRemoveOldStore case bookmarksMigrationCouldNotPrepareMultipleFavoriteFolders - + + case bookmarksOpenFromToolbar case syncSignupDirect case syncSignupConnect case syncLogin @@ -1061,6 +1064,7 @@ extension Pixel.Event { case .settingsMoreSearchSettings: return "m_settings_more_search_settings" case .browsingMenuOpened: return "mb" + case .browsingMenuOpenedNewTabPage: return "m_nav_menu_ntp" case .browsingMenuNewTab: return "mb_tb" case .browsingMenuAddToBookmarks: return "mb_abk" case .browsingMenuEditBookmark: return "mb_ebk" @@ -1080,9 +1084,7 @@ extension Pixel.Event { case .browsingMenuAutofill: return "m_nav_autofill_menu_item_pressed" case .browsingMenuShare: return "m_browsingmenu_share" - case .browsingMenuAIChat: return "m_aichat_menu_tab_icon" case .browsingMenuListPrint: return "m_browsing_menu_list_print" - case .addressBarShare: return "m_addressbar_share" case .addressBarSettings: return "m_addressbar_settings" case .addressBarCancelPressedOnNTP: return "m_addressbar_cancel_ntp" @@ -1629,7 +1631,7 @@ extension Pixel.Event { return "m_d_bookmarks_migration_could_not_prepare_database_on_failed_migration" case .bookmarksMigrationCouldNotRemoveOldStore: return "m_d_bookmarks_migration_could_not_remove_old_store" case .bookmarksMigrationCouldNotPrepareMultipleFavoriteFolders: return "m_d_bookmarks_migration_could_not_prepare_multiple_favorite_folders" - + case .bookmarksOpenFromToolbar: return "m_nav_bookmarks" case .syncSignupDirect: return "m_sync_signup_direct" case .syncSignupConnect: return "m_sync_signup_connect" case .syncLogin: return "m_sync_login" @@ -1961,6 +1963,8 @@ extension Pixel.Event { case .openAIChatFromWidgetQuickAction: return "m_aichat-widget-quickaction" case .openAIChatFromWidgetControlCenter: return "m_aichat-widget-control-center" case .openAIChatFromWidgetLockScreenComplication: return "m_aichat-widget-lock-screen-complication" + case .browsingMenuAIChat: return "m_aichat_menu_tab_icon" + case .browsingMenuListAIChat: return "m_browsing_menu_list_aichat" // MARK: Lifecycle case .appDidTransitionToUnexpectedState: return "m_debug_app-did-transition-to-unexpected-state-3" diff --git a/DuckDuckGo/Base.lproj/OmniBar.xib b/DuckDuckGo/Base.lproj/OmniBar.xib index 4aa7fad116..bdcdbc00b8 100644 --- a/DuckDuckGo/Base.lproj/OmniBar.xib +++ b/DuckDuckGo/Base.lproj/OmniBar.xib @@ -86,7 +86,7 @@