diff --git a/app/nimbus.fml.yaml b/app/nimbus.fml.yaml index cf50f70d9..621d2a546 100644 --- a/app/nimbus.fml.yaml +++ b/app/nimbus.fml.yaml @@ -243,7 +243,8 @@ features: { "feature-ui": 0, "feature-setting-value": 0, - "dialog-re-engage-time": 4 + "dialog-re-engage-time": 4, + "feature-setting-value-pbm": 0 } defaults: - channel: developer @@ -251,7 +252,8 @@ features: "sections-enabled": { "feature-ui": 1, "feature-setting-value": 0, - "dialog-re-engage-time": 4 + "dialog-re-engage-time": 4, + "feature-setting-value-pbm": 0 } } - channel: nightly @@ -259,7 +261,8 @@ features: "sections-enabled": { "feature-ui": 1, "feature-setting-value": 0, - "dialog-re-engage-time": 4 + "dialog-re-engage-time": 4, + "feature-setting-value-pbm": 0 } } unified-search: @@ -460,6 +463,9 @@ types: description: An integer indicating the number of hours that needs to happen before the re-engagement dialog shows again since the last seen, for example if set to 4 that means if the users has seen the dialog, it will see it 4 hours later. + feature-setting-value-pbm: + description: An integer either 0 or 1 indicating if cookie banner setting should be enabled or disabled, + 0 for setting the value to disabled, 1 for enabling the setting with the value reject_all. OnboardingPanel: description: The types of onboarding panels in the onboarding page variants: diff --git a/app/src/main/java/org/mozilla/fenix/components/Core.kt b/app/src/main/java/org/mozilla/fenix/components/Core.kt index dd713392c..4a4ad1c7c 100644 --- a/app/src/main/java/org/mozilla/fenix/components/Core.kt +++ b/app/src/main/java/org/mozilla/fenix/components/Core.kt @@ -141,7 +141,7 @@ class Core( R.color.fx_mobile_layer_color_1, ), httpsOnlyMode = context.settings().getHttpsOnlyMode(), - cookieBannerHandlingModePrivateBrowsing = context.settings().getCookieBannerHandling(), + cookieBannerHandlingModePrivateBrowsing = context.settings().getCookieBannerHandlingPrivateMode(), cookieBannerHandlingMode = context.settings().getCookieBannerHandling(), cookieBannerHandlingDetectOnlyMode = context.settings() .shouldShowCookieBannerReEngagementDialog(), diff --git a/app/src/main/java/org/mozilla/fenix/utils/Settings.kt b/app/src/main/java/org/mozilla/fenix/utils/Settings.kt index c8624fa3b..29fdd57c8 100644 --- a/app/src/main/java/org/mozilla/fenix/utils/Settings.kt +++ b/app/src/main/java/org/mozilla/fenix/utils/Settings.kt @@ -616,6 +616,12 @@ class Settings(private val appContext: Context) : PreferencesHolder { default = { cookieBannersSection[CookieBannersSection.FEATURE_SETTING_VALUE] == 1 }, ) + var shouldUseCookieBannerPrivateMode by lazyFeatureFlagPreference( + appContext.getPreferenceKey(R.string.pref_key_cookie_banner_private_mode), + featureFlag = true, + default = { cookieBannersSection[CookieBannersSection.FEATURE_SETTING_VALUE_PBM] == 1 }, + ) + var userOptOutOfReEngageCookieBannerDialog by booleanPreference( appContext.getPreferenceKey(R.string.pref_key_cookie_banner_re_engage_dialog_dismissed), default = false, @@ -1770,6 +1776,18 @@ class Settings(private val appContext: Context) : PreferencesHolder { } } + /** + * Get the current mode for cookie banner handling + */ + fun getCookieBannerHandlingPrivateMode(): CookieBannerHandlingMode { + return when (shouldUseCookieBannerPrivateMode) { + true -> CookieBannerHandlingMode.REJECT_ALL + false -> { + CookieBannerHandlingMode.DISABLED + } + } + } + /** * Times that the cookie banner re-engagement dialog has been shown. */ diff --git a/app/src/main/res/values/preference_keys.xml b/app/src/main/res/values/preference_keys.xml index be8d93aee..88bf35c10 100644 --- a/app/src/main/res/values/preference_keys.xml +++ b/app/src/main/res/values/preference_keys.xml @@ -167,6 +167,7 @@ pref_key_cookie_banner_first_banner_detected pref_key_cookie_banner_v1 pref_key_cookie_banner_re_engagement_dialog_shows_counter + pref_key_cookie_banner_private_mode pref_key_etp_learn_more