Bug 1848377 - Add secret setting to control the visibility of the Shopping feature

fenix/118.0
Noah Bond 10 months ago committed by mergify[bot]
parent 4c52f74add
commit d0f75706c0

@ -50,6 +50,7 @@ import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.nimbus.FxNimbus
import org.mozilla.fenix.settings.quicksettings.protections.cookiebanners.dialog.CookieBannerReEngagementDialogUtils
import org.mozilla.fenix.settings.quicksettings.protections.cookiebanners.getCookieBannerUIMode
import org.mozilla.fenix.shopping.DefaultShoppingExperienceFeature
import org.mozilla.fenix.shopping.ReviewQualityCheckFeature
import org.mozilla.fenix.shortcut.PwaOnboardingObserver
import org.mozilla.fenix.theme.ThemeManager
@ -226,6 +227,9 @@ class BrowserFragment : BaseBrowserFragment(), UserInteractionHandler {
reviewQualityCheckFeature.set(
feature = ReviewQualityCheckFeature(
browserStore = context.components.core.store,
shoppingExperienceFeature = DefaultShoppingExperienceFeature(
settings = requireContext().settings(),
),
onAvailabilityChange = { reviewQualityCheckAvailable = it },
),
owner = this,

@ -64,6 +64,12 @@ class SecretSettingsFragment : PreferenceFragmentCompat() {
onPreferenceChangeListener = SharedPreferenceUpdater()
}
requirePreference<SwitchPreference>(R.string.pref_key_enable_shopping_experience).apply {
isVisible = Config.channel.isNightlyOrDebug
isChecked = context.settings().enableShoppingExperience
onPreferenceChangeListener = SharedPreferenceUpdater()
}
// for performance reasons, this is only available in Nightly or Debug builds
requirePreference<EditTextPreference>(R.string.pref_key_custom_glean_server_url).apply {
isVisible = Config.channel.isNightlyOrDebug && BuildConfig.GLEAN_CUSTOM_URL.isNullOrEmpty()

@ -25,7 +25,7 @@ import mozilla.components.support.base.feature.LifecycleAwareFeature
*/
class ReviewQualityCheckFeature(
private val browserStore: BrowserStore,
private val shoppingExperienceFeature: ShoppingExperienceFeature = ShoppingExperienceFeature(),
private val shoppingExperienceFeature: ShoppingExperienceFeature,
private val onAvailabilityChange: (isAvailable: Boolean) -> Unit,
) : LifecycleAwareFeature {
private var scope: CoroutineScope? = null

@ -4,16 +4,28 @@
package org.mozilla.fenix.shopping
import org.mozilla.fenix.nimbus.FxNimbus
import org.mozilla.fenix.utils.Settings
/**
* An abstraction for shopping experience feature flag.
*/
class ShoppingExperienceFeature {
interface ShoppingExperienceFeature {
/**
* Returns true if the shopping experience feature is enabled.
*/
val isEnabled
get() = FxNimbus.features.shoppingExperience.value().enabled
val isEnabled: Boolean
}
/**
* The default implementation of [ShoppingExperienceFeature].
*
* @property settings Used to check if the feature is enabled.
*/
class DefaultShoppingExperienceFeature(
private val settings: Settings,
) : ShoppingExperienceFeature {
override val isEnabled
get() = settings.enableShoppingExperience
}

@ -1789,6 +1789,14 @@ class Settings(private val appContext: Context) : PreferencesHolder {
default = FeatureFlags.composeTopSites,
)
/**
* Indicates if the shopping experience feature is enabled.
*/
val enableShoppingExperience by booleanPreference(
key = appContext.getPreferenceKey(R.string.pref_key_enable_shopping_experience),
default = FxNimbus.features.shoppingExperience.value().enabled,
)
/**
* Adjust Activated User sent
*/

@ -350,6 +350,7 @@
<string name="pref_key_custom_sponsored_stories_country" translatable="false">pref_key_custom_sponsored_stories_country</string>
<string name="pref_key_custom_sponsored_stories_city" translatable="false">pref_key_custom_sponsored_stories_city</string>
<string name="pref_key_enable_compose_top_sites" translatable="false">pref_key_enable_compose_top_sites</string>
<string name="pref_key_enable_shopping_experience" translatable="false">pref_key_enable_shopping_experience</string>
<!-- Growth Data -->
<string name="pref_key_growth_set_as_default" translatable="false">pref_key_growth_set_as_default</string>

@ -66,6 +66,8 @@
<string name="preferences_debug_settings_tabs_tray_to_compose" translatable="false">Enable Tabs Tray to Compose rewrite</string>
<!-- Label for enabling the Compose Top Sites -->
<string name="preferences_debug_settings_compose_top_sites" translatable="false">Enable Compose Top Sites</string>
<!-- Label for enabling the shopping experience -->
<string name="preferences_debug_settings_shopping_experience" translatable="false">Enable Shopping Experience</string>
<!-- A secret menu option in the tabs tray for making a tab inactive for testing. -->
<string name="inactive_tabs_menu_item">Make inactive</string>

@ -30,6 +30,11 @@
android:key="@string/pref_key_enable_compose_top_sites"
android:title="@string/preferences_debug_settings_compose_top_sites"
app:iconSpaceReserved="false" />
<SwitchPreference
android:defaultValue="false"
android:key="@string/pref_key_enable_shopping_experience"
android:title="@string/preferences_debug_settings_shopping_experience"
app:iconSpaceReserved="false" />
<EditTextPreference
android:key="@string/pref_key_custom_glean_server_url"
android:title="@string/preferences_debug_settings_custom_glean_server_url"

Loading…
Cancel
Save