commit 1affd958896f7f2cdf87ee21eda07667b4ea9ccc
parent 062bfd2cf57867fcf9a6a7305b32fca200b60a54
Author: John Oberhauser <j.git-global@obez.io>
Date: Wed, 7 Jan 2026 16:24:41 +0000
Bug 2008833 - Creating a public theme preview parameter provider for compose previews to make it easier to create previews for light, dark, and private themes. r=android-reviewers,007,jdelorenzo
Differential Revision: https://phabricator.services.mozilla.com/D278055
Diffstat:
2 files changed, 29 insertions(+), 6 deletions(-)
diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/creditcards/ui/DeleteCreditCardDialog.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/settings/creditcards/ui/DeleteCreditCardDialog.kt
@@ -12,11 +12,11 @@ import androidx.compose.ui.platform.testTag
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter
-import androidx.compose.ui.tooling.preview.PreviewParameterProvider
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
/**
* Composable for the delete credit card dialog.
@@ -57,14 +57,10 @@ internal fun DeleteCreditCardDialog(
)
}
-private class ThemePreviewParameterProvider(
- override val values: Sequence<Theme> = Theme.entries.asSequence(),
-) : PreviewParameterProvider<Theme>
-
@Composable
@Preview
private fun PreviewDeleteCreditCardDialog(
- @PreviewParameter(ThemePreviewParameterProvider::class) theme: Theme,
+ @PreviewParameter(ThemeProvider::class) theme: Theme,
) = FirefoxTheme(theme) {
DeleteCreditCardDialog()
}
diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/theme/ThemeProvider.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/theme/ThemeProvider.kt
@@ -0,0 +1,27 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+package org.mozilla.fenix.theme
+
+import androidx.compose.ui.tooling.preview.PreviewParameterProvider
+
+/**
+ * This class can be used in compose previews to generate previews for each theme type.
+ *
+ * Example:
+ * ```
+ * @Preview
+ * @Composable
+ * private fun PreviewText(
+ * @PreviewParameter(ThemeProvider::class) theme: Theme,
+ * ) = FirefoxTheme(theme) {
+ * Surface {
+ * Text("hello")
+ * }
+ * }
+ * ```
+ */
+class ThemeProvider : PreviewParameterProvider<Theme> {
+ override val values = Theme.entries.asSequence()
+}