commit 9ec7e465b34cf1063ccf73cbcf47a7c8f2ca795c parent dc2e8729cff00f406992fed91ce7e8f15d74f999 Author: Segun Famisa <sfamisa@mozilla.com> Date: Tue, 25 Nov 2025 13:36:20 +0000 Bug 2001716 - Do not show "remember this decision" checkbox for permissions in private browsing r=android-reviewers,matt-tighe Differential Revision: https://phabricator.services.mozilla.com/D273650 Diffstat:
3 files changed, 38 insertions(+), 9 deletions(-)
diff --git a/mobile/android/fenix/app/src/androidTest/java/org/mozilla/fenix/ui/SitePermissionsTest.kt b/mobile/android/fenix/app/src/androidTest/java/org/mozilla/fenix/ui/SitePermissionsTest.kt @@ -8,6 +8,7 @@ import android.Manifest import android.content.Context import android.hardware.camera2.CameraManager import android.media.AudioManager +import androidx.compose.ui.test.junit4.AndroidComposeTestRule import androidx.core.net.toUri import androidx.test.rule.GrantPermissionRule import mozilla.components.support.ktx.util.PromptAbuserDetector @@ -16,6 +17,7 @@ import org.junit.Rule import org.junit.Test import org.mozilla.fenix.customannotations.SmokeTest import org.mozilla.fenix.helpers.HomeActivityIntentTestRule +import org.mozilla.fenix.helpers.HomeActivityTestRule import org.mozilla.fenix.helpers.MockLocationUpdatesRule import org.mozilla.fenix.helpers.RetryTestRule import org.mozilla.fenix.helpers.TestAssetHelper.waitingTimeLong @@ -23,6 +25,7 @@ import org.mozilla.fenix.helpers.TestHelper.appContext import org.mozilla.fenix.helpers.TestSetup import org.mozilla.fenix.helpers.perf.DetectMemoryLeaksRule import org.mozilla.fenix.ui.robots.browserScreen +import org.mozilla.fenix.ui.robots.homeScreen import org.mozilla.fenix.ui.robots.navigationToolbar /** @@ -36,13 +39,15 @@ class SitePermissionsTest : TestSetup() { private val cameraManager = appContext.getSystemService(Context.CAMERA_SERVICE) as CameraManager private val micManager = appContext.getSystemService(Context.AUDIO_SERVICE) as AudioManager - @get:Rule - val activityTestRule = HomeActivityIntentTestRule( - isPWAsPromptEnabled = false, - isDeleteSitePermissionsEnabled = true, - ) + @get:Rule(order = 0) + val composeTestRule = AndroidComposeTestRule( + HomeActivityIntentTestRule( + isPWAsPromptEnabled = false, + isDeleteSitePermissionsEnabled = true, + ), + ) { it.activity } - @get:Rule + @get:Rule(order = 1) val grantPermissionRule: GrantPermissionRule = GrantPermissionRule.grant( Manifest.permission.RECORD_AUDIO, Manifest.permission.CAMERA, @@ -50,13 +55,13 @@ class SitePermissionsTest : TestSetup() { Manifest.permission.ACCESS_FINE_LOCATION, ) - @get:Rule + @get:Rule(order = 2) val mockLocationUpdatesRule = MockLocationUpdatesRule() - @get:Rule + @get:Rule(order = 3) val memoryLeaksRule = DetectMemoryLeaksRule() - @get:Rule + @get:Rule(order = 4) val retryTestRule = RetryTestRule(3) override fun setUp() { @@ -315,4 +320,17 @@ class SitePermissionsTest : TestSetup() { verifyPageContent("User denied geolocation prompt") } } + + @Test + fun doNotAskAgainIsHiddenForLocationPermissionInPrivateMode() { + homeScreen { + }.togglePrivateBrowsingMode() + + navigationToolbar { + }.enterURLAndEnterToBrowser(testPage.toUri()) { + }.clickGetLocationButton { + verifyLocationPermissionPrompt(testPageHost) + verifyDoNotAskAgainIsHidden() + } + } } diff --git a/mobile/android/fenix/app/src/androidTest/java/org/mozilla/fenix/ui/robots/SitePermissionsRobot.kt b/mobile/android/fenix/app/src/androidTest/java/org/mozilla/fenix/ui/robots/SitePermissionsRobot.kt @@ -16,6 +16,7 @@ import org.mozilla.fenix.helpers.Constants.TAG import org.mozilla.fenix.helpers.DataGenerationHelper.getStringResource import org.mozilla.fenix.helpers.MatcherHelper.assertItemTextEquals import org.mozilla.fenix.helpers.MatcherHelper.assertUIObjectExists +import org.mozilla.fenix.helpers.MatcherHelper.assertUIObjectIsGone import org.mozilla.fenix.helpers.MatcherHelper.itemWithText import org.mozilla.fenix.helpers.TestAssetHelper.waitingTime import org.mozilla.fenix.helpers.TestHelper.mDevice @@ -84,6 +85,12 @@ class SitePermissionsRobot { } } + fun verifyDoNotAskAgainIsHidden() { + Log.i(TAG, "verifyDoNotAskAgainIsHidden: asserting that the \"Remember decision for this site\" check box does not exist") + assertUIObjectIsGone(doNotAskAgainCheckBox()) + Log.i(TAG, "verifyDoNotAskAgainIsHidden: asserted that the \"Remember decision for this site\" check box does not exist") + } + fun verifyNotificationsPermissionPrompt(host: String, blocked: Boolean = false) { if (!blocked) { try { @@ -226,3 +233,6 @@ private fun allowPagePermissionButton() = private fun denyPagePermissionButton() = mDevice.findObject(UiSelector().resourceId("$packageName:id/deny_button")) + +private fun doNotAskAgainCheckBox() = + mDevice.findObject(UiSelector().resourceId("$packageName:id/do_not_ask_again")) diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/browser/BaseBrowserFragment.kt @@ -1257,6 +1257,7 @@ abstract class BaseBrowserFragment : it, ) }, + shouldShowDoNotAskAgainCheckBox = context.components.appStore.state.mode != BrowsingMode.Private, store = store, ), owner = this,