commit fdc920a64e87b8bd2ead1a740c545a9236ac5deb parent 418a8f52a156611fb653b6a3abea771d8defab31 Author: t-p-white <towhite@mozilla.com> Date: Wed, 15 Oct 2025 18:54:33 +0000 Bug 1994129 - Fix to ensure termsOfUseMaxDisplayCount retrieves the most up-to-date value from Nimbus. r=android-reviewers,rebecatudor273 Differential Revision: https://phabricator.services.mozilla.com/D268712 Diffstat:
3 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/termsofuse/TermsOfUseManager.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/termsofuse/TermsOfUseManager.kt @@ -53,7 +53,7 @@ class TermsOfUseManager(private val settings: Settings) { ): Boolean { if (settings.hasAcceptedTermsOfService) return false if (!settings.isTermsOfUsePromptEnabled) return false - if (settings.termsOfUsePromptDisplayedCount >= settings.termsOfUseMaxDisplayCount) return false + if (settings.termsOfUsePromptDisplayedCount >= settings.getTermsOfUseMaxDisplayCount()) return false val isFirstCheck = isFirstCheckSinceStartingApp isFirstCheckSinceStartingApp = false diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/utils/Settings.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/utils/Settings.kt @@ -636,8 +636,10 @@ class Settings(private val appContext: Context) : PreferencesHolder { /** * The maximum number of times the Terms of Use prompt should be displayed. + * + * Use a function to ensure the most up-to-date Nimbus value is retrieved. */ - var termsOfUseMaxDisplayCount = FxNimbus.features.termsOfUsePrompt.value().maxDisplayCount + fun getTermsOfUseMaxDisplayCount() = FxNimbus.features.termsOfUsePrompt.value().maxDisplayCount /** * The total number of times the Terms of Use prompt has been displayed. diff --git a/mobile/android/fenix/app/src/test/java/org/mozilla/fenix/termsofuse/TermsOfUseManagerTest.kt b/mobile/android/fenix/app/src/test/java/org/mozilla/fenix/termsofuse/TermsOfUseManagerTest.kt @@ -5,6 +5,7 @@ package org.mozilla.fenix.termsofuse import io.mockk.every +import io.mockk.spyk import junit.framework.TestCase.assertFalse import junit.framework.TestCase.assertTrue import mozilla.components.support.test.robolectric.testContext @@ -144,12 +145,13 @@ class TermsOfUseManagerTest { @Test fun `GIVEN other conditions satisfied WHEN prompt has not been displayed THEN shouldShowTermsOfUsePrompt returns true`() { + val settings = spyk(settings) settings.hasAcceptedTermsOfService = false settings.isTermsOfUsePromptEnabled = true settings.hasPostponedAcceptingTermsOfUse = false // Prompt display count configuration. settings.termsOfUsePromptDisplayedCount = 0 - settings.termsOfUseMaxDisplayCount = 2 + every { settings.getTermsOfUseMaxDisplayCount() } returns 2 termsOfUseManager.onStart() @@ -158,24 +160,26 @@ class TermsOfUseManagerTest { @Test fun `GIVEN other conditions satisfied WHEN prompt has been displayed the maximum number of times THEN shouldShowTermsOfUsePrompt returns false`() { + val settings = spyk(settings) settings.hasAcceptedTermsOfService = false settings.isTermsOfUsePromptEnabled = true settings.hasPostponedAcceptingTermsOfUse = false // Prompt display count configuration. settings.termsOfUsePromptDisplayedCount = 2 - settings.termsOfUseMaxDisplayCount = 2 + every { settings.getTermsOfUseMaxDisplayCount() } returns 2 assertFalse(termsOfUseManager.shouldShowTermsOfUsePrompt()) } @Test fun `GIVEN other conditions satisfied WHEN prompt has been displayed more than the maximum number of times THEN shouldShowTermsOfUsePrompt returns false`() { + val settings = spyk(settings) settings.hasAcceptedTermsOfService = false settings.isTermsOfUsePromptEnabled = true settings.hasPostponedAcceptingTermsOfUse = false // Prompt display count configuration. settings.termsOfUsePromptDisplayedCount = 3 - settings.termsOfUseMaxDisplayCount = 2 + every { settings.getTermsOfUseMaxDisplayCount() } returns 2 assertFalse(termsOfUseManager.shouldShowTermsOfUsePrompt()) }