tor-browser

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

commit e65b5657105b5041a5585aa6de72ecc54c266c95
parent d5efd77c04dcebf13650e9d9c80897a10613674b
Author: Gabriel Luong <gabriel.luong@gmail.com>
Date:   Fri, 21 Nov 2025 09:03:42 +0000

Bug 1998073 - Part 4: Migrate EditLoginScreen to use M3 Acorn color tokens r=android-reviewers,007

Edit Passwords: https://www.figma.com/design/ctk1Pw1TBxUwVgTTOvjHb4/2025-Android-Fundamentals?node-id=973-21032&m=dev
Top App Bar: https://www.figma.com/design/MjufE1X5fvkxZ0YneX4kRd/Android-Library--2025-?node-id=65138-3594&m=dev

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

Diffstat:
Mmobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/logins/ui/EditLoginScreen.kt | 106++++++++++++++++++++++++++++++++++++-------------------------------------------
1 file changed, 48 insertions(+), 58 deletions(-)

diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/logins/ui/EditLoginScreen.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/logins/ui/EditLoginScreen.kt @@ -4,8 +4,6 @@ package org.mozilla.fenix.settings.logins.ui -import androidx.compose.foundation.background -import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer @@ -16,10 +14,11 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold +import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar -import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment @@ -28,6 +27,7 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.PasswordVisualTransformation import androidx.compose.ui.text.input.VisualTransformation +import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import mozilla.components.compose.base.annotation.FlexibleWindowLightDarkPreview import mozilla.components.compose.base.button.IconButton @@ -37,6 +37,7 @@ import mozilla.components.compose.base.textfield.TextFieldStyle import mozilla.components.lib.state.ext.observeAsState import org.mozilla.fenix.R import org.mozilla.fenix.theme.FirefoxTheme +import org.mozilla.fenix.theme.Theme import mozilla.components.ui.icons.R as iconsR private val IconButtonHeight = 48.dp @@ -53,7 +54,6 @@ internal fun EditLoginScreen(store: LoginsStore) { loginItem = editState.login, ) }, - containerColor = FirefoxTheme.colors.layer1, ) { paddingValues -> Column( modifier = Modifier @@ -83,7 +83,6 @@ internal fun EditLoginTopBar(store: LoginsStore, loginItem: LoginItem) { val isLoginValid = validModifiedUser || validModifiedPassword TopAppBar( - colors = TopAppBarDefaults.topAppBarColors(containerColor = FirefoxTheme.colors.layer1), windowInsets = WindowInsets( top = 0.dp, bottom = 0.dp, @@ -91,14 +90,11 @@ internal fun EditLoginTopBar(store: LoginsStore, loginItem: LoginItem) { title = { Text( text = stringResource(R.string.edit_2), - color = FirefoxTheme.colors.textPrimary, - style = FirefoxTheme.typography.headline6, + style = FirefoxTheme.typography.headline5, ) }, navigationIcon = { IconButton( - modifier = Modifier - .padding(horizontal = FirefoxTheme.layout.space.static50), onClick = { store.dispatch(EditLoginBackClicked) }, contentDescription = stringResource( R.string.edit_login_navigate_back_button_content_description, @@ -107,35 +103,25 @@ internal fun EditLoginTopBar(store: LoginsStore, loginItem: LoginItem) { Icon( painter = painterResource(iconsR.drawable.mozac_ic_back_24), contentDescription = null, - tint = FirefoxTheme.colors.iconPrimary, ) } }, actions = { - Box { - IconButton( - modifier = Modifier - .padding(horizontal = FirefoxTheme.layout.space.static50), - onClick = { - store.dispatch( - EditLoginAction.SaveEditClicked(loginItem), - ) - }, - contentDescription = stringResource( - R.string.edit_login_button_content_description, - ), - enabled = isLoginValid, - ) { - Icon( - painter = painterResource(iconsR.drawable.mozac_ic_checkmark_24), - contentDescription = null, - tint = if (isLoginValid) { - FirefoxTheme.colors.textPrimary - } else { - FirefoxTheme.colors.textDisabled - }, + IconButton( + onClick = { + store.dispatch( + EditLoginAction.SaveEditClicked(loginItem), ) - } + }, + contentDescription = stringResource( + R.string.edit_login_button_content_description, + ), + enabled = isLoginValid, + ) { + Icon( + painter = painterResource(iconsR.drawable.mozac_ic_checkmark_24), + contentDescription = null, + ) } }, ) @@ -155,7 +141,7 @@ private fun EditLoginUrl(url: String) { Text( text = url, style = TextFieldStyle.default().placeholderStyle, - color = FirefoxTheme.colors.textDisabled, + color = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.38f), modifier = Modifier .padding( horizontal = FirefoxTheme.layout.space.static200, @@ -193,9 +179,6 @@ private fun EditLoginUsername(store: LoginsStore, user: String) { } } }, - colors = TextFieldColors.default( - placeholderColor = FirefoxTheme.colors.textPrimary, - ), ) } @@ -244,35 +227,42 @@ private fun EditLoginPassword(store: LoginsStore, pass: String) { } else { PasswordVisualTransformation() }, - colors = TextFieldColors.default( - placeholderColor = FirefoxTheme.colors.textPrimary, - ), ) } } -@Composable -@FlexibleWindowLightDarkPreview -private fun EditLoginScreenPreview() { - val store = LoginsStore( - initialState = LoginsState.default.copy( - loginsEditLoginState = LoginsEditLoginState( - login = LoginItem( - guid = "123", - url = "https://www.justanothersite123.com", - username = "username 123", - password = "password 123", - ), - newUsername = "username 456", - newPassword = "password 456", - isPasswordVisible = true, +private fun createStore() = LoginsStore( + initialState = LoginsState.default.copy( + loginsEditLoginState = LoginsEditLoginState( + login = LoginItem( + guid = "123", + url = "https://www.justanothersite123.com", + username = "username 123", + password = "password 123", ), + newUsername = "username 456", + newPassword = "password 456", + isPasswordVisible = true, ), - ) + ), +) +@Composable +@FlexibleWindowLightDarkPreview +private fun EditLoginScreenPreview() { FirefoxTheme { - Box(modifier = Modifier.background(color = FirefoxTheme.colors.layer1)) { - EditLoginScreen(store) + Surface { + EditLoginScreen(store = createStore()) + } + } +} + +@Composable +@Preview +private fun EditLoginScreenPrivatePreview() { + FirefoxTheme(theme = Theme.Private) { + Surface { + EditLoginScreen(store = createStore()) } } }