commit 9bf160e94bce630932e2f9a906c14eda8556da78 parent 9d14c5e45630dd4f4708f2b567adf790b47eeb5d Author: John Oberhauser <j.git-global@obez.io> Date: Fri, 9 Jan 2026 19:33:50 +0000 Bug 2009058 - Part 6: Refactoring compose previews to use @PreviewParameter for private mode themed previews r=android-reviewers,007 Differential Revision: https://phabricator.services.mozilla.com/D278391 Diffstat:
15 files changed, 135 insertions(+), 420 deletions(-)
diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/search/SearchEngineShortcuts.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/search/SearchEngineShortcuts.kt @@ -33,7 +33,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.asImageBitmap 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.DpOffset import androidx.compose.ui.unit.dp import androidx.core.graphics.createBitmap @@ -42,7 +42,7 @@ import mozilla.components.browser.state.state.BrowserState import mozilla.components.browser.state.state.SearchState import mozilla.components.browser.state.state.availableSearchEngines import mozilla.components.browser.state.store.BrowserStore -import mozilla.components.compose.base.annotation.FlexibleWindowLightDarkPreview +import mozilla.components.compose.base.annotation.FlexibleWindowPreview import mozilla.components.compose.base.button.IconButton import mozilla.components.compose.base.menu.DropdownMenu import mozilla.components.compose.base.menu.MenuItem @@ -52,6 +52,7 @@ import mozilla.components.lib.state.ext.observeAsComposableState 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 /** @@ -278,32 +279,12 @@ private fun generateFakeEngines( ) } -@FlexibleWindowLightDarkPreview +@FlexibleWindowPreview @Composable -private fun SearchEngineShortcutsPreview() { - FirefoxTheme { - SearchEngineShortcuts( - categoryTitle = stringResource(id = R.string.preferences_category_engines_in_search_menu), - store = BrowserStore( - initialState = BrowserState( - search = SearchState( - regionSearchEngines = generateFakeEnginesList(), - disabledSearchEngineIds = listOf("7", "8"), - ), - ), - ), - onCheckboxClicked = { _, _ -> }, - onEditEngineClicked = {}, - onDeleteEngineClicked = {}, - onAddEngineClicked = {}, - ) - } -} - -@Preview -@Composable -private fun SearchEngineShortcutsPrivatePreview() { - FirefoxTheme(theme = Theme.Private) { +private fun SearchEngineShortcutsPreview( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { + FirefoxTheme(theme) { SearchEngineShortcuts( categoryTitle = stringResource(id = R.string.preferences_category_engines_in_search_menu), store = BrowserStore( diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/trustpanel/ui/ProtectionPanelHeader.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/trustpanel/ui/ProtectionPanelHeader.kt @@ -26,13 +26,14 @@ import androidx.compose.ui.semantics.testTag import androidx.compose.ui.semantics.testTagsAsResourceId import androidx.compose.ui.text.style.TextOverflow 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.support.ktx.kotlin.tryGetHostFromUrl import org.mozilla.fenix.compose.Favicon import org.mozilla.fenix.settings.trustpanel.store.WebsiteInfoState import org.mozilla.fenix.theme.FirefoxTheme import org.mozilla.fenix.theme.Theme +import org.mozilla.fenix.theme.ThemeProvider private val ICON_SIZE = 16.dp private val ICON_PADDING = 8.dp @@ -119,10 +120,12 @@ private fun ProtectionPanelIcon( } } -@PreviewLightDark +@Preview @Composable -private fun ProtectionPanelHeaderPreview() { - FirefoxTheme { +private fun ProtectionPanelHeaderPreview( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { + FirefoxTheme(theme) { ProtectionPanelHeader( websiteInfoState = WebsiteInfoState( isSecured = true, @@ -136,10 +139,12 @@ private fun ProtectionPanelHeaderPreview() { } } -@PreviewLightDark +@Preview @Composable -private fun ProtectionPanelHeaderUrlAsTitlePreview() { - FirefoxTheme { +private fun ProtectionPanelHeaderUrlAsTitlePreview( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { + FirefoxTheme(theme) { ProtectionPanelHeader( websiteInfoState = WebsiteInfoState( isSecured = true, @@ -152,20 +157,3 @@ private fun ProtectionPanelHeaderUrlAsTitlePreview() { ) } } - -@Preview -@Composable -private fun ProtectionPanelHeaderPrivatePreview() { - FirefoxTheme(theme = Theme.Private) { - ProtectionPanelHeader( - websiteInfoState = WebsiteInfoState( - isSecured = false, - websiteUrl = "https://www.mozilla.org", - websiteTitle = "Mozilla", - certificate = null, - ), - icon = null, - modifier = Modifier.background(color = MaterialTheme.colorScheme.surface), - ) - } -} diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/wallpaper/WallpaperSettings.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/wallpaper/WallpaperSettings.kt @@ -45,13 +45,15 @@ import androidx.compose.ui.semantics.onClick import androidx.compose.ui.semantics.role import androidx.compose.ui.semantics.semantics import androidx.compose.ui.text.style.TextDecoration +import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.core.graphics.createBitmap -import mozilla.components.compose.base.annotation.FlexibleWindowLightDarkPreview +import mozilla.components.compose.base.annotation.FlexibleWindowPreview import mozilla.components.compose.base.modifier.debouncedClickable import org.mozilla.fenix.R import org.mozilla.fenix.compose.ClickableSubstringLink import org.mozilla.fenix.theme.FirefoxTheme import org.mozilla.fenix.theme.Theme +import org.mozilla.fenix.theme.ThemeProvider import org.mozilla.fenix.wallpapers.Wallpaper /** @@ -311,61 +313,12 @@ private fun WallpaperThumbnailItem( } } -@FlexibleWindowLightDarkPreview +@FlexibleWindowPreview @Composable @Suppress("MagicNumber") -private fun WallpaperThumbnailsPreview() { - val downloadedCollection: List<Wallpaper> = List(size = 5) { index -> - Wallpaper( - name = "downloaded wallpaper $index", - textColor = 0L, - cardColorLight = 0L, - cardColorDark = 0L, - thumbnailFileState = Wallpaper.ImageFileState.Downloaded, - assetsFileState = Wallpaper.ImageFileState.Downloaded, - collection = Wallpaper.ClassicFirefoxCollection, - ) - } + Wallpaper.Default - val downloadingCollection: List<Wallpaper> = List(size = 5) { index -> - Wallpaper( - name = "downloading wallpaper $index", - textColor = 0L, - cardColorLight = 0L, - cardColorDark = 0L, - thumbnailFileState = Wallpaper.ImageFileState.Downloading, - assetsFileState = Wallpaper.ImageFileState.Downloading, - collection = Wallpaper.ClassicFirefoxCollection, - ) - } - var selectedWallpaper by remember { mutableStateOf(downloadedCollection[0]) } - - FirefoxTheme { - WallpaperSettings( - defaultWallpaper = Wallpaper.Default, - loadWallpaperResource = { wallpaper -> - if (wallpaper == Wallpaper.Default) { - null - } else { - createBitmap(100, 100, Bitmap.Config.ARGB_8888) - } - }, - wallpaperGroups = mapOf( - Wallpaper.DefaultCollection to downloadedCollection, - Wallpaper.ClassicFirefoxCollection to downloadingCollection, - ), - selectedWallpaper = selectedWallpaper, - onSelectWallpaper = { wallpaper -> - selectedWallpaper = wallpaper - }, - onLearnMoreClick = { _, _ -> }, - ) - } -} - -@FlexibleWindowLightDarkPreview -@Composable -@Suppress("MagicNumber") -private fun WallpaperThumbnailsPrivatePreview() { +private fun WallpaperThumbnailsPreview( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { val downloadedCollection: List<Wallpaper> = List(size = 5) { index -> Wallpaper( name = "downloaded wallpaper $index", @@ -390,7 +343,7 @@ private fun WallpaperThumbnailsPrivatePreview() { } var selectedWallpaper by remember { mutableStateOf(downloadedCollection[0]) } - FirefoxTheme(theme = Theme.Private) { + FirefoxTheme(theme) { WallpaperSettings( defaultWallpaper = Wallpaper.Default, loadWallpaperResource = { wallpaper -> diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/translations/DownloadIndicator.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/translations/DownloadIndicator.kt @@ -26,13 +26,14 @@ import androidx.compose.ui.semantics.clearAndSetSemantics import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.role 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.base.button.FilledButton import mozilla.components.compose.base.modifier.animateRotation 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 /** @@ -134,10 +135,12 @@ fun DownloadIndicator( ) } +@Preview @Composable -@PreviewLightDark -private fun DownloadIconIndicatorPreview() { - FirefoxTheme { +private fun DownloadIconIndicatorPreview( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { + FirefoxTheme(theme) { Surface { DownloadIconIndicator( icon = painterResource(id = iconsR.drawable.mozac_ic_sync_24), @@ -149,25 +152,12 @@ private fun DownloadIconIndicatorPreview() { } } -@Composable @Preview -private fun DownloadIconIndicatorPrivatePreview() { - FirefoxTheme(theme = Theme.Private) { - Surface { - DownloadIconIndicator( - icon = painterResource(id = iconsR.drawable.mozac_ic_sync_24), - contentDescription = stringResource( - id = R.string.translations_bottom_sheet_translating_in_progress, - ), - ) - } - } -} - @Composable -@PreviewLightDark -private fun DownloadInProgressIndicatorPreview() { - FirefoxTheme { +private fun DownloadInProgressIndicatorPreview( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { + FirefoxTheme(theme) { Surface { DownloadInProgressIndicator( contentDescription = stringResource( @@ -178,41 +168,12 @@ private fun DownloadInProgressIndicatorPreview() { } } -@Composable @Preview -private fun DownloadInProgressIndicatorPrivatePreview() { - FirefoxTheme(theme = Theme.Private) { - Surface { - DownloadInProgressIndicator( - contentDescription = stringResource( - id = R.string.translations_bottom_sheet_translating_in_progress, - ), - ) - } - } -} - @Composable -@PreviewLightDark -private fun DownloadIndicatorPreview() { - FirefoxTheme { - Surface { - DownloadIndicator( - modifier = Modifier.padding(horizontal = 16.dp, vertical = 12.dp), - text = stringResource(id = R.string.translations_bottom_sheet_translating_in_progress), - contentDescription = stringResource( - id = R.string.translations_bottom_sheet_translating_in_progress_content_description, - ), - icon = painterResource(id = iconsR.drawable.mozac_ic_sync_24), - ) - } - } -} - -@Composable -@Preview -private fun DownloadIndicatorPrivatePreview() { - FirefoxTheme(theme = Theme.Private) { +private fun DownloadIndicatorPreview( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { + FirefoxTheme(theme) { Surface { DownloadIndicator( modifier = Modifier.padding(horizontal = 16.dp, vertical = 12.dp), diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/translations/TranslationOptionsDialog.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/translations/TranslationOptionsDialog.kt @@ -27,7 +27,7 @@ import androidx.compose.ui.res.stringResource 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.PreviewLightDark +import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import mozilla.components.concept.engine.translate.TranslationError import org.mozilla.fenix.R @@ -37,6 +37,7 @@ import org.mozilla.fenix.compose.SwitchWithLabel import org.mozilla.fenix.compose.list.TextListItem import org.mozilla.fenix.theme.FirefoxTheme import org.mozilla.fenix.theme.Theme +import org.mozilla.fenix.theme.ThemeProvider import java.util.Locale import mozilla.components.ui.icons.R as iconsR @@ -239,28 +240,12 @@ fun getTranslationOptionsList(): List<TranslationSwitchItem> { } } -@Composable -@PreviewLightDark -private fun TranslationSettingsPreview() { - FirefoxTheme { - Surface { - Column { - TranslationOptionsDialog( - translationOptionsList = getTranslationOptionsList(), - showGlobalSettings = true, - onBackClicked = {}, - onTranslationSettingsClicked = {}, - aboutTranslationClicked = {}, - ) - } - } - } -} - -@Composable @Preview -private fun TranslationSettingsPrivatePreview() { - FirefoxTheme(theme = Theme.Private) { +@Composable +private fun TranslationSettingsPreview( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { + FirefoxTheme(theme) { Surface { Column { TranslationOptionsDialog( diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/translations/TranslationSettings.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/translations/TranslationSettings.kt @@ -21,7 +21,7 @@ import androidx.compose.ui.res.stringResource 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.PreviewLightDark +import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import mozilla.components.concept.engine.translate.TranslationError import org.mozilla.fenix.R @@ -31,6 +31,7 @@ import org.mozilla.fenix.compose.SwitchWithLabel import org.mozilla.fenix.compose.list.TextListItem import org.mozilla.fenix.theme.FirefoxTheme import org.mozilla.fenix.theme.Theme +import org.mozilla.fenix.theme.ThemeProvider /** * Translation Settings Fragment. @@ -196,26 +197,12 @@ internal fun getTranslationSettingsSwitchList(): List<TranslationSwitchItem> { } } -@Composable -@PreviewLightDark -private fun TranslationSettingsPreview() { - FirefoxTheme { - TranslationSettings( - translationSwitchList = getTranslationSettingsSwitchList(), - showAutomaticTranslations = true, - showNeverTranslate = true, - showDownloads = true, - onAutomaticTranslationClicked = {}, - onDownloadLanguageClicked = {}, - onNeverTranslationClicked = {}, - ) - } -} - -@Composable @Preview -private fun TranslationSettingPrivatePreview() { - FirefoxTheme(theme = Theme.Private) { +@Composable +private fun TranslationSettingsPreview( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { + FirefoxTheme(theme) { TranslationSettings( translationSwitchList = getTranslationSettingsSwitchList(), showAutomaticTranslations = true, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/translations/TranslationToolbar.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/translations/TranslationToolbar.kt @@ -22,11 +22,12 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow 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 private val ROUNDED_CORNER_SHAPE = RoundedCornerShape(topStart = 4.dp, topEnd = 4.dp) @@ -92,20 +93,12 @@ fun TranslationToolbar( } } -@PreviewLightDark -@Composable -private fun TranslationToolbarPreview() { - FirefoxTheme { - TranslationToolbar( - label = "Translated from French to English", - ) - } -} - @Preview @Composable -private fun TranslationToolbarPrivatePreview() { - FirefoxTheme(theme = Theme.Private) { +private fun TranslationToolbarPreview( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { + FirefoxTheme(theme) { TranslationToolbar( label = "Translated from French to English", ) diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/translations/TranslationsDialogBottomSheet.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/translations/TranslationsDialogBottomSheet.kt @@ -34,7 +34,7 @@ import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.rememberTextMeasurer import androidx.compose.ui.text.style.TextDecoration 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.compose.ui.unit.dp import mozilla.components.compose.base.Dropdown @@ -51,6 +51,7 @@ import org.mozilla.fenix.compose.LinkText import org.mozilla.fenix.compose.LinkTextState import org.mozilla.fenix.theme.FirefoxTheme import org.mozilla.fenix.theme.Theme +import org.mozilla.fenix.theme.ThemeProvider import java.util.Locale import mozilla.components.ui.icons.R as iconsR @@ -731,35 +732,12 @@ internal fun getTranslateToLanguageList(): List<Language> { } } -@Composable -@PreviewLightDark -private fun TranslationsDialogBottomSheetPreview() { - FirefoxTheme { - Surface { - TranslationsDialogBottomSheet( - translationsDialogState = TranslationsDialogState( - positiveButtonType = PositiveButtonType.Enabled, - toLanguages = getTranslateToLanguageList(), - fromLanguages = getTranslateFromLanguageList(), - ), - learnMoreUrl = "", - showPageSettings = true, - showFirstTimeFlow = true, - onSettingClicked = {}, - onLearnMoreClicked = {}, - onPositiveButtonClicked = {}, - onNegativeButtonClicked = {}, - onFromDropdownSelected = {}, - onToDropdownSelected = {}, - ) - } - } -} - -@Composable @Preview -private fun TranslationsDialogBottomSheetPrivatePreview() { - FirefoxTheme(theme = Theme.Private) { +@Composable +private fun TranslationsDialogBottomSheetPreview( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { + FirefoxTheme(theme) { Surface { TranslationsDialogBottomSheet( translationsDialogState = TranslationsDialogState( diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/translations/preferences/automatic/AutomaticTranslationOptionsPreference.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/translations/preferences/automatic/AutomaticTranslationOptionsPreference.kt @@ -15,11 +15,12 @@ import androidx.compose.runtime.remember import androidx.compose.ui.Modifier 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.compose.list.RadioButtonListItem import org.mozilla.fenix.theme.FirefoxTheme import org.mozilla.fenix.theme.Theme +import org.mozilla.fenix.theme.ThemeProvider /** * Firefox Automatic Translation Options preference screen. @@ -63,21 +64,12 @@ fun AutomaticTranslationOptionsPreference( } } -@Composable -@PreviewLightDark -private fun AutomaticTranslationOptionsPreview() { - FirefoxTheme { - AutomaticTranslationOptionsPreference( - selectedOption = AutomaticTranslationOptionPreference.AlwaysTranslate(), - onItemClick = {}, - ) - } -} - -@Composable @Preview -private fun AutomaticTranslationOptionsPrivatePreview() { - FirefoxTheme(theme = Theme.Private) { +@Composable +private fun AutomaticTranslationOptionsPreview( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { + FirefoxTheme(theme) { AutomaticTranslationOptionsPreference( selectedOption = AutomaticTranslationOptionPreference.AlwaysTranslate(), onItemClick = {}, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/translations/preferences/automatic/AutomaticTranslationPreference.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/translations/preferences/automatic/AutomaticTranslationPreference.kt @@ -18,7 +18,7 @@ import androidx.compose.ui.res.stringResource 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.PreviewLightDark +import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import mozilla.components.concept.engine.translate.Language import org.mozilla.fenix.R @@ -27,6 +27,7 @@ import org.mozilla.fenix.compose.InfoType import org.mozilla.fenix.compose.list.TextListItem import org.mozilla.fenix.theme.FirefoxTheme import org.mozilla.fenix.theme.Theme +import org.mozilla.fenix.theme.ThemeProvider import java.util.Locale /** @@ -137,44 +138,25 @@ internal fun getAutomaticTranslationListPreferences(): List<AutomaticTranslation } } +@Preview @Composable -@PreviewLightDark -private fun AutomaticTranslationPreferencePreview() { - FirefoxTheme { - AutomaticTranslationPreference( - automaticTranslationListPreferences = getAutomaticTranslationListPreferences(), - onItemClick = {}, - ) - } -} - -@Composable -@PreviewLightDark -private fun AutomaticTranslationPreferenceErrorPreview() { - FirefoxTheme { +private fun AutomaticTranslationPreferencePreview( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { + FirefoxTheme(theme) { AutomaticTranslationPreference( automaticTranslationListPreferences = getAutomaticTranslationListPreferences(), - hasLanguageError = true, onItemClick = {}, ) } } -@Composable @Preview -private fun AutomaticTranslationPreferencePrivatePreview() { - FirefoxTheme(theme = Theme.Private) { - AutomaticTranslationPreference( - automaticTranslationListPreferences = getAutomaticTranslationListPreferences(), - onItemClick = {}, - ) - } -} - @Composable -@Preview -private fun AutomaticTranslationPreferenceErrorPrivatePreview() { - FirefoxTheme(theme = Theme.Private) { +private fun AutomaticTranslationPreferenceErrorPreview( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { + FirefoxTheme(theme) { AutomaticTranslationPreference( automaticTranslationListPreferences = getAutomaticTranslationListPreferences(), hasLanguageError = true, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/translations/preferences/downloadlanguages/DeleteLanguageFileDialog.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/translations/preferences/downloadlanguages/DeleteLanguageFileDialog.kt @@ -10,13 +10,14 @@ import androidx.compose.runtime.Composable 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 mozilla.components.compose.base.button.TextButton import mozilla.components.feature.downloads.DefaultFileSizeFormatter import mozilla.components.feature.downloads.FileSizeFormatter import org.mozilla.fenix.R import org.mozilla.fenix.theme.FirefoxTheme import org.mozilla.fenix.theme.Theme +import org.mozilla.fenix.theme.ThemeProvider import java.util.Locale /** @@ -96,10 +97,12 @@ fun DeleteLanguageFileDialog( ) } +@Preview @Composable -@PreviewLightDark -private fun DeleteLanguageFileDialogPreview() { - FirefoxTheme { +private fun DeleteLanguageFileDialogPreview( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { + FirefoxTheme(theme) { DeleteLanguageFileDialog( language = Locale.CHINA.displayLanguage, isAllLanguagesItemType = false, @@ -111,40 +114,12 @@ private fun DeleteLanguageFileDialogPreview() { } } -@Composable @Preview -private fun DeleteLanguageFileDialogPrivatePreview() { - FirefoxTheme(theme = Theme.Private) { - DeleteLanguageFileDialog( - language = Locale.CHINA.displayLanguage, - isAllLanguagesItemType = false, - fileSizeFormatter = DefaultFileSizeFormatter(LocalContext.current), - fileSize = 4000L, - onConfirmDelete = {}, - onCancel = {}, - ) - } -} - @Composable -@PreviewLightDark -private fun DeleteAllLanguagesFileDialogPreview() { - FirefoxTheme { - DeleteLanguageFileDialog( - language = Locale.CHINA.displayLanguage, - isAllLanguagesItemType = true, - fileSizeFormatter = DefaultFileSizeFormatter(LocalContext.current), - fileSize = 4000L, - onConfirmDelete = {}, - onCancel = {}, - ) - } -} - -@Composable -@Preview -private fun DeleteAllLanguagesFileDialogPrivatePreview() { - FirefoxTheme(theme = Theme.Private) { +private fun DeleteAllLanguagesFileDialogPreview( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { + FirefoxTheme(theme) { DeleteLanguageFileDialog( language = Locale.CHINA.displayLanguage, isAllLanguagesItemType = true, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/translations/preferences/downloadlanguages/DownloadLanguageFileDialog.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/translations/preferences/downloadlanguages/DownloadLanguageFileDialog.kt @@ -27,7 +27,7 @@ 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.PreviewLightDark +import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Dialog import mozilla.components.compose.base.button.FilledButton @@ -37,6 +37,7 @@ import mozilla.components.feature.downloads.FileSizeFormatter import org.mozilla.fenix.R import org.mozilla.fenix.theme.FirefoxTheme import org.mozilla.fenix.theme.Theme +import org.mozilla.fenix.theme.ThemeProvider /** * Download Languages File Dialog. @@ -196,10 +197,12 @@ sealed class DownloadLanguageFileDialogType { data object TranslationRequest : DownloadLanguageFileDialogType() } +@Preview @Composable -@PreviewLightDark -private fun PrefDownloadLanguageFileDialogPreviewAllLanguages() { - FirefoxTheme { +private fun PrefDownloadLanguageFileDialogPreviewAllLanguages( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { + FirefoxTheme(theme) { DownloadLanguageFileDialog( downloadLanguageDialogType = DownloadLanguageFileDialogType.AllLanguages, fileSizeFormatter = DefaultFileSizeFormatter(LocalContext.current), @@ -212,42 +215,12 @@ private fun PrefDownloadLanguageFileDialogPreviewAllLanguages() { } } -@Composable @Preview -private fun PrefDownloadLanguageFileDialogPrivatePreviewAllLanguages() { - FirefoxTheme(theme = Theme.Private) { - DownloadLanguageFileDialog( - downloadLanguageDialogType = DownloadLanguageFileDialogType.AllLanguages, - fileSizeFormatter = DefaultFileSizeFormatter(LocalContext.current), - fileSize = 4000L, - isCheckBoxEnabled = true, - onSavingModeStateChange = {}, - onConfirmDownload = {}, - onCancel = {}, - ) - } -} - @Composable -@PreviewLightDark -private fun PrefDownloadLanguageFileDialogPreview() { - FirefoxTheme { - DownloadLanguageFileDialog( - downloadLanguageDialogType = DownloadLanguageFileDialogType.Default, - fileSizeFormatter = DefaultFileSizeFormatter(LocalContext.current), - fileSize = 4000L, - isCheckBoxEnabled = false, - onSavingModeStateChange = {}, - onConfirmDownload = {}, - onCancel = {}, - ) - } -} - -@Composable -@Preview -private fun PrefDownloadLanguageFileDialogPrivatePreview() { - FirefoxTheme(theme = Theme.Private) { +private fun PrefDownloadLanguageFileDialogPreview( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { + FirefoxTheme(theme) { DownloadLanguageFileDialog( downloadLanguageDialogType = DownloadLanguageFileDialogType.Default, fileSizeFormatter = DefaultFileSizeFormatter(LocalContext.current), diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/translations/preferences/downloadlanguages/DownloadLanguagesPreference.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/translations/preferences/downloadlanguages/DownloadLanguagesPreference.kt @@ -42,7 +42,7 @@ import androidx.compose.ui.text.buildAnnotatedString import androidx.compose.ui.text.style.TextDecoration import androidx.compose.ui.text.withStyle 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.concept.engine.translate.Language import mozilla.components.concept.engine.translate.LanguageModel @@ -57,6 +57,7 @@ import org.mozilla.fenix.compose.LinkText import org.mozilla.fenix.compose.LinkTextState import org.mozilla.fenix.theme.FirefoxTheme import org.mozilla.fenix.theme.Theme +import org.mozilla.fenix.theme.ThemeProvider import org.mozilla.fenix.translations.DownloadIconIndicator import org.mozilla.fenix.translations.DownloadInProgressIndicator import java.util.Locale @@ -612,24 +613,12 @@ internal fun getLanguageListPreference(): List<DownloadLanguageItemPreference> { } } -@Composable -@PreviewLightDark -private fun DownloadLanguagesPreferencePreview() { - FirefoxTheme { - DownloadLanguagesPreference( - downloadLanguageItemPreferences = getLanguageListPreference(), - learnMoreUrl = "https://www.mozilla.org", - fileSizeFormatter = DefaultFileSizeFormatter(LocalContext.current), - onLearnMoreClicked = {}, - onItemClick = {}, - ) - } -} - -@Composable @Preview -private fun DownloadLanguagesPreferencePrivatePreview() { - FirefoxTheme(theme = Theme.Private) { +@Composable +private fun DownloadLanguagesPreferencePreview( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { + FirefoxTheme(theme) { DownloadLanguagesPreference( downloadLanguageItemPreferences = getLanguageListPreference(), learnMoreUrl = "https://www.mozilla.org", diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/translations/preferences/nevertranslatesite/NeverTranslateSitesPreference.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/translations/preferences/nevertranslatesite/NeverTranslateSitesPreference.kt @@ -23,7 +23,7 @@ import androidx.compose.ui.semantics.heading import androidx.compose.ui.semantics.role import androidx.compose.ui.semantics.semantics 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.compose.InfoCard @@ -31,6 +31,7 @@ import org.mozilla.fenix.compose.InfoType import org.mozilla.fenix.compose.list.TextListItem 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 /** @@ -121,10 +122,12 @@ internal fun getNeverTranslateSitesList(): List<String> { } } +@Preview @Composable -@PreviewLightDark -private fun NeverTranslateSitePreferencePreview() { - FirefoxTheme { +private fun NeverTranslateSitePreferencePreview( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { + FirefoxTheme(theme) { NeverTranslateSitesPreference( neverTranslateSitesListPreferences = getNeverTranslateSitesList(), hasNeverTranslateSitesError = false, @@ -132,32 +135,12 @@ private fun NeverTranslateSitePreferencePreview() { } } -@Composable -@PreviewLightDark -private fun NeverTranslateSitePreferenceErrorPreview() { - FirefoxTheme { - NeverTranslateSitesPreference( - neverTranslateSitesListPreferences = getNeverTranslateSitesList(), - hasNeverTranslateSitesError = true, - ) {} - } -} - -@Composable @Preview -private fun NeverTranslateSitePreferencePrivatePreview() { - FirefoxTheme(theme = Theme.Private) { - NeverTranslateSitesPreference( - neverTranslateSitesListPreferences = getNeverTranslateSitesList(), - hasNeverTranslateSitesError = false, - ) {} - } -} - @Composable -@Preview -private fun NeverTranslateSitePreferenceErrorPrivatePreview() { - FirefoxTheme(theme = Theme.Private) { +private fun NeverTranslateSitePreferenceErrorPreview( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { + FirefoxTheme(theme) { NeverTranslateSitesPreference( neverTranslateSitesListPreferences = getNeverTranslateSitesList(), hasNeverTranslateSitesError = true, diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/webcompat/ui/WebCompatReporterPreviewSheet.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/webcompat/ui/WebCompatReporterPreviewSheet.kt @@ -29,13 +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.PreviewLightDark +import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import mozilla.components.compose.base.button.FilledButton 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 @OptIn(ExperimentalMaterial3Api::class) @Composable @@ -122,18 +123,12 @@ private fun WebCompatReporterPreviewSheetContent() { ) } -@Composable -@PreviewLightDark -private fun WebCompatReporterSheetPreview() { - FirefoxTheme { - WebCompatReporterPreviewSheetContent() - } -} - -@Composable @Preview -private fun WebCompatReporterSheetPrivatePreview() { - FirefoxTheme(theme = Theme.Private) { +@Composable +private fun WebCompatReporterSheetPreview( + @PreviewParameter(ThemeProvider::class) theme: Theme, +) { + FirefoxTheme(theme) { WebCompatReporterPreviewSheetContent() } }