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