diff --git a/app/src/main/java/org/mozilla/fenix/components/TrackingProtectionPolicyFactory.kt b/app/src/main/java/org/mozilla/fenix/components/TrackingProtectionPolicyFactory.kt index 16a68787d..d101c16d1 100644 --- a/app/src/main/java/org/mozilla/fenix/components/TrackingProtectionPolicyFactory.kt +++ b/app/src/main/java/org/mozilla/fenix/components/TrackingProtectionPolicyFactory.kt @@ -24,7 +24,7 @@ class TrackingProtectionPolicyFactory(private val settings: Settings) { @Suppress("ComplexMethod") fun createTrackingProtectionPolicy( normalMode: Boolean = settings.shouldUseTrackingProtection, - privateMode: Boolean = true + privateMode: Boolean = settings.shouldUseTrackingProtection ): TrackingProtectionPolicy { val trackingProtectionPolicy = when { diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingTrackingProtectionViewHolder.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingTrackingProtectionViewHolder.kt index eee57c745..9d2e00013 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingTrackingProtectionViewHolder.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/onboarding/OnboardingTrackingProtectionViewHolder.kt @@ -77,8 +77,7 @@ class OnboardingTrackingProtectionViewHolder(view: View) : RecyclerView.ViewHold private fun updateTrackingProtectionSetting(enabled: Boolean) { itemView.context.settings().shouldUseTrackingProtection = enabled with(itemView.context.components) { - val policy = core.trackingProtectionPolicyFactory - .createTrackingProtectionPolicy(enabled) + val policy = core.trackingProtectionPolicyFactory.createTrackingProtectionPolicy() useCases.settingsUseCases.updateTrackingProtection.invoke(policy) useCases.sessionUseCases.reload.invoke() } diff --git a/app/src/main/java/org/mozilla/fenix/settings/TrackingProtectionFragment.kt b/app/src/main/java/org/mozilla/fenix/settings/TrackingProtectionFragment.kt index e984b0013..029183ac5 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/TrackingProtectionFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/TrackingProtectionFragment.kt @@ -64,8 +64,7 @@ class TrackingProtectionFragment : PreferenceFragmentCompat() { preference.context.settings().shouldUseTrackingProtection = trackingProtectionOn with(preference.context.components) { - val policy = core.trackingProtectionPolicyFactory - .createTrackingProtectionPolicy(trackingProtectionOn) + val policy = core.trackingProtectionPolicyFactory.createTrackingProtectionPolicy() useCases.settingsUseCases.updateTrackingProtection(policy) useCases.sessionUseCases.reload() } diff --git a/app/src/test/java/org/mozilla/fenix/components/TrackingProtectionPolicyFactoryTest.kt b/app/src/test/java/org/mozilla/fenix/components/TrackingProtectionPolicyFactoryTest.kt index 94f1ae5f2..2344bf4b8 100644 --- a/app/src/test/java/org/mozilla/fenix/components/TrackingProtectionPolicyFactoryTest.kt +++ b/app/src/test/java/org/mozilla/fenix/components/TrackingProtectionPolicyFactoryTest.kt @@ -198,6 +198,18 @@ class TrackingProtectionPolicyFactoryTest { // `normalMode = true, privateMode = true` can never be shown to the user } + @Test + fun `factory should follow global ETP settings by default`() { + var useETPFactory = TrackingProtectionPolicyFactory(mockSettings(useTrackingProtection = true)) + var policy = useETPFactory.createTrackingProtectionPolicy() + assertTrue(policy.useForPrivateSessions) + assertTrue(policy.useForRegularSessions) + + useETPFactory = TrackingProtectionPolicyFactory(mockSettings(useTrackingProtection = false)) + policy = useETPFactory.createTrackingProtectionPolicy() + assertEquals(policy, EngineSession.TrackingProtectionPolicy.none()) + } + @Test fun `custom tabs should respect their privacy rules`() { val allSettings = listOf( @@ -315,10 +327,12 @@ class TrackingProtectionPolicyFactoryTest { private fun mockSettings( useStrict: Boolean = false, - useCustom: Boolean = false + useCustom: Boolean = false, + useTrackingProtection: Boolean = false ): Settings = mockk { every { useStrictTrackingProtection } returns useStrict every { useCustomTrackingProtection } returns useCustom + every { shouldUseTrackingProtection } returns useTrackingProtection } @Suppress("LongParameterList")