commit a722ab1909ac72380dc5709fb2ac0b28c59ed247 parent 3e23068af049a2af2c9ddee1c3bcbd2028885fd9 Author: rmalicdem <rmalicdem@mozilla.com> Date: Thu, 11 Dec 2025 16:50:57 +0000 Bug 2004455 - Add translate action telemetry r=android-reviewers,Roger Differential Revision: https://phabricator.services.mozilla.com/D275305 Diffstat:
5 files changed, 42 insertions(+), 1 deletion(-)
diff --git a/mobile/android/fenix/app/metrics.yaml b/mobile/android/fenix/app/metrics.yaml @@ -14435,7 +14435,7 @@ toolbar: add_new_tab, add_new_tab_long_press, add_new_private_tab, tab_counter, tab_counter_long_press, menu, share, clear, refresh, stop, add_bookmark, edit_bookmark, security_indicator, qr_code, home, reader_mode, microphone, open_in_fenix, close, site_custom, search_engine_selector, - search_engine_selected. + search_engine_selected, translate. type: string extra: description: | diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarMiddleware.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarMiddleware.kt @@ -479,6 +479,7 @@ class BrowserToolbarMiddleware( resId = R.id.browserFragment, directions = BrowserFragmentDirections.actionBrowserFragmentToTranslationsDialogFragment(), ) + next(action) } is RefreshClicked -> { diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarTelemetryMiddleware.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarTelemetryMiddleware.kt @@ -22,6 +22,7 @@ import org.mozilla.fenix.components.toolbar.DisplayActions.NavigateForwardLongCl import org.mozilla.fenix.components.toolbar.DisplayActions.RefreshClicked import org.mozilla.fenix.components.toolbar.DisplayActions.ShareClicked import org.mozilla.fenix.components.toolbar.DisplayActions.StopRefreshClicked +import org.mozilla.fenix.components.toolbar.DisplayActions.TranslateClicked import org.mozilla.fenix.components.toolbar.PageEndActionsInteractions.ReaderModeClicked import org.mozilla.fenix.components.toolbar.StartPageActions.SiteInfoClicked import org.mozilla.fenix.components.toolbar.TabCounterInteractions.AddNewPrivateTab @@ -45,6 +46,7 @@ import org.mozilla.fenix.telemetry.ACTION_SHARE_CLICKED import org.mozilla.fenix.telemetry.ACTION_STOP_CLICKED import org.mozilla.fenix.telemetry.ACTION_TAB_COUNTER_CLICKED import org.mozilla.fenix.telemetry.ACTION_TAB_COUNTER_LONG_CLICKED +import org.mozilla.fenix.telemetry.ACTION_TRANSLATE_CLICKED import org.mozilla.fenix.telemetry.SOURCE_ADDRESS_BAR import org.mozilla.fenix.telemetry.SOURCE_BROWSER_END import org.mozilla.fenix.telemetry.SOURCE_BROWSER_START @@ -108,6 +110,9 @@ class BrowserToolbarTelemetryMiddleware : Middleware<BrowserToolbarState, Browse is ReaderModeClicked -> { trackToolbarEvent(ToolbarActionRecord.ReaderModeClicked, action.source) } + is TranslateClicked -> { + trackToolbarEvent(ToolbarActionRecord.TranslateClicked, action.source) + } is HomepageClicked -> { trackToolbarEvent(ToolbarActionRecord.HomepageClicked, action.source) } @@ -137,6 +142,7 @@ class BrowserToolbarTelemetryMiddleware : Middleware<BrowserToolbarState, Browse data object EditBookmarkClicked : ToolbarActionRecord(ACTION_EDIT_BOOKMARK_CLICKED) data object ShareClicked : ToolbarActionRecord(ACTION_SHARE_CLICKED) data object ReaderModeClicked : ToolbarActionRecord(ACTION_READER_MODE_CLICKED) + data object TranslateClicked : ToolbarActionRecord(ACTION_TRANSLATE_CLICKED) data object HomepageClicked : ToolbarActionRecord(ACTION_HOME_CLICKED) data object SecurityIndicatorClicked : ToolbarActionRecord(ACTION_SECURITY_INDICATOR_CLICKED) } diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/telemetry/ToolbarTelemetryConstants.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/telemetry/ToolbarTelemetryConstants.kt @@ -20,6 +20,7 @@ const val ACTION_ADD_NEW_TAB_LONG_CLICKED = "add_new_tab_long_press" const val ACTION_CLEAR_CLICKED = "clear" const val ACTION_CLOSE_CLICKED = "close" const val ACTION_EDIT_BOOKMARK_CLICKED = "edit_bookmark" +const val ACTION_TRANSLATE_CLICKED = "translate" const val ACTION_HOME_CLICKED = "home" const val ACTION_MENU_CLICKED = "menu" const val ACTION_MICROPHONE_CLICKED = "microphone" diff --git a/mobile/android/fenix/app/src/test/java/org/mozilla/fenix/components/toolbar/BrowserToolbarTelemetryMiddlewareTest.kt b/mobile/android/fenix/app/src/test/java/org/mozilla/fenix/components/toolbar/BrowserToolbarTelemetryMiddlewareTest.kt @@ -17,6 +17,7 @@ import org.mozilla.fenix.GleanMetrics.Toolbar import org.mozilla.fenix.components.toolbar.BrowserToolbarTelemetryMiddleware.ToolbarActionRecord import org.mozilla.fenix.components.toolbar.DisplayActions.AddBookmarkClicked import org.mozilla.fenix.components.toolbar.DisplayActions.EditBookmarkClicked +import org.mozilla.fenix.components.toolbar.DisplayActions.HomepageClicked import org.mozilla.fenix.components.toolbar.DisplayActions.MenuClicked import org.mozilla.fenix.components.toolbar.DisplayActions.NavigateBackClicked import org.mozilla.fenix.components.toolbar.DisplayActions.NavigateBackLongClicked @@ -25,6 +26,8 @@ import org.mozilla.fenix.components.toolbar.DisplayActions.NavigateForwardLongCl import org.mozilla.fenix.components.toolbar.DisplayActions.RefreshClicked import org.mozilla.fenix.components.toolbar.DisplayActions.ShareClicked import org.mozilla.fenix.components.toolbar.DisplayActions.StopRefreshClicked +import org.mozilla.fenix.components.toolbar.DisplayActions.TranslateClicked +import org.mozilla.fenix.components.toolbar.PageEndActionsInteractions.ReaderModeClicked import org.mozilla.fenix.components.toolbar.StartPageActions.SiteInfoClicked import org.mozilla.fenix.components.toolbar.TabCounterInteractions.AddNewPrivateTab import org.mozilla.fenix.components.toolbar.TabCounterInteractions.AddNewTab @@ -168,6 +171,36 @@ class BrowserToolbarTelemetryMiddlewareTest { assertTelemetryRecorded(Source.AddressBar.PageStart, item = ToolbarActionRecord.SecurityIndicatorClicked.action) } + @Test + fun `WHEN reader mode is clicked THEN record page end telemetry`() { + buildStore.dispatch(ReaderModeClicked(isActive = false)) + assertTelemetryRecorded(Source.AddressBar.PageEnd, item = ToolbarActionRecord.ReaderModeClicked.action) + + buildStore.dispatch(ReaderModeClicked(isActive = true)) + assertTelemetryRecorded(Source.AddressBar.PageEnd, item = ToolbarActionRecord.ReaderModeClicked.action) + } + + @Test + fun `WHEN translating a page THEN record telemetry based on page end, browser end or navbar source`() { + buildStore.dispatch(TranslateClicked(Source.AddressBar.PageEnd)) + assertTelemetryRecorded(Source.AddressBar.PageEnd, item = ToolbarActionRecord.TranslateClicked.action) + + buildStore.dispatch(TranslateClicked(Source.AddressBar.BrowserEnd)) + assertTelemetryRecorded(Source.AddressBar.BrowserEnd, item = ToolbarActionRecord.TranslateClicked.action) + + buildStore.dispatch(TranslateClicked(Source.NavigationBar)) + assertTelemetryRecorded(Source.NavigationBar, item = ToolbarActionRecord.TranslateClicked.action) + } + + @Test + fun `WHEN homepage is clicked THEN record telemetry based on browser end or navbar source`() { + buildStore.dispatch(HomepageClicked(Source.AddressBar.BrowserEnd)) + assertTelemetryRecorded(Source.AddressBar.BrowserEnd, item = ToolbarActionRecord.HomepageClicked.action) + + buildStore.dispatch(HomepageClicked(Source.NavigationBar)) + assertTelemetryRecorded(Source.NavigationBar, item = ToolbarActionRecord.HomepageClicked.action) + } + private fun assertTelemetryRecorded( source: Source, item: String,