commit 6be5ec56177db39911411a16b5e8a20fd837aec3 parent f52127ca4b5937af403382f8bb0a46c410fa40d9 Author: rmalicdem <rmalicdem@mozilla.com> Date: Tue, 9 Dec 2025 17:01:00 +0000 Bug 2002655 - Add interaction source in Translate and Back r=android-reviewers,Roger Differential Revision: https://phabricator.services.mozilla.com/D274213 Diffstat:
3 files changed, 34 insertions(+), 22 deletions(-)
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 @@ -141,8 +141,8 @@ import mozilla.components.ui.tabcounter.R as tabcounterR @VisibleForTesting internal sealed class DisplayActions : BrowserToolbarEvent { data class MenuClicked(override val source: Source) : DisplayActions() - data object NavigateBackClicked : DisplayActions() - data object NavigateBackLongClicked : DisplayActions() + data class NavigateBackClicked(override val source: Source) : DisplayActions() + data class NavigateBackLongClicked(override val source: Source) : DisplayActions() data object NavigateForwardClicked : DisplayActions() data object NavigateForwardLongClicked : DisplayActions() data class RefreshClicked(val bypassCache: Boolean) : DisplayActions() @@ -150,7 +150,7 @@ internal sealed class DisplayActions : BrowserToolbarEvent { data class AddBookmarkClicked(override val source: Source) : DisplayActions() data class EditBookmarkClicked(override val source: Source) : DisplayActions() data class ShareClicked(override val source: Source) : DisplayActions() - data object TranslateClicked : DisplayActions() + data class TranslateClicked(override val source: Source) : DisplayActions() data class HomepageClicked(override val source: Source) : DisplayActions() } @@ -1123,8 +1123,8 @@ class BrowserToolbarMiddleware( } else { ActionButton.State.DISABLED }, - onClick = NavigateBackClicked, - onLongClick = NavigateBackLongClicked, + onClick = NavigateBackClicked(source), + onLongClick = NavigateBackLongClicked(source), ) ToolbarAction.Forward -> ActionButtonRes( @@ -1186,7 +1186,7 @@ class BrowserToolbarMiddleware( } else { ActionButton.State.DEFAULT }, - onClick = TranslateClicked, + onClick = TranslateClicked(source), ) ToolbarAction.TabCounter -> { diff --git a/mobile/android/fenix/app/src/test/java/org/mozilla/fenix/components/toolbar/BrowserToolbarMiddlewareTest.kt b/mobile/android/fenix/app/src/test/java/org/mozilla/fenix/components/toolbar/BrowserToolbarMiddlewareTest.kt @@ -2115,8 +2115,8 @@ class BrowserToolbarMiddlewareTest { assertEquals(iconsR.drawable.mozac_ic_back_24, result.drawableResId) assertEquals(R.string.browser_menu_back, result.contentDescription) assertEquals(ActionButton.State.DISABLED, result.state) - assertEquals(NavigateBackClicked, result.onClick) - assertEquals(NavigateBackLongClicked, result.onLongClick) + assertEquals(NavigateBackClicked(Source.AddressBar), result.onClick) + assertEquals(NavigateBackLongClicked(Source.AddressBar), result.onLongClick) } @Test @@ -2312,7 +2312,7 @@ class BrowserToolbarMiddlewareTest { assertEquals(iconsR.drawable.mozac_ic_translate_24, result.drawableResId) assertEquals(R.string.browser_toolbar_translate, result.contentDescription) assertEquals(ActionButton.State.DEFAULT, result.state) - assertEquals(TranslateClicked, result.onClick) + assertEquals(TranslateClicked(Source.AddressBar), result.onClick) } @Test @@ -2942,7 +2942,7 @@ class BrowserToolbarMiddlewareTest { val toolbarStore = buildStore() val translateButton = toolbarStore.state.displayState.navigationActions.first() as ActionButtonRes - assertEquals(expectedTranslateButton(), translateButton) + assertEquals(expectedTranslateButton(source = Source.NavigationBar), translateButton) } @Test @@ -2962,7 +2962,7 @@ class BrowserToolbarMiddlewareTest { val toolbarStore = buildStore() val translateButton = toolbarStore.state.displayState.navigationActions.first() as ActionButtonRes - assertEquals(expectedTranslateButton(isActive = true), translateButton) + assertEquals(expectedTranslateButton(isActive = true, source = Source.NavigationBar), translateButton) } @Test @@ -2986,7 +2986,7 @@ class BrowserToolbarMiddlewareTest { val toolbarStore = buildStore() val backButton = toolbarStore.state.displayState.navigationActions.first() as ActionButtonRes - assertEquals(expectedGoBackButton(isActive = false), backButton) + assertEquals(expectedGoBackButton(isActive = false, source = Source.NavigationBar), backButton) } @Test @@ -3011,7 +3011,7 @@ class BrowserToolbarMiddlewareTest { mainLooperRule.idle() val backButton = toolbarStore.state.displayState.navigationActions.first() as ActionButtonRes - assertEquals(expectedGoBackButton(), backButton) + assertEquals(expectedGoBackButton(source = Source.NavigationBar), backButton) } @Test @@ -3102,25 +3102,31 @@ class BrowserToolbarMiddlewareTest { onLongClick = NavigateForwardLongClicked, ) - private fun expectedGoBackButton(isActive: Boolean = true) = ActionButtonRes( + private fun expectedGoBackButton( + isActive: Boolean = true, + source: Source = Source.AddressBar, + ) = ActionButtonRes( drawableResId = iconsR.drawable.mozac_ic_back_24, contentDescription = R.string.browser_menu_back, state = when (isActive) { true -> ActionButton.State.DEFAULT false -> ActionButton.State.DISABLED }, - onClick = NavigateBackClicked, - onLongClick = NavigateBackLongClicked, + onClick = NavigateBackClicked(source), + onLongClick = NavigateBackLongClicked(source), ) - private fun expectedTranslateButton(isActive: Boolean = false) = ActionButtonRes( + private fun expectedTranslateButton( + isActive: Boolean = false, + source: Source = Source.AddressBar, + ) = ActionButtonRes( drawableResId = iconsR.drawable.mozac_ic_translate_24, contentDescription = R.string.browser_toolbar_translate, state = when (isActive) { true -> ActionButton.State.ACTIVE false -> ActionButton.State.DEFAULT }, - onClick = TranslateClicked, + onClick = TranslateClicked(source), ) private fun expectedTabCounterButton( 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 @@ -85,15 +85,21 @@ class BrowserToolbarTelemetryMiddlewareTest { } @Test - fun `WHEN navigating back THEN record addressBar telemetry`() { - buildStore.dispatch(NavigateBackClicked) + fun `WHEN navigating back THEN record telemetry based on addressBar or navbar source`() { + buildStore.dispatch(NavigateBackClicked(Source.AddressBar)) assertTelemetryRecorded(Source.AddressBar, item = ToolbarActionRecord.NavigateBackClicked.action) + + buildStore.dispatch(NavigateBackClicked(Source.NavigationBar)) + assertTelemetryRecorded(Source.NavigationBar, item = ToolbarActionRecord.NavigateBackClicked.action) } @Test - fun `WHEN navigating back is long clicked THEN record addressBar telemetry`() { - buildStore.dispatch(NavigateBackLongClicked) + fun `WHEN navigating back is long clicked THEN record telemetry based on addressBar or navbar source`() { + buildStore.dispatch(NavigateBackLongClicked(Source.AddressBar)) assertTelemetryRecorded(Source.AddressBar, item = ToolbarActionRecord.NavigateBackLongClicked.action) + + buildStore.dispatch(NavigateBackLongClicked(Source.NavigationBar)) + assertTelemetryRecorded(Source.NavigationBar, item = ToolbarActionRecord.NavigateBackLongClicked.action) } @Test