commit 38d201b25385de875ef14751ab6dbadbfde08147
parent 16a79f4069c47f6f7f91d399c59a67dd8e236876
Author: Gabriel Luong <gabriel.luong@gmail.com>
Date: Tue, 18 Nov 2025 21:46:24 +0000
Bug 2000090 - Part 11: Migrate LoginsTools to use M3 color tokens r=android-reviewers,007
Differential Revision: https://phabricator.services.mozilla.com/D272585
Diffstat:
1 file changed, 67 insertions(+), 50 deletions(-)
diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/debugsettings/logins/LoginsTools.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/debugsettings/logins/LoginsTools.kt
@@ -4,8 +4,6 @@
package org.mozilla.fenix.debugsettings.logins
-import androidx.compose.foundation.background
-import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth
@@ -13,6 +11,8 @@ import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
+import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
@@ -24,6 +24,7 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewLightDark
import androidx.compose.ui.unit.dp
import kotlinx.coroutines.launch
@@ -41,7 +42,9 @@ import org.mozilla.fenix.R
import org.mozilla.fenix.compose.list.TextListItem
import org.mozilla.fenix.debugsettings.ui.DebugDrawer
import org.mozilla.fenix.theme.FirefoxTheme
+import org.mozilla.fenix.theme.Theme
import java.util.UUID
+import mozilla.components.ui.icons.R as iconsR
/**
* Logins UI for [DebugDrawer] that displays existing logins for the current domain and allows
@@ -69,33 +72,35 @@ fun LoginsTools(
}
}
- LoginsContent(
- origin = origin,
- existingLogins = existingLogins,
- onAddFakeLogin = {
- origin?.let {
- scope.launch {
- existingLogins += loginsStorage.add(
- LoginEntry(
- username = "fake_username${existingLogins.size + 1}",
- password = "fake_password${existingLogins.size + 1}",
- origin = "https://$origin",
- formActionOrigin = "https://$origin",
- ),
- )
+ Surface {
+ LoginsContent(
+ origin = origin,
+ existingLogins = existingLogins,
+ onAddFakeLogin = {
+ origin?.let {
+ scope.launch {
+ existingLogins += loginsStorage.add(
+ LoginEntry(
+ username = "fake_username${existingLogins.size + 1}",
+ password = "fake_password${existingLogins.size + 1}",
+ origin = "https://$origin",
+ formActionOrigin = "https://$origin",
+ ),
+ )
+ }
}
- }
- },
- onDeleteLogin = { entry ->
- scope.launch {
- loginsStorage.delete(entry.guid).also { isSuccess ->
- if (isSuccess) {
- existingLogins -= entry
+ },
+ onDeleteLogin = { entry ->
+ scope.launch {
+ loginsStorage.delete(entry.guid).also { isSuccess ->
+ if (isSuccess) {
+ existingLogins -= entry
+ }
}
}
- }
- },
- )
+ },
+ )
+ }
}
@Composable
@@ -108,16 +113,15 @@ private fun LoginsContent(
Column(modifier = Modifier.padding(16.dp)) {
Text(
text = stringResource(R.string.debug_drawer_logins_title),
- color = FirefoxTheme.colors.textPrimary,
style = FirefoxTheme.typography.headline5,
)
Text(
- color = FirefoxTheme.colors.textSecondary,
text = stringResource(
R.string.debug_drawer_logins_current_domain_label,
origin ?: "",
),
+ color = MaterialTheme.colorScheme.onSurfaceVariant,
)
Spacer(modifier = Modifier.height(16.dp))
@@ -133,7 +137,7 @@ private fun LoginsContent(
TextListItem(
label = login.username,
onIconClick = { onDeleteLogin(login) },
- iconPainter = painterResource(R.drawable.ic_delete),
+ iconPainter = painterResource(iconsR.drawable.mozac_ic_delete_24),
iconDescription = stringResource(
R.string.debug_drawer_logins_delete_login_button_content_description,
login.username,
@@ -144,27 +148,6 @@ private fun LoginsContent(
}
}
-@Composable
-@PreviewLightDark
-private fun LoginsScreenPreview() {
- FirefoxTheme {
- Box(
- modifier = Modifier.background(color = FirefoxTheme.colors.layer1),
- ) {
- val selectedTab = createTab("https://example.com")
- LoginsTools(
- browserStore = BrowserStore(
- BrowserState(
- selectedTabId = selectedTab.id,
- tabs = listOf(selectedTab),
- ),
- ),
- loginsStorage = FakeLoginsStorage(),
- )
- }
- }
-}
-
internal class FakeLoginsStorage : LoginsStorage {
private val loginsByGuid = mutableMapOf<String, LoginEntry>()
override suspend fun wipeLocal() = Unit
@@ -201,3 +184,37 @@ internal class FakeLoginsStorage : LoginsStorage {
passwordField = passwordField,
)
}
+
+@Composable
+@PreviewLightDark
+private fun LoginsScreenPreview() {
+ FirefoxTheme {
+ val selectedTab = createTab("https://example.com")
+ LoginsTools(
+ browserStore = BrowserStore(
+ BrowserState(
+ selectedTabId = selectedTab.id,
+ tabs = listOf(selectedTab),
+ ),
+ ),
+ loginsStorage = FakeLoginsStorage(),
+ )
+ }
+}
+
+@Composable
+@Preview
+private fun LoginsScreenPrivatePreview() {
+ FirefoxTheme(theme = Theme.Private) {
+ val selectedTab = createTab("https://example.com")
+ LoginsTools(
+ browserStore = BrowserStore(
+ BrowserState(
+ selectedTabId = selectedTab.id,
+ tabs = listOf(selectedTab),
+ ),
+ ),
+ loginsStorage = FakeLoginsStorage(),
+ )
+ }
+}