From 7cc21836c12a46c7858b78f898b9595eeda9baef Mon Sep 17 00:00:00 2001 From: Arturo Mejia Date: Wed, 15 Nov 2023 11:15:35 -0500 Subject: [PATCH] Bug 1864859 - Make cookie banner handling follow the same defaults as desktop. --- app/nimbus.fml.yaml | 17 ++++++++++--- .../mozilla/fenix/ui/SettingsAddonsTest.kt | 2 ++ .../mozilla/fenix/ui/SettingsAdvancedTest.kt | 3 +++ .../CustomCBHSwitchPreference.kt | 25 +++++++++++++++++++ .../java/org/mozilla/fenix/utils/Settings.kt | 5 +++- app/src/main/res/xml/preferences.xml | 3 +-- 6 files changed, 49 insertions(+), 6 deletions(-) create mode 100644 app/src/main/java/org/mozilla/fenix/settings/cookiebannerhandling/CustomCBHSwitchPreference.kt diff --git a/app/nimbus.fml.yaml b/app/nimbus.fml.yaml index 4692b0deb..c4dec93a2 100644 --- a/app/nimbus.fml.yaml +++ b/app/nimbus.fml.yaml @@ -272,7 +272,7 @@ features: type: Map default: { - "feature-ui": 1, + "feature-ui": 0, "feature-setting-value": 0, "feature-setting-value-pbm": 0, "feature-setting-detect-only": 0, @@ -285,7 +285,7 @@ features: "sections-enabled": { "feature-ui": 1, "feature-setting-value": 0, - "feature-setting-value-pbm": 0, + "feature-setting-value-pbm": 1, "feature-setting-detect-only": 0, "feature-setting-global-rules": 0, "feature-setting-global-rules-sub-frames": 0, @@ -296,7 +296,18 @@ features: "sections-enabled": { "feature-ui": 1, "feature-setting-value": 0, - "feature-setting-value-pbm": 0, + "feature-setting-value-pbm": 1, + "feature-setting-detect-only": 0, + "feature-setting-global-rules": 0, + "feature-setting-global-rules-sub-frames": 0, + } + } + - channel: beta + value: { + "sections-enabled": { + "feature-ui": 1, + "feature-setting-value": 0, + "feature-setting-value-pbm": 1, "feature-setting-detect-only": 0, "feature-setting-global-rules": 0, "feature-setting-global-rules-sub-frames": 0, diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/SettingsAddonsTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/SettingsAddonsTest.kt index 1e97c80f3..45e4e75bc 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/SettingsAddonsTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/SettingsAddonsTest.kt @@ -17,6 +17,7 @@ import org.mozilla.fenix.helpers.AppAndSystemHelper.registerAndCleanupIdlingReso import org.mozilla.fenix.helpers.HomeActivityIntentTestRule import org.mozilla.fenix.helpers.RecyclerViewIdlingResource import org.mozilla.fenix.helpers.TestAssetHelper.getEnhancedTrackingProtectionAsset +import org.mozilla.fenix.helpers.TestHelper import org.mozilla.fenix.helpers.TestHelper.verifySnackBarText import org.mozilla.fenix.helpers.TestHelper.waitUntilSnackbarGone import org.mozilla.fenix.ui.robots.addonsMenu @@ -148,6 +149,7 @@ class SettingsAddonsTest { @SmokeTest @Test fun verifyUBlockWorksInPrivateModeTest() { + TestHelper.appContext.settings().shouldShowCookieBannersCFR = false val addonName = "uBlock Origin" addonsMenu { diff --git a/app/src/androidTest/java/org/mozilla/fenix/ui/SettingsAdvancedTest.kt b/app/src/androidTest/java/org/mozilla/fenix/ui/SettingsAdvancedTest.kt index 968f93bf7..7bcebac37 100644 --- a/app/src/androidTest/java/org/mozilla/fenix/ui/SettingsAdvancedTest.kt +++ b/app/src/androidTest/java/org/mozilla/fenix/ui/SettingsAdvancedTest.kt @@ -13,12 +13,14 @@ import org.junit.Before import org.junit.Rule import org.junit.Test import org.mozilla.fenix.customannotations.SmokeTest +import org.mozilla.fenix.ext.settings import org.mozilla.fenix.helpers.AndroidAssetDispatcher import org.mozilla.fenix.helpers.AppAndSystemHelper.assertYoutubeAppOpens import org.mozilla.fenix.helpers.HomeActivityIntentTestRule import org.mozilla.fenix.helpers.MatcherHelper.itemContainingText import org.mozilla.fenix.helpers.MatcherHelper.itemWithResIdAndText import org.mozilla.fenix.helpers.TestAssetHelper +import org.mozilla.fenix.helpers.TestHelper import org.mozilla.fenix.helpers.TestHelper.exitMenu import org.mozilla.fenix.ui.robots.clickPageObject import org.mozilla.fenix.ui.robots.homeScreen @@ -201,6 +203,7 @@ class SettingsAdvancedTest { // Assumes Youtube is installed and enabled @Test fun privateBrowsingAskBeforeOpeningLinkInAppCancelTest() { + TestHelper.appContext.settings().shouldShowCookieBannersCFR = false val externalLinksPage = TestAssetHelper.getExternalLinksAsset(mockWebServer) homeScreen { diff --git a/app/src/main/java/org/mozilla/fenix/settings/cookiebannerhandling/CustomCBHSwitchPreference.kt b/app/src/main/java/org/mozilla/fenix/settings/cookiebannerhandling/CustomCBHSwitchPreference.kt new file mode 100644 index 000000000..83916af48 --- /dev/null +++ b/app/src/main/java/org/mozilla/fenix/settings/cookiebannerhandling/CustomCBHSwitchPreference.kt @@ -0,0 +1,25 @@ +/* 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.settings.cookiebannerhandling + +import android.content.Context +import android.util.AttributeSet +import androidx.preference.SwitchPreference +import org.mozilla.fenix.ext.settings + +/** + * Custom [SwitchPreference] that automatically creates the switch for the + * cookie banner handling feature depending on the current Nimbus configurations. + */ +class CustomCBHSwitchPreference @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, +) : SwitchPreference(context, attrs) { + init { + with(context) { + setDefaultValue(settings().shouldUseCookieBannerPrivateModeDefaultValue) + } + } +} 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 1f5aeba0f..6f4397411 100644 --- a/app/src/main/java/org/mozilla/fenix/utils/Settings.kt +++ b/app/src/main/java/org/mozilla/fenix/utils/Settings.kt @@ -619,9 +619,12 @@ class Settings(private val appContext: Context) : PreferencesHolder { var shouldUseCookieBannerPrivateMode by lazyFeatureFlagPreference( appContext.getPreferenceKey(R.string.pref_key_cookie_banner_private_mode), featureFlag = true, - default = { cookieBannersSection[CookieBannersSection.FEATURE_SETTING_VALUE_PBM] == 1 }, + default = { shouldUseCookieBannerPrivateModeDefaultValue }, ) + val shouldUseCookieBannerPrivateModeDefaultValue: Boolean + get() = cookieBannersSection[CookieBannersSection.FEATURE_SETTING_VALUE_PBM] == 1 + val shouldUseCookieBanner: Boolean get() = cookieBannersSection[CookieBannersSection.FEATURE_SETTING_VALUE] == 1 diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 7f235c20f..8639c9500 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -102,8 +102,7 @@ app:iconSpaceReserved="false" android:title="@string/preferences_https_only_title" /> -