tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit 91e0eb0b32eac2c94719fe003aa33bf6fb790b43
parent 416ef997d0d7fff79f39843e2eacfaf262a9ae50
Author: Gabriel Luong <gabriel.luong@gmail.com>
Date:   Thu, 23 Oct 2025 21:00:37 +0000

Bug 1993655 - Part 6: Migrate MenuNavigation to use M3 color tokens r=android-reviewers,007

Acorn Navigation Bar Figma: https://www.figma.com/design/MjufE1X5fvkxZ0YneX4kRd/Android-Library--2025-?node-id=64178-18160&m=dev
Menu Figma: https://www.figma.com/design/FWc4e0Z7ZZZOQwTxkhWo34/Menu-Handoff---2025?node-id=15693-4882&m=dev

Differential Revision: https://phabricator.services.mozilla.com/D268425

Diffstat:
Mmobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/menu/compose/CustomTabMenu.kt | 18++++++++++--------
Mmobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/menu/compose/MainMenu.kt | 20++++++++++----------
Mmobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/menu/compose/MenuNavigation.kt | 123++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------
3 files changed, 95 insertions(+), 66 deletions(-)

diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/menu/compose/CustomTabMenu.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/menu/compose/CustomTabMenu.kt @@ -98,16 +98,17 @@ internal fun CustomTabMenu( if (!isBottomToolbar) { MenuNavigation( isSiteLoading = isSiteLoading, - goBackState = if (canGoBack) MenuItemState.ENABLED else MenuItemState.DISABLED, - goForwardState = if (canGoForward) MenuItemState.ENABLED else MenuItemState.DISABLED, + isExtensionsExpanded = false, + isMoreMenuExpanded = false, onBackButtonClick = onBackButtonClick, onForwardButtonClick = onForwardButtonClick, onRefreshButtonClick = onRefreshButtonClick, onStopButtonClick = onStopButtonClick, onShareButtonClick = onShareButtonClick, - isExtensionsExpanded = false, - isMoreMenuExpanded = false, + goBackState = if (canGoBack) MenuItemState.ENABLED else MenuItemState.DISABLED, + goForwardState = if (canGoForward) MenuItemState.ENABLED else MenuItemState.DISABLED, ) + if (scrollState.canScrollBackward) { HorizontalDivider(color = FirefoxTheme.colors.borderPrimary) } @@ -118,17 +119,18 @@ internal fun CustomTabMenu( if (scrollState.canScrollBackward) { HorizontalDivider(color = FirefoxTheme.colors.borderPrimary) } + MenuNavigation( isSiteLoading = isSiteLoading, - goBackState = if (canGoBack) MenuItemState.ENABLED else MenuItemState.DISABLED, - goForwardState = if (canGoForward) MenuItemState.ENABLED else MenuItemState.DISABLED, + isExtensionsExpanded = false, + isMoreMenuExpanded = false, onBackButtonClick = onBackButtonClick, onForwardButtonClick = onForwardButtonClick, onRefreshButtonClick = onRefreshButtonClick, onStopButtonClick = onStopButtonClick, onShareButtonClick = onShareButtonClick, - isExtensionsExpanded = false, - isMoreMenuExpanded = false, + goBackState = if (canGoBack) MenuItemState.ENABLED else MenuItemState.DISABLED, + goForwardState = if (canGoForward) MenuItemState.ENABLED else MenuItemState.DISABLED, ) } }, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/menu/compose/MainMenu.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/menu/compose/MainMenu.kt @@ -209,18 +209,18 @@ fun MainMenu( header = { if (accessPoint != MenuAccessPoint.Home && !isBottomToolbar && !isExpandedToolbarEnabled) { MenuNavigation( - state = MenuItemState.ENABLED, - goBackState = if (canGoBack) MenuItemState.ENABLED else MenuItemState.DISABLED, - goForwardState = if (canGoForward) MenuItemState.ENABLED else MenuItemState.DISABLED, isSiteLoading = isSiteLoading, + isExtensionsExpanded = isExtensionsExpanded, + isMoreMenuExpanded = isMoreMenuExpanded, onBackButtonClick = onBackButtonClick, onForwardButtonClick = onForwardButtonClick, onRefreshButtonClick = onRefreshButtonClick, onStopButtonClick = onStopButtonClick, onShareButtonClick = onShareButtonClick, - isExtensionsExpanded = isExtensionsExpanded, - isMoreMenuExpanded = isMoreMenuExpanded, + goBackState = if (canGoBack) MenuItemState.ENABLED else MenuItemState.DISABLED, + goForwardState = if (canGoForward) MenuItemState.ENABLED else MenuItemState.DISABLED, ) + if (scrollState.canScrollBackward) { HorizontalDivider(color = FirefoxTheme.colors.borderPrimary) } @@ -231,18 +231,18 @@ fun MainMenu( if (scrollState.canScrollBackward) { HorizontalDivider(color = FirefoxTheme.colors.borderPrimary) } + MenuNavigation( - state = MenuItemState.ENABLED, - goBackState = if (canGoBack) MenuItemState.ENABLED else MenuItemState.DISABLED, - goForwardState = if (canGoForward) MenuItemState.ENABLED else MenuItemState.DISABLED, isSiteLoading = isSiteLoading, + isExtensionsExpanded = isExtensionsExpanded, + isMoreMenuExpanded = isMoreMenuExpanded, onBackButtonClick = onBackButtonClick, onForwardButtonClick = onForwardButtonClick, onRefreshButtonClick = onRefreshButtonClick, onStopButtonClick = onStopButtonClick, onShareButtonClick = onShareButtonClick, - isExtensionsExpanded = isExtensionsExpanded, - isMoreMenuExpanded = isMoreMenuExpanded, + goBackState = if (canGoBack) MenuItemState.ENABLED else MenuItemState.DISABLED, + goForwardState = if (canGoForward) MenuItemState.ENABLED else MenuItemState.DISABLED, ) } }, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/menu/compose/MenuNavigation.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/menu/compose/MenuNavigation.kt @@ -18,6 +18,7 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment @@ -43,17 +44,17 @@ import mozilla.components.ui.icons.R as iconsR @Suppress("LongParameterList") @Composable internal fun MenuNavigation( - state: MenuItemState = MenuItemState.ENABLED, isSiteLoading: Boolean, - goBackState: MenuItemState = MenuItemState.ENABLED, - goForwardState: MenuItemState = MenuItemState.ENABLED, + isExtensionsExpanded: Boolean, + isMoreMenuExpanded: Boolean, onBackButtonClick: (longPress: Boolean) -> Unit, onForwardButtonClick: (longPress: Boolean) -> Unit, onRefreshButtonClick: (longPress: Boolean) -> Unit, onStopButtonClick: () -> Unit, onShareButtonClick: () -> Unit, - isExtensionsExpanded: Boolean, - isMoreMenuExpanded: Boolean, + state: MenuItemState = MenuItemState.ENABLED, + goBackState: MenuItemState = MenuItemState.ENABLED, + goForwardState: MenuItemState = MenuItemState.ENABLED, ) { val navigationHeaderContentDescription = stringResource(id = R.string.browser_main_menu_content_description_navigation_header) @@ -63,9 +64,9 @@ internal fun MenuNavigation( .fillMaxWidth() .background( color = if (isExtensionsExpanded || isMoreMenuExpanded) { - FirefoxTheme.colors.layerSearch + MaterialTheme.colorScheme.surfaceContainerHighest } else { - FirefoxTheme.colors.layer1 + MaterialTheme.colorScheme.surface }, ) .padding(horizontal = 4.dp, vertical = 12.dp) @@ -146,7 +147,7 @@ private fun MenuNavItem( tint = getIconTint(state = state), ) - Spacer(modifier = Modifier.height(4.dp)) + Spacer(modifier = Modifier.height(FirefoxTheme.layout.space.static50)) Text( text = label, @@ -162,65 +163,91 @@ private fun MenuNavItem( @Composable private fun getLabelTextColor(state: MenuItemState): Color { return when (state) { - MenuItemState.ACTIVE -> FirefoxTheme.colors.textAccent - MenuItemState.WARNING -> FirefoxTheme.colors.textCritical - MenuItemState.DISABLED -> FirefoxTheme.colors.textDisabled - else -> FirefoxTheme.colors.textPrimary + MenuItemState.ACTIVE -> MaterialTheme.colorScheme.tertiary + MenuItemState.WARNING -> MaterialTheme.colorScheme.error + MenuItemState.DISABLED -> MaterialTheme.colorScheme.onSurface.copy(alpha = 0.38f) + else -> MaterialTheme.colorScheme.onSurface } } @Composable private fun getIconTint(state: MenuItemState): Color { return when (state) { - MenuItemState.ACTIVE -> FirefoxTheme.colors.iconAccentViolet - MenuItemState.WARNING -> FirefoxTheme.colors.iconCritical - MenuItemState.DISABLED -> FirefoxTheme.colors.iconDisabled - else -> FirefoxTheme.colors.iconPrimary + MenuItemState.ACTIVE -> MaterialTheme.colorScheme.tertiary + MenuItemState.WARNING -> MaterialTheme.colorScheme.error + MenuItemState.DISABLED -> MaterialTheme.colorScheme.onSurface.copy(alpha = 0.38f) + else -> MaterialTheme.colorScheme.onSurface } } @PreviewLightDark @Composable -private fun MenuHeaderPreview() { +private fun MenuNavigationPreview() { FirefoxTheme { - Column( - modifier = Modifier - .background(color = FirefoxTheme.colors.layer3), - ) { - MenuNavigation( - isSiteLoading = false, - onBackButtonClick = {}, - onForwardButtonClick = {}, - onRefreshButtonClick = {}, - onStopButtonClick = {}, - onShareButtonClick = {}, - isExtensionsExpanded = false, - isMoreMenuExpanded = false, - ) - } + MenuNavigation( + isSiteLoading = false, + isExtensionsExpanded = false, + isMoreMenuExpanded = false, + onBackButtonClick = {}, + onForwardButtonClick = {}, + onRefreshButtonClick = {}, + onStopButtonClick = {}, + onShareButtonClick = {}, + ) + } +} + +@PreviewLightDark +@Composable +private fun MenuNavigationExpandedPreview() { + FirefoxTheme { + MenuNavigation( + isSiteLoading = false, + isExtensionsExpanded = true, + isMoreMenuExpanded = false, + onBackButtonClick = {}, + onForwardButtonClick = {}, + onRefreshButtonClick = {}, + onStopButtonClick = {}, + onShareButtonClick = {}, + ) } } @Preview @Composable -private fun MenuHeaderPrivatePreview( +private fun MenuNavigationPrivatePreview( @PreviewParameter(SiteLoadingPreviewParameterProvider::class) isSiteLoading: Boolean, ) { FirefoxTheme(theme = Theme.Private) { - Column( - modifier = Modifier - .background(color = FirefoxTheme.colors.layer3), - ) { - MenuNavigation( - isSiteLoading = isSiteLoading, - onBackButtonClick = {}, - onForwardButtonClick = {}, - onRefreshButtonClick = {}, - onStopButtonClick = {}, - onShareButtonClick = {}, - isExtensionsExpanded = false, - isMoreMenuExpanded = false, - ) - } + MenuNavigation( + isSiteLoading = isSiteLoading, + isExtensionsExpanded = false, + isMoreMenuExpanded = false, + onBackButtonClick = {}, + onForwardButtonClick = {}, + onRefreshButtonClick = {}, + onStopButtonClick = {}, + onShareButtonClick = {}, + ) + } +} + +@Preview +@Composable +private fun MenuNavigationExpandedPrivatePreview( + @PreviewParameter(SiteLoadingPreviewParameterProvider::class) isSiteLoading: Boolean, +) { + FirefoxTheme(theme = Theme.Private) { + MenuNavigation( + isSiteLoading = isSiteLoading, + isExtensionsExpanded = true, + isMoreMenuExpanded = false, + onBackButtonClick = {}, + onForwardButtonClick = {}, + onRefreshButtonClick = {}, + onStopButtonClick = {}, + onShareButtonClick = {}, + ) } }