tor-browser

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

commit 4c3d4a1337d9633a495f2a16e558807ecf0568b9
parent 4cabe2b4eae7112c866734861117136fe7ca2742
Author: John Oberhauser <j.git-global@obez.io>
Date:   Fri,  9 Jan 2026 19:33:49 +0000

Bug 2009058 - Part 4: Refactoring compose previews to use @PreviewParameter for private mode themed previews r=android-reviewers,007

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

Diffstat:
Mmobile/android/fenix/app/src/main/java/org/mozilla/fenix/debugsettings/ui/DebugDrawer.kt | 44+++++++-------------------------------------
Mmobile/android/fenix/app/src/main/java/org/mozilla/fenix/debugsettings/ui/DebugDrawerHome.kt | 42+++++++-----------------------------------
Mmobile/android/fenix/app/src/main/java/org/mozilla/fenix/downloads/listscreen/DeleteDownloadFileDialog.kt | 24++++++++----------------
Mmobile/android/fenix/app/src/main/java/org/mozilla/fenix/downloads/listscreen/ui/DownloadSearchField.kt | 26++++++--------------------
Mmobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/toolbar/BrowserSimpleToolbar.kt | 41+++++++++++++++--------------------------
Mmobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/topsites/TopSites.kt | 38++++++++------------------------------
Mmobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/ui/HomepageHeader.kt | 30+++++++-----------------------
Mmobile/android/fenix/app/src/main/java/org/mozilla/fenix/iconpicker/ui/AppIconPreference.kt | 21++++++++-------------
Mmobile/android/fenix/app/src/main/java/org/mozilla/fenix/iconpicker/ui/AppIconSelection.kt | 78+++++++++++++++++++++++-------------------------------------------------------
Mmobile/android/fenix/app/src/main/java/org/mozilla/fenix/microsurvey/ui/MicrosurveyBottomSheet.kt | 34++++++++--------------------------
Mmobile/android/fenix/app/src/main/java/org/mozilla/fenix/microsurvey/ui/MicrosurveyCompleted.kt | 21++++++++-------------
Mmobile/android/fenix/app/src/main/java/org/mozilla/fenix/microsurvey/ui/MicrosurveyContent.kt | 32++++++++------------------------
Mmobile/android/fenix/app/src/main/java/org/mozilla/fenix/microsurvey/ui/MicrosurveyRequestPrompt.kt | 32++++++++------------------------
13 files changed, 121 insertions(+), 342 deletions(-)

diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/debugsettings/ui/DebugDrawer.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/debugsettings/ui/DebugDrawer.kt @@ -22,7 +22,7 @@ import androidx.compose.ui.draw.shadow 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.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost @@ -33,6 +33,7 @@ import org.mozilla.fenix.R import org.mozilla.fenix.debugsettings.navigation.DebugDrawerDestination import org.mozilla.fenix.theme.FirefoxTheme import org.mozilla.fenix.theme.Theme +import org.mozilla.fenix.theme.ThemeProvider import mozilla.components.ui.icons.R as iconsR /** @@ -111,42 +112,11 @@ fun DebugDrawer( } } -@Composable -@PreviewLightDark -private fun DebugDrawerPreview() { - val navController = rememberNavController() - val destinations = remember { - List(size = 15) { index -> - DebugDrawerDestination( - route = "screen_$index", - title = R.string.debug_drawer_title, - onClick = { - navController.navigate(route = "screen_$index") - }, - content = { - Text( - text = "Tool $index", - style = FirefoxTheme.typography.headline6, - ) - }, - ) - } - } - - FirefoxTheme { - DebugDrawer( - navController = navController, - destinations = destinations, - onBackButtonClick = { - navController.popBackStack() - }, - ) - } -} - -@Composable @Preview -private fun DebugDrawerPrivatePreview() { +@Composable +private fun DebugDrawerPreview( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { val navController = rememberNavController() val destinations = remember { List(size = 15) { index -> @@ -166,7 +136,7 @@ private fun DebugDrawerPrivatePreview() { } } - FirefoxTheme(theme = Theme.Private) { + FirefoxTheme(theme) { DebugDrawer( navController = navController, destinations = destinations, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/debugsettings/ui/DebugDrawerHome.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/debugsettings/ui/DebugDrawerHome.kt @@ -27,7 +27,7 @@ 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.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import kotlinx.coroutines.launch import mozilla.components.compose.base.snackbar.Snackbar @@ -40,6 +40,7 @@ import org.mozilla.fenix.compose.list.TextListItem import org.mozilla.fenix.debugsettings.navigation.DebugDrawerDestination import org.mozilla.fenix.theme.FirefoxTheme import org.mozilla.fenix.theme.Theme +import org.mozilla.fenix.theme.ThemeProvider /** * The navigation route for [DebugDrawerHome]. @@ -111,13 +112,15 @@ fun DebugDrawerHome( } } +@Preview @Composable -@PreviewLightDark -private fun DebugDrawerHomePreview() { +private fun DebugDrawerHomePreview( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { val scope = rememberCoroutineScope() val snackbarState = remember { SnackbarHostState() } - FirefoxTheme { + FirefoxTheme(theme) { Box { DebugDrawerHome( destinations = List(size = 30) { @@ -143,34 +146,3 @@ private fun DebugDrawerHomePreview() { } } } - -@Composable -@Preview -private fun DebugDrawerHomePrivatePreview() { - val scope = rememberCoroutineScope() - val snackbarState = remember { SnackbarHostState() } - - FirefoxTheme(theme = Theme.Private) { - Box { - DebugDrawerHome( - destinations = List(size = 30) { - DebugDrawerDestination( - route = "screen_$it", - title = R.string.debug_drawer_title, - onClick = { - scope.launch { - snackbarState.displaySnackbar(message = "item $it clicked") - } - }, - content = {}, - ) - }, - ) - - SnackbarHost( - hostState = snackbarState, - modifier = Modifier.align(Alignment.BottomCenter), - ) - } - } -} diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/downloads/listscreen/DeleteDownloadFileDialog.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/downloads/listscreen/DeleteDownloadFileDialog.kt @@ -8,12 +8,13 @@ import androidx.compose.material3.AlertDialog import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource -import androidx.compose.ui.tooling.preview.Preview -import mozilla.components.compose.base.annotation.FlexibleWindowLightDarkPreview +import androidx.compose.ui.tooling.preview.PreviewParameter +import mozilla.components.compose.base.annotation.FlexibleWindowPreview import mozilla.components.compose.base.button.TextButton import org.mozilla.fenix.R import org.mozilla.fenix.theme.FirefoxTheme import org.mozilla.fenix.theme.Theme +import org.mozilla.fenix.theme.ThemeProvider /** * This dialog is used to prompt the user to confirm if they want to delete @@ -52,21 +53,12 @@ fun DeleteDownloadFileDialog( ) } +@FlexibleWindowPreview @Composable -@FlexibleWindowLightDarkPreview -private fun DeleteDownloadFileDialogPreview() { - FirefoxTheme { - DeleteDownloadFileDialog( - onConfirmDelete = {}, - onCancel = {}, - ) - } -} - -@Composable -@Preview -private fun DeleteDownloadFileDialogPrivatePreview() { - FirefoxTheme(theme = Theme.Private) { +private fun DeleteDownloadFileDialogPreview( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { + FirefoxTheme(theme) { DeleteDownloadFileDialog( onConfirmDelete = {}, onCancel = {}, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/downloads/listscreen/ui/DownloadSearchField.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/downloads/listscreen/ui/DownloadSearchField.kt @@ -34,11 +34,12 @@ import androidx.compose.ui.graphics.SolidColor 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.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import org.mozilla.fenix.R import org.mozilla.fenix.theme.FirefoxTheme import org.mozilla.fenix.theme.Theme +import org.mozilla.fenix.theme.ThemeProvider import mozilla.components.ui.icons.R as iconsR /** @@ -132,27 +133,12 @@ private fun PlaceholderText() { ) } -@PreviewLightDark -@Composable -private fun DownloadSearchFieldPreview() { - FirefoxTheme { - Surface { - DownloadSearchField( - initialText = "", - onValueChange = {}, - onSearchDismissRequest = {}, - modifier = Modifier - .height(56.dp) - .fillMaxWidth(), - ) - } - } -} - @Preview @Composable -private fun DownloadSearchFieldPrivatePreview() { - FirefoxTheme(theme = Theme.Private) { +private fun DownloadSearchFieldPreview( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { + FirefoxTheme(theme) { Surface { DownloadSearchField( initialText = "", diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/toolbar/BrowserSimpleToolbar.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/toolbar/BrowserSimpleToolbar.kt @@ -19,7 +19,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.tooling.preview.PreviewLightDark +import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import mozilla.components.compose.browser.toolbar.ActionContainer import mozilla.components.compose.browser.toolbar.concept.Action @@ -38,6 +38,7 @@ import mozilla.components.lib.state.ext.observeAsComposableState import org.mozilla.fenix.components.AppStore import org.mozilla.fenix.theme.FirefoxTheme import org.mozilla.fenix.theme.Theme +import org.mozilla.fenix.theme.ThemeProvider import mozilla.components.ui.icons.R as iconsR /** @@ -162,38 +163,26 @@ private fun SimpleBrowserToolbarPreview(actions: List<Action>, theme: Theme = Th } } -@Composable -@PreviewLightDark -private fun BrowserSimpleToolbarPreview_Edit() { - SimpleBrowserToolbarPreview(editEndActions()) -} - -@Composable @Preview -private fun BrowserSimpleToolbarPrivatePreview_Edit() { - SimpleBrowserToolbarPreview(editEndActions(), theme = Theme.Private) -} - @Composable -@PreviewLightDark -private fun BrowserSimpleToolbarPreview_Initial() { - SimpleBrowserToolbarPreview(initialActions()) +private fun BrowserSimpleToolbarPreview_Edit( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { + SimpleBrowserToolbarPreview(editEndActions(), theme = theme) } -@Composable @Preview -private fun BrowserSimpleToolbarPrivatePreview_Initial() { - SimpleBrowserToolbarPreview(initialActions(), theme = Theme.Private) -} - @Composable -@PreviewLightDark -private fun BrowserSimpleToolbarPreview_Search() { - SimpleBrowserToolbarPreview(searchEndActions()) +private fun BrowserSimpleToolbarPreview_Initial( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { + SimpleBrowserToolbarPreview(initialActions(), theme = theme) } -@Composable @Preview -private fun BrowserSimpleToolbarPrivatePreview_Search() { - SimpleBrowserToolbarPreview(searchEndActions(), theme = Theme.Private) +@Composable +private fun BrowserSimpleToolbarPreview_Search( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { + SimpleBrowserToolbarPreview(searchEndActions(), theme = theme) } diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/topsites/TopSites.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/topsites/TopSites.kt @@ -48,10 +48,10 @@ import androidx.compose.ui.semantics.testTagsAsResourceId import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow -import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import mozilla.components.compose.base.annotation.FlexibleWindowLightDarkPreview +import mozilla.components.compose.base.annotation.FlexibleWindowPreview import mozilla.components.compose.base.modifier.rightClickable import mozilla.components.feature.top.sites.TopSite import mozilla.components.ui.colors.PhotonColors @@ -64,6 +64,7 @@ import org.mozilla.fenix.home.topsites.TopSitesTestTag.TOP_SITE_CARD_FAVICON import org.mozilla.fenix.home.topsites.interactor.TopSiteInteractor import org.mozilla.fenix.theme.FirefoxTheme import org.mozilla.fenix.theme.Theme +import org.mozilla.fenix.theme.ThemeProvider import org.mozilla.fenix.wallpapers.WallpaperState import mozilla.components.ui.icons.R as iconsR @@ -503,35 +504,12 @@ internal fun getMenuItems( return result } +@FlexibleWindowPreview @Composable -@FlexibleWindowLightDarkPreview -private fun TopSitesPreview() { - FirefoxTheme { - Surface { - Box( - modifier = Modifier.padding(all = FirefoxTheme.layout.space.static200), - ) { - TopSites( - topSites = FakeHomepagePreview.topSites(), - onTopSiteClick = {}, - onTopSiteLongClick = {}, - onTopSiteImpression = { _, _ -> }, - onOpenInPrivateTabClicked = {}, - onEditTopSiteClicked = {}, - onRemoveTopSiteClicked = {}, - onSettingsClicked = {}, - onSponsorPrivacyClicked = {}, - onTopSitesItemBound = {}, - ) - } - } - } -} - -@Composable -@Preview -private fun TopSitesPrivatePreview() { - FirefoxTheme(theme = Theme.Private) { +private fun TopSitesPreview( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { + FirefoxTheme(theme) { Surface { Box( modifier = Modifier.padding(all = FirefoxTheme.layout.space.static200), diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/ui/HomepageHeader.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/home/ui/HomepageHeader.kt @@ -31,7 +31,7 @@ import androidx.compose.ui.semantics.semantics import androidx.compose.ui.semantics.testTag import androidx.compose.ui.semantics.testTagsAsResourceId import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.tooling.preview.PreviewLightDark +import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import org.mozilla.fenix.R import org.mozilla.fenix.browser.browsingmode.BrowsingMode @@ -40,6 +40,7 @@ import org.mozilla.fenix.home.ui.HomepageTestTag.HOMEPAGE_WORDMARK_TEXT import org.mozilla.fenix.home.ui.HomepageTestTag.PRIVATE_BROWSING_HOMEPAGE_BUTTON import org.mozilla.fenix.theme.FirefoxTheme import org.mozilla.fenix.theme.Theme +import org.mozilla.fenix.theme.ThemeProvider import mozilla.components.ui.icons.R as iconsR /** @@ -142,10 +143,12 @@ internal fun getAttr(resId: Int): Int { return newResId } +@Preview @Composable -@PreviewLightDark -private fun HomepageHeaderPreview() { - FirefoxTheme { +private fun HomepageHeaderPreview( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { + FirefoxTheme(theme) { Surface { HomepageHeader( wordmarkTextColor = null, @@ -160,22 +163,3 @@ private fun HomepageHeaderPreview() { } } } - -@Composable -@Preview -private fun PrivateHomepageHeaderPreview() { - FirefoxTheme(theme = Theme.Private) { - Surface { - HomepageHeader( - wordmarkTextColor = null, - privateBrowsingButtonColor = colorResource( - getAttr( - iconsR.attr.mozac_ic_private_mode_circle_fill_icon_color, - ), - ), - browsingMode = BrowsingMode.Private, - browsingModeChanged = {}, - ) - } - } -} diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/iconpicker/ui/AppIconPreference.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/iconpicker/ui/AppIconPreference.kt @@ -21,12 +21,12 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.ComposeView import androidx.compose.ui.res.stringResource -import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import androidx.navigation.findNavController import androidx.preference.Preference import androidx.preference.PreferenceViewHolder -import mozilla.components.compose.base.annotation.FlexibleWindowLightDarkPreview +import mozilla.components.compose.base.annotation.FlexibleWindowPreview import org.mozilla.fenix.GleanMetrics.CustomizationSettings import org.mozilla.fenix.R import org.mozilla.fenix.iconpicker.AppIcon @@ -36,6 +36,7 @@ import org.mozilla.fenix.iconpicker.DefaultPackageManagerWrapper import org.mozilla.fenix.settings.CustomizationFragmentDirections import org.mozilla.fenix.theme.FirefoxTheme import org.mozilla.fenix.theme.Theme +import org.mozilla.fenix.theme.ThemeProvider private val IconSize = 40.dp @@ -118,18 +119,12 @@ private fun SelectAppIcon( } } -@FlexibleWindowLightDarkPreview +@FlexibleWindowPreview @Composable -private fun SelectAppIconPreview() { - FirefoxTheme { - SelectAppIcon(AppIcon.AppDefault) {} - } -} - -@Preview -@Composable -private fun SelectAppIconPrivatePreview() { - FirefoxTheme(theme = Theme.Private) { +private fun SelectAppIconPreview( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { + FirefoxTheme(theme) { SelectAppIcon(AppIcon.AppDefault) {} } } diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/iconpicker/ui/AppIconSelection.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/iconpicker/ui/AppIconSelection.kt @@ -48,11 +48,12 @@ import androidx.compose.ui.semantics.Role import androidx.compose.ui.semantics.clearAndSetSemantics import androidx.compose.ui.semantics.heading import androidx.compose.ui.semantics.semantics -import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import kotlinx.coroutines.launch import mozilla.components.compose.base.annotation.FlexibleWindowLightDarkPreview +import mozilla.components.compose.base.annotation.FlexibleWindowPreview import mozilla.components.compose.base.button.TextButton import mozilla.components.compose.base.snackbar.Snackbar import mozilla.components.compose.base.snackbar.displaySnackbar @@ -72,6 +73,7 @@ import org.mozilla.fenix.iconpicker.SystemAction import org.mozilla.fenix.iconpicker.UserAction import org.mozilla.fenix.theme.FirefoxTheme import org.mozilla.fenix.theme.Theme +import org.mozilla.fenix.theme.ThemeProvider private val ListItemHeight = 56.dp private val AppIconSize = 40.dp @@ -387,55 +389,32 @@ private fun AppIconSelectionPreview() { } } -@FlexibleWindowLightDarkPreview +@FlexibleWindowPreview @Composable -private fun AppIconOptionPreview() { - FirefoxTheme { - AppIconOption(AppIcon.AppDefault, false) {} - } -} - -@Preview -@Composable -private fun AppIconOptionPrivatePreview() { - FirefoxTheme(theme = Theme.Private) { +private fun AppIconOptionPreview( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { + FirefoxTheme(theme) { AppIconOption(AppIcon.AppDefault, false) {} } } -@FlexibleWindowLightDarkPreview +@FlexibleWindowPreview @Composable -private fun AppIconOptionWithSubtitlePreview() { - FirefoxTheme { - AppIconOption(AppIcon.AppMomo, false) {} - } -} - -@Preview -@Composable -private fun AppIconOptionWithSubtitlePrivatePreview() { - FirefoxTheme(theme = Theme.Private) { +private fun AppIconOptionWithSubtitlePreview( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { + FirefoxTheme(theme) { AppIconOption(AppIcon.AppMomo, false) {} } } -@FlexibleWindowLightDarkPreview -@Composable -private fun RestartWarningDialogPreview() { - FirefoxTheme { - RestartWarningDialog( - shortcutRemovalWarning = { false }, - onConfirmClicked = {}, - onDismissClicked = {}, - onDismissed = {}, - ) - } -} - -@Preview +@FlexibleWindowPreview @Composable -private fun RestartWarningDialogPrivatePreview() { - FirefoxTheme(theme = Theme.Private) { +private fun RestartWarningDialogPreview( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { + FirefoxTheme(theme) { RestartWarningDialog( shortcutRemovalWarning = { false }, onConfirmClicked = {}, @@ -445,23 +424,12 @@ private fun RestartWarningDialogPrivatePreview() { } } -@FlexibleWindowLightDarkPreview +@FlexibleWindowPreview @Composable -private fun ShortcutRemovalWarningDialogPreview() { - FirefoxTheme { - RestartWarningDialog( - shortcutRemovalWarning = { true }, - onConfirmClicked = {}, - onDismissClicked = {}, - onDismissed = {}, - ) - } -} - -@Preview -@Composable -private fun ShortcutRemovalWarningDialogPrivatePreview() { - FirefoxTheme(theme = Theme.Private) { +private fun ShortcutRemovalWarningDialogPreview( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { + FirefoxTheme(theme) { RestartWarningDialog( shortcutRemovalWarning = { true }, onConfirmClicked = {}, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/microsurvey/ui/MicrosurveyBottomSheet.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/microsurvey/ui/MicrosurveyBottomSheet.kt @@ -29,12 +29,14 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.semantics.semantics import androidx.compose.ui.semantics.traversalIndex import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp -import mozilla.components.compose.base.annotation.FlexibleWindowLightDarkPreview +import mozilla.components.compose.base.annotation.FlexibleWindowPreview import org.mozilla.fenix.R import org.mozilla.fenix.compose.BottomSheetHandle import org.mozilla.fenix.theme.FirefoxTheme import org.mozilla.fenix.theme.Theme +import org.mozilla.fenix.theme.ThemeProvider import mozilla.components.ui.icons.R as iconsR private const val BOTTOM_SHEET_HANDLE_WIDTH_PERCENT = 0.1f @@ -127,36 +129,16 @@ fun MicrosurveyBottomSheet( } } -@FlexibleWindowLightDarkPreview +@FlexibleWindowPreview @Preview( name = "Large Font", fontScale = 2.0f, ) @Composable -private fun MicrosurveyBottomSheetPreview() { - FirefoxTheme { - MicrosurveyBottomSheet( - question = "How satisfied are you with printing in Firefox?", - icon = iconsR.drawable.mozac_ic_print_24, - onPrivacyPolicyLinkClick = {}, - onCloseButtonClicked = {}, - onSubmitButtonClicked = {}, - answers = listOf( - stringResource(id = R.string.likert_scale_option_1), - stringResource(id = R.string.likert_scale_option_2), - stringResource(id = R.string.likert_scale_option_3), - stringResource(id = R.string.likert_scale_option_4), - stringResource(id = R.string.likert_scale_option_5), - stringResource(id = R.string.likert_scale_option_6), - ), - ) - } -} - -@Preview -@Composable -private fun MicrosurveyBottomSheetPrivatePreview() { - FirefoxTheme(theme = Theme.Private) { +private fun MicrosurveyBottomSheetPreview( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { + FirefoxTheme(theme) { MicrosurveyBottomSheet( question = "How satisfied are you with printing in Firefox?", icon = iconsR.drawable.mozac_ic_print_24, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/microsurvey/ui/MicrosurveyCompleted.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/microsurvey/ui/MicrosurveyCompleted.kt @@ -25,12 +25,13 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.ContentScale 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.PreviewParameter import androidx.compose.ui.unit.dp -import mozilla.components.compose.base.annotation.FlexibleWindowLightDarkPreview +import mozilla.components.compose.base.annotation.FlexibleWindowPreview import org.mozilla.fenix.R import org.mozilla.fenix.theme.FirefoxTheme import org.mozilla.fenix.theme.Theme +import org.mozilla.fenix.theme.ThemeProvider private val shape = RoundedCornerShape(8.dp) @@ -79,18 +80,12 @@ fun MicrosurveyCompleted( } } -@FlexibleWindowLightDarkPreview +@FlexibleWindowPreview @Composable -private fun MicrosurveyCompletedPreview() { - FirefoxTheme { - MicrosurveyCompleted() - } -} - -@Preview -@Composable -private fun MicrosurveyCompletedPrivatePreview() { - FirefoxTheme(theme = Theme.Private) { +private fun MicrosurveyCompletedPreview( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { + FirefoxTheme(theme) { MicrosurveyCompleted() } } diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/microsurvey/ui/MicrosurveyContent.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/microsurvey/ui/MicrosurveyContent.kt @@ -31,13 +31,14 @@ import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.platform.rememberNestedScrollInteropConnection 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.PreviewParameter import androidx.compose.ui.unit.dp -import mozilla.components.compose.base.annotation.FlexibleWindowLightDarkPreview +import mozilla.components.compose.base.annotation.FlexibleWindowPreview import org.mozilla.fenix.R import org.mozilla.fenix.compose.list.RadioButtonListItem import org.mozilla.fenix.theme.FirefoxTheme import org.mozilla.fenix.theme.Theme +import org.mozilla.fenix.theme.ThemeProvider import mozilla.components.ui.icons.R as iconsR private val shape = RoundedCornerShape(8.dp) @@ -115,29 +116,12 @@ private fun Header(icon: Int, question: String) { } } -@FlexibleWindowLightDarkPreview +@FlexibleWindowPreview @Composable -private fun MicrosurveyContentPreview() { - FirefoxTheme { - MicrosurveyContent( - question = "How satisfied are you with printing in Firefox?", - icon = iconsR.drawable.mozac_ic_print_24, - answers = listOf( - stringResource(id = R.string.likert_scale_option_1), - stringResource(id = R.string.likert_scale_option_2), - stringResource(id = R.string.likert_scale_option_3), - stringResource(id = R.string.likert_scale_option_4), - stringResource(id = R.string.likert_scale_option_5), - ), - onSelectionChange = {}, - ) - } -} - -@Preview -@Composable -private fun MicrosurveyContentPrivatereview() { - FirefoxTheme(theme = Theme.Private) { +private fun MicrosurveyContentPreview( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { + FirefoxTheme(theme) { MicrosurveyContent( question = "How satisfied are you with printing in Firefox?", icon = iconsR.drawable.mozac_ic_print_24, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/microsurvey/ui/MicrosurveyRequestPrompt.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/microsurvey/ui/MicrosurveyRequestPrompt.kt @@ -28,9 +28,9 @@ import androidx.compose.ui.Alignment 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.PreviewParameter import androidx.compose.ui.unit.dp -import mozilla.components.compose.base.annotation.FlexibleWindowLightDarkPreview +import mozilla.components.compose.base.annotation.FlexibleWindowPreview import mozilla.components.compose.base.button.FilledButton import mozilla.components.compose.base.button.IconButton import mozilla.components.support.utils.KeyboardState @@ -40,6 +40,7 @@ import org.mozilla.fenix.R import org.mozilla.fenix.microsurvey.ui.ext.MicrosurveyUIData import org.mozilla.fenix.theme.FirefoxTheme import org.mozilla.fenix.theme.Theme +import org.mozilla.fenix.theme.ThemeProvider import mozilla.components.ui.icons.R as iconsR private const val TABLET_WIDTH_FRACTION = 0.5f @@ -135,29 +136,12 @@ private fun Header( } } -@FlexibleWindowLightDarkPreview +@FlexibleWindowPreview @Composable -private fun MicrosurveyRequestPromptPreview() { - FirefoxTheme { - MicrosurveyRequestPrompt( - microsurvey = MicrosurveyUIData( - id = "", - promptTitle = "Help make printing in Firefox better. It only takes a sec.", - icon = iconsR.drawable.mozac_ic_lightbulb_24, - question = "", - answers = emptyList(), - ), - activity = HomeActivity(), - onStartSurveyClicked = {}, - onCloseButtonClicked = {}, - ) - } -} - -@Preview -@Composable -private fun MicrosurveyRequestPromptPrivatePreview() { - FirefoxTheme(theme = Theme.Private) { +private fun MicrosurveyRequestPromptPreview( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { + FirefoxTheme(theme) { MicrosurveyRequestPrompt( microsurvey = MicrosurveyUIData( id = "",