tor-browser

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

commit c6b6613708aa6e9d458334380bf11f7617395645
parent 3cd3ce238ba01aa2ba117d9edd90c2d246b45f29
Author: Gabriel Luong <gabriel.luong@gmail.com>
Date:   Thu, 20 Nov 2025 08:32:23 +0000

Bug 1998092 - Part 5: Migrate AddExceptionScreen to M3 Acorn specs r=android-reviewers,007

- No proper Figma for DNS over HTTPs.
- Copied spacing from the Exception Settings screens https://www.figma.com/design/ctk1Pw1TBxUwVgTTOvjHb4/2025-Android-Fundamentals?node-id=989-27404&m=dev

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

Diffstat:
Mmobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/doh/addexception/AddExceptionScreen.kt | 86+++++++++++++++++++++++++++++++++++++++++++++++++------------------------------
1 file changed, 54 insertions(+), 32 deletions(-)

diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/doh/addexception/AddExceptionScreen.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/doh/addexception/AddExceptionScreen.kt @@ -4,11 +4,13 @@ package org.mozilla.fenix.settings.doh.addexception -import androidx.compose.foundation.background import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Surface import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -16,6 +18,7 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource +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.FilledButton @@ -24,6 +27,7 @@ import org.mozilla.fenix.R import org.mozilla.fenix.settings.doh.DohSettingsState import org.mozilla.fenix.settings.doh.ProtectionLevel import org.mozilla.fenix.theme.FirefoxTheme +import org.mozilla.fenix.theme.Theme /** * Composable function that displays the exceptions list screen of DoH settings. @@ -37,39 +41,35 @@ internal fun AddExceptionScreen( onSaveClicked: (String) -> Unit = {}, ) { var urlInput by remember { mutableStateOf("") } - Column( - modifier = Modifier - .fillMaxSize() - .background(FirefoxTheme.colors.layer1), - ) { - TextField( - value = urlInput, - onValueChange = { - urlInput = it - }, - placeholder = stringResource(R.string.preference_doh_exceptions_add_placeholder), - errorText = stringResource(R.string.preference_doh_exceptions_add_error), - label = stringResource(R.string.preference_doh_exceptions_add_site), - isError = !state.isUserExceptionValid, - singleLine = true, - modifier = Modifier - .fillMaxWidth() - .padding( - vertical = 12.dp, - horizontal = 16.dp, - ), - ) - FilledButton( - text = stringResource(R.string.preference_doh_exceptions_add_save), + Surface { + Column( modifier = Modifier - .fillMaxWidth() - .padding( - vertical = 12.dp, - horizontal = 16.dp, - ), - onClick = { onSaveClicked(urlInput) }, - ) + .fillMaxSize() + .padding(horizontal = 16.dp), + ) { + Spacer(modifier = Modifier.height(8.dp)) + + TextField( + value = urlInput, + onValueChange = { + urlInput = it + }, + placeholder = stringResource(R.string.preference_doh_exceptions_add_placeholder), + errorText = stringResource(R.string.preference_doh_exceptions_add_error), + label = stringResource(R.string.preference_doh_exceptions_add_site), + isError = !state.isUserExceptionValid, + singleLine = true, + ) + + Spacer(modifier = Modifier.height(24.dp)) + + FilledButton( + text = stringResource(R.string.preference_doh_exceptions_add_save), + modifier = Modifier.fillMaxWidth(), + onClick = { onSaveClicked(urlInput) }, + ) + } } } @@ -94,3 +94,25 @@ private fun AddExceptionScreenPreview() { ) } } + +@Composable +@Preview +private fun AddExceptionScreenPrivatePreview() { + FirefoxTheme(theme = Theme.Private) { + AddExceptionScreen( + state = DohSettingsState( + allProtectionLevels = listOf( + ProtectionLevel.Default, + ProtectionLevel.Increased, + ProtectionLevel.Max, + ProtectionLevel.Off, + ), + selectedProtectionLevel = ProtectionLevel.Off, + providers = emptyList(), + selectedProvider = null, + exceptionsList = emptyList(), + isUserExceptionValid = false, + ), + ) + } +}