commit 7296f3f74f941c53d86b4c5db00c2e5a65ce2fba parent c1e1bdaf607a898b62eb51c0d7368fbd6b2cf908 Author: rmalicdem <rmalicdem@mozilla.com> Date: Tue, 11 Nov 2025 21:29:22 +0000 Bug 1969114 - Add 'Back' to expanded shortcuts r=android-reviewers,Roger Differential Revision: https://phabricator.services.mozilla.com/D271660 Diffstat:
5 files changed, 77 insertions(+), 1 deletion(-)
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 @@ -1041,6 +1041,7 @@ class BrowserToolbarMiddleware( ) }.collect { updateEndBrowserActions(context) + updateNavigationActions(context) updateStartBrowserActions(context) } } diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/toolbar/BrowserToolbarMiddleware.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/toolbar/BrowserToolbarMiddleware.kt @@ -484,6 +484,7 @@ class BrowserToolbarMiddleware( NewTab, FakeTranslate, FakeHomepage, + FakeBack, } private data class HomeToolbarActionConfig( @@ -568,6 +569,13 @@ class BrowserToolbarMiddleware( state = ActionButton.State.DISABLED, onClick = FakeClicked, ) + + HomeToolbarAction.FakeBack -> ActionButtonRes( + drawableResId = iconsR.drawable.mozac_ic_back_24, + contentDescription = R.string.browser_menu_back, + state = ActionButton.State.DISABLED, + onClick = FakeClicked, + ) } companion object { @@ -578,6 +586,7 @@ class BrowserToolbarMiddleware( ShortcutType.BOOKMARK -> HomeToolbarAction.FakeBookmark ShortcutType.TRANSLATE -> HomeToolbarAction.FakeTranslate ShortcutType.HOMEPAGE -> HomeToolbarAction.FakeHomepage + ShortcutType.BACK -> HomeToolbarAction.FakeBack else -> HomeToolbarAction.FakeBookmark } } diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/ToolbarShortcut.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/ToolbarShortcut.kt @@ -69,7 +69,7 @@ internal val allShortcutOptions: List<ShortcutOption> = listOf( ShortcutType.BACK, iconsR.drawable.mozac_ic_back_24, R.string.toolbar_customize_shortcut_back, - setOf(ShortcutAvailability.SIMPLE), + setOf(ShortcutAvailability.SIMPLE, ShortcutAvailability.EXPANDED), ), ) 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 @@ -3151,6 +3151,43 @@ class BrowserToolbarMiddlewareTest { } @Test + fun `GIVEN expanded toolbar use back shortcut AND current page has no history WHEN initializing toolbar THEN show DISABLED Back in navigation actions`() = runTest { + every { settings.shouldUseExpandedToolbar } returns true + every { settings.shouldShowToolbarCustomization } returns true + every { settings.toolbarExpandedShortcutKey } returns ShortcutType.BACK + + val toolbarStore = buildStore() + + val backButton = toolbarStore.state.displayState.navigationActions.first() as ActionButtonRes + assertEquals(expectedGoBackButton(isActive = false), backButton) + } + + @Test + fun `GIVEN expanded toolbar use back shortcut AND current page has history WHEN initializing toolbar THEN show ACTIVE Back in navigation actions`() = runTest { + every { settings.shouldUseExpandedToolbar } returns true + every { settings.shouldShowToolbarCustomization } returns true + every { settings.toolbarExpandedShortcutKey } returns ShortcutType.BACK + + val tab = createTab(url = "https://example.com").let { + it.copy(content = it.content.copy(canGoBack = true)) + } + val browserStore = BrowserStore( + BrowserState( + tabs = listOf(tab), + selectedTabId = tab.id, + ), + ) + val middleware = buildMiddleware( + browserStore = browserStore, + ) + val toolbarStore = buildStore(middleware) + mainLooperRule.idle() + + val backButton = toolbarStore.state.displayState.navigationActions.first() as ActionButtonRes + assertEquals(expectedGoBackButton(), backButton) + } + + @Test fun `mapShortcutToAction maps keys to actions and falls back to default set`() { assertEquals( ToolbarAction.NewTab, diff --git a/mobile/android/fenix/app/src/test/java/org/mozilla/fenix/home/toolbar/BrowserToolbarMiddlewareTest.kt b/mobile/android/fenix/app/src/test/java/org/mozilla/fenix/home/toolbar/BrowserToolbarMiddlewareTest.kt @@ -853,6 +853,24 @@ class BrowserToolbarMiddlewareTest { } @Test + fun `GIVEN expanded toolbar use back shortcut WHEN initializing toolbar THEN show DISABLED Back in navigation actions`() = runTest { + every { testContext.settings().shouldShowToolbarCustomization } returns true + every { testContext.settings().shouldUseExpandedToolbar } returns true + every { testContext.settings().toolbarExpandedShortcutKey } returns ShortcutType.BACK + + val middleware = BrowserToolbarMiddleware( + appStore, + browserStore, + mockk(), + mockk(), + ) + val toolbarStore = buildStore(middleware) + + val backButton = toolbarStore.state.displayState.navigationActions.first() as ActionButtonRes + assertEquals(expectedBackButton, backButton) + } + + @Test fun `mapShortcutToAction maps keys to actions and falls back to fake bookmark action`() { assertEquals( HomeToolbarAction.FakeBookmark, @@ -867,6 +885,10 @@ class BrowserToolbarMiddlewareTest { mapShortcutToAction(key = ShortcutType.HOMEPAGE), ) assertEquals( + HomeToolbarAction.FakeBack, + mapShortcutToAction(key = ShortcutType.BACK), + ) + assertEquals( HomeToolbarAction.FakeBookmark, mapShortcutToAction(key = "does_not_exist"), ) @@ -1012,6 +1034,13 @@ class BrowserToolbarMiddlewareTest { onClick = FakeClicked, ) + private val expectedBackButton = ActionButtonRes( + drawableResId = iconsR.drawable.mozac_ic_back_24, + contentDescription = R.string.browser_menu_back, + state = ActionButton.State.DISABLED, + onClick = FakeClicked, + ) + private class FakeLifecycleOwner(initialState: Lifecycle.State) : LifecycleOwner { override val lifecycle: Lifecycle = LifecycleRegistry(this).apply { currentState = initialState