commit 16a79f4069c47f6f7f91d399c59a67dd8e236876
parent f78cf208866ec705a39ba2ae0c192bbb7589e200
Author: Gabriel Luong <gabriel.luong@gmail.com>
Date: Tue, 18 Nov 2025 21:46:24 +0000
Bug 2000090 - Part 10: Migrate RegionTools to use M3 color tokens r=android-reviewers,007
Differential Revision: https://phabricator.services.mozilla.com/D272584
Diffstat:
1 file changed, 103 insertions(+), 94 deletions(-)
diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/debugsettings/region/RegionTools.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/debugsettings/region/RegionTools.kt
@@ -5,8 +5,6 @@
package org.mozilla.fenix.debugsettings.region
import android.content.Context
-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
@@ -14,6 +12,7 @@ import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
+import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
@@ -22,6 +21,7 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
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 androidx.core.content.edit
@@ -36,6 +36,7 @@ import mozilla.components.lib.state.ext.observeAsState
import org.mozilla.fenix.Config
import org.mozilla.fenix.R
import org.mozilla.fenix.theme.FirefoxTheme
+import org.mozilla.fenix.theme.Theme
private const val DEFAULT_REGION = "XX"
private const val MAX_REGION_LENGTH = 2
@@ -59,106 +60,108 @@ fun RegionTools(
val homeRegion = viewModel.homeRegion
val currentRegion = viewModel.currentRegion
- Column(
- modifier = Modifier
- .padding(all = 16.dp)
- .verticalScroll(state = rememberScrollState()),
- ) {
- Text(
- text = stringResource(R.string.debug_drawer_regin_tools_description),
- color = FirefoxTheme.colors.textPrimary,
- style = FirefoxTheme.typography.headline8,
- )
+ Surface {
+ Column(
+ modifier = Modifier
+ .padding(all = 16.dp)
+ .verticalScroll(state = rememberScrollState()),
+ ) {
+ Text(
+ text = stringResource(R.string.debug_drawer_regin_tools_description),
+ style = FirefoxTheme.typography.headline8,
+ )
- Spacer(modifier = Modifier.height(16.dp))
+ Spacer(modifier = Modifier.height(16.dp))
- Text(
- text = stringResource(R.string.debug_drawer_home_region_label),
- color = FirefoxTheme.colors.textPrimary,
- style = FirefoxTheme.typography.caption,
- modifier = Modifier.padding(4.dp),
- )
+ Text(
+ text = stringResource(R.string.debug_drawer_home_region_label),
+ style = FirefoxTheme.typography.caption,
+ modifier = Modifier.padding(4.dp),
+ )
- Text(
- text = region.home,
- color = FirefoxTheme.colors.textPrimary,
- modifier = Modifier.padding(4.dp),
- style = FirefoxTheme.typography.body1,
- )
+ Text(
+ text = region.home,
+ modifier = Modifier.padding(4.dp),
+ style = FirefoxTheme.typography.body1,
+ )
- Text(
- text = stringResource(R.string.debug_drawer_current_region_label),
- color = FirefoxTheme.colors.textPrimary,
- style = FirefoxTheme.typography.caption,
- modifier = Modifier.padding(4.dp),
- )
+ Text(
+ text = stringResource(R.string.debug_drawer_current_region_label),
+ style = FirefoxTheme.typography.caption,
+ modifier = Modifier.padding(4.dp),
+ )
- Text(
- text = region.current,
- color = FirefoxTheme.colors.textPrimary,
- modifier = Modifier.padding(4.dp),
- style = FirefoxTheme.typography.body1,
- )
+ Text(
+ text = region.current,
+ modifier = Modifier.padding(4.dp),
+ style = FirefoxTheme.typography.body1,
+ )
- Spacer(modifier = Modifier.height(16.dp))
-
- TextField(
- value = viewModel.homeRegion,
- onValueChange = {
- it.validRegionInput(MAX_REGION_LENGTH)?.let { verifiedInput ->
- viewModel.homeRegion = verifiedInput
- }
- },
- placeholder = "",
- errorText = "",
- modifier = Modifier.fillMaxWidth().padding(4.dp),
- label = stringResource(R.string.debug_drawer_override_home_region_label),
- )
+ Spacer(modifier = Modifier.height(16.dp))
- TextField(
- value = viewModel.currentRegion,
- onValueChange = {
- it.validRegionInput(MAX_REGION_LENGTH)?.let { verifiedInput ->
- viewModel.currentRegion = verifiedInput
- }
- },
- placeholder = "",
- errorText = "",
- modifier = Modifier.fillMaxWidth().padding(4.dp),
- label = stringResource(R.string.debug_drawer_override_current_region_label),
- )
+ TextField(
+ value = viewModel.homeRegion,
+ onValueChange = {
+ it.validRegionInput(MAX_REGION_LENGTH)?.let { verifiedInput ->
+ viewModel.homeRegion = verifiedInput
+ }
+ },
+ placeholder = "",
+ errorText = "",
+ modifier = Modifier.fillMaxWidth().padding(4.dp),
+ label = stringResource(R.string.debug_drawer_override_home_region_label),
+ )
- Spacer(modifier = Modifier.height(16.dp))
-
- FilledButton(
- text = stringResource(R.string.debug_drawer_override_region),
- modifier = Modifier.fillMaxWidth(),
- onClick = {
- browserStore.dispatch(
- SearchAction.SetRegionAction(
- regionState = RegionState(
- home = homeRegion.ifBlank { DEFAULT_REGION },
- current = currentRegion.ifBlank { DEFAULT_REGION },
- ),
- distribution = null,
- ),
- )
- },
- )
+ TextField(
+ value = viewModel.currentRegion,
+ onValueChange = {
+ it.validRegionInput(MAX_REGION_LENGTH)?.let { verifiedInput ->
+ viewModel.currentRegion = verifiedInput
+ }
+ },
+ placeholder = "",
+ errorText = "",
+ modifier = Modifier.fillMaxWidth().padding(4.dp),
+ label = stringResource(R.string.debug_drawer_override_current_region_label),
+ )
- if (Config.channel.isNightlyOrDebug) {
- val preferences = LocalContext.current.getSharedPreferences(
- PREFERENCE_FILE,
- Context.MODE_PRIVATE,
- )
+ Spacer(modifier = Modifier.height(16.dp))
FilledButton(
- text = stringResource(R.string.debug_drawer_override_home_region_permanently),
+ text = stringResource(R.string.debug_drawer_override_region),
modifier = Modifier.fillMaxWidth(),
onClick = {
- preferences.edit { putString(PREFERENCE_KEY_HOME_REGION, homeRegion.ifBlank { DEFAULT_REGION }) }
+ browserStore.dispatch(
+ SearchAction.SetRegionAction(
+ regionState = RegionState(
+ home = homeRegion.ifBlank { DEFAULT_REGION },
+ current = currentRegion.ifBlank { DEFAULT_REGION },
+ ),
+ distribution = null,
+ ),
+ )
},
)
+
+ if (Config.channel.isNightlyOrDebug) {
+ val preferences = LocalContext.current.getSharedPreferences(
+ PREFERENCE_FILE,
+ Context.MODE_PRIVATE,
+ )
+
+ FilledButton(
+ text = stringResource(R.string.debug_drawer_override_home_region_permanently),
+ modifier = Modifier.fillMaxWidth(),
+ onClick = {
+ preferences.edit {
+ putString(
+ PREFERENCE_KEY_HOME_REGION,
+ homeRegion.ifBlank { DEFAULT_REGION },
+ )
+ }
+ },
+ )
+ }
}
}
}
@@ -183,12 +186,18 @@ class RegionToolsViewModel : ViewModel() {
@PreviewLightDark
private fun RegionScreenPreview() {
FirefoxTheme {
- Box(
- modifier = Modifier.background(color = FirefoxTheme.colors.layer1),
- ) {
- RegionTools(
- browserStore = BrowserStore(),
- )
- }
+ RegionTools(
+ browserStore = BrowserStore(),
+ )
+ }
+}
+
+@Composable
+@Preview
+private fun RegionScreenPrivatePreview() {
+ FirefoxTheme(theme = Theme.Private) {
+ RegionTools(
+ browserStore = BrowserStore(),
+ )
}
}