From 1e4b5309455bfa4d41cc235d3eeca10e26fadac9 Mon Sep 17 00:00:00 2001 From: Arturo Mejia Date: Wed, 23 Nov 2022 13:51:27 -0500 Subject: [PATCH] Bug 1801648 - Fix autoplay settings are not getting updated in private mode --- .../permission/GeckoSitePermissionsStorage.kt | 21 +---------- .../permission/GeckoSitePermissionsStorageTest.kt | 41 ---------------------- .../OnDiskSitePermissionsStorage.kt | 2 +- .../OnDiskSitePermissionsStorageTest.kt | 17 +++------ mobile/android/docs/changelog.md | 3 ++ 5 files changed, 9 insertions(+), 75 deletions(-) diff --git a/mobile/android/android-components/components/browser/engine-gecko/src/main/java/mozilla/components/browser/engine/gecko/permission/GeckoSitePermissionsStorage.kt b/mobile/android/android-components/components/browser/engine-gecko/src/main/java/mozilla/components/browser/engine/gecko/permission/GeckoSitePermissionsStorage.kt index 28870620ce7a..6feccc4f86c1 100644 --- a/mobile/android/android-components/components/browser/engine-gecko/src/main/java/mozilla/components/browser/engine/gecko/permission/GeckoSitePermissionsStorage.kt +++ b/mobile/android/android-components/components/browser/engine-gecko/src/main/java/mozilla/components/browser/engine/gecko/permission/GeckoSitePermissionsStorage.kt @@ -97,26 +97,7 @@ class GeckoSitePermissionsStorage( onDiskStorage.findSitePermissionsBy(origin, private = private) val geckoPermissions = findGeckoContentPermissionBy(origin, includeTemporary, private).groupByType() - return mergePermissions(onDiskPermission, geckoPermissions)?.resetNoGeckoPermissionIfNeeded( - private, - ) - } - - @VisibleForTesting - internal fun SitePermissions?.resetNoGeckoPermissionIfNeeded(private: Boolean): SitePermissions? { - return if (private) { - /** - * As part of the GeckoView/AC site permissions migration, - * we ended up with a fragmented permissions storage in AC. - * Where some permissions are store directly by gecko and others - * store locally in AC as GeckoView doesn't offer storage support for them. - * The permissions below are stored and manged by AC. - * For more references see https://bugzilla.mozilla.org/show_bug.cgi?id=1796614 - */ - this?.copy(camera = NO_DECISION, microphone = NO_DECISION, bluetooth = NO_DECISION) - } else { - this - } + return mergePermissions(onDiskPermission, geckoPermissions) } override suspend fun getSitePermissionsPaged(): DataSource.Factory { diff --git a/mobile/android/android-components/components/browser/engine-gecko/src/test/java/mozilla/components/browser/engine/gecko/permission/GeckoSitePermissionsStorageTest.kt b/mobile/android/android-components/components/browser/engine-gecko/src/test/java/mozilla/components/browser/engine/gecko/permission/GeckoSitePermissionsStorageTest.kt index fb0888b76fb2..ced8b7643b47 100644 --- a/mobile/android/android-components/components/browser/engine-gecko/src/test/java/mozilla/components/browser/engine/gecko/permission/GeckoSitePermissionsStorageTest.kt +++ b/mobile/android/android-components/components/browser/engine-gecko/src/test/java/mozilla/components/browser/engine/gecko/permission/GeckoSitePermissionsStorageTest.kt @@ -711,47 +711,6 @@ class GeckoSitePermissionsStorageTest { assertEquals(VALUE_ALLOW, AutoplayStatus.ALLOWED.toGeckoStatus()) } - @Test - fun `GIVEN a private site WHEN findSitePermissionsBy THEN all no gecko permissions should be reset`() = - runTest { - val sitePermissions = SitePermissions( - origin = "mozilla.dev", - localStorage = ALLOWED, - crossOriginStorageAccess = ALLOWED, - location = ALLOWED, - notification = ALLOWED, - microphone = ALLOWED, - camera = ALLOWED, - bluetooth = ALLOWED, - mediaKeySystemAccess = ALLOWED, - autoplayAudible = AutoplayStatus.ALLOWED, - autoplayInaudible = AutoplayStatus.ALLOWED, - savedAt = 0, - ) - - doReturn(sitePermissions).`when`(onDiskStorage) - .findSitePermissionsBy( - origin = "mozilla.dev", - includeTemporary = false, - private = true, - ) - doReturn(null).`when`(geckoStorage) - .findGeckoContentPermissionBy( - origin = "mozilla.dev", - includeTemporary = false, - private = true, - ) - - val foundPermissions = geckoStorage.findSitePermissionsBy( - origin = "mozilla.dev", - private = true, - )!! - - assertEquals(NO_DECISION, foundPermissions.microphone) - assertEquals(NO_DECISION, foundPermissions.bluetooth) - assertEquals(NO_DECISION, foundPermissions.camera) - } - private fun createNewSitePermission(): SitePermissions { return SitePermissions( origin = "mozilla.dev", diff --git a/mobile/android/android-components/components/feature/sitepermissions/src/main/java/mozilla/components/feature/sitepermissions/OnDiskSitePermissionsStorage.kt b/mobile/android/android-components/components/feature/sitepermissions/src/main/java/mozilla/components/feature/sitepermissions/OnDiskSitePermissionsStorage.kt index 4c82bdcbc822..9941761d752a 100644 --- a/mobile/android/android-components/components/feature/sitepermissions/src/main/java/mozilla/components/feature/sitepermissions/OnDiskSitePermissionsStorage.kt +++ b/mobile/android/android-components/components/feature/sitepermissions/src/main/java/mozilla/components/feature/sitepermissions/OnDiskSitePermissionsStorage.kt @@ -89,7 +89,7 @@ class OnDiskSitePermissionsStorage( includeTemporary: Boolean, private: Boolean, ): SitePermissions? { - if (private) return SitePermissions(origin, savedAt = 0) + if (private) return null return database .sitePermissionsDao() .getSitePermissionsBy(origin) diff --git a/mobile/android/android-components/components/feature/sitepermissions/src/test/java/mozilla/components/feature/sitepermissions/OnDiskSitePermissionsStorageTest.kt b/mobile/android/android-components/components/feature/sitepermissions/src/test/java/mozilla/components/feature/sitepermissions/OnDiskSitePermissionsStorageTest.kt index 140eab0abf35..37e65e36b96c 100644 --- a/mobile/android/android-components/components/feature/sitepermissions/src/test/java/mozilla/components/feature/sitepermissions/OnDiskSitePermissionsStorageTest.kt +++ b/mobile/android/android-components/components/feature/sitepermissions/src/test/java/mozilla/components/feature/sitepermissions/OnDiskSitePermissionsStorageTest.kt @@ -33,6 +33,7 @@ import mozilla.components.support.test.any import mozilla.components.support.test.mock import org.junit.Assert.assertEquals import org.junit.Assert.assertFalse +import org.junit.Assert.assertNull import org.junit.Before import org.junit.Test import org.junit.runner.RunWith @@ -132,19 +133,9 @@ class OnDiskSitePermissionsStorageTest { .getSitePermissionsBy(origin = dbPermission.origin) val foundPermissions = - storage.findSitePermissionsBy(dbPermission.origin, private = true)!! - - assertEquals(dbPermission.origin, foundPermissions.origin) - assertEquals(NO_DECISION, foundPermissions.location) - assertEquals(NO_DECISION, foundPermissions.notification) - assertEquals(NO_DECISION, foundPermissions.microphone) - assertEquals(NO_DECISION, foundPermissions.bluetooth) - assertEquals(NO_DECISION, foundPermissions.localStorage) - assertEquals(AutoplayStatus.BLOCKED, foundPermissions.autoplayAudible) - assertEquals(AutoplayStatus.ALLOWED, foundPermissions.autoplayInaudible) - assertEquals(NO_DECISION, foundPermissions.mediaKeySystemAccess) - assertEquals(NO_DECISION, foundPermissions.crossOriginStorageAccess) - assertEquals(dbPermission.savedAt, foundPermissions.savedAt) + storage.findSitePermissionsBy(dbPermission.origin, private = true) + + assertNull(foundPermissions) } @Test diff --git a/mobile/android/docs/changelog.md b/mobile/android/docs/changelog.md index add1d84fe10e..2efb64642859 100644 --- a/mobile/android/docs/changelog.md +++ b/mobile/android/docs/changelog.md @@ -28,6 +28,9 @@ permalink: /changelog/ * **browser-engine-gecko** * 🆕 Added `GeckoCookieBannersStorage.kt` to manage cookie banner exceptions [bug #1797605](https://bugzilla.mozilla.org/show_bug.cgi?id=1797605). +* **concept-engine** + * 🚒 Bug fixed [bug #1801648](https://bugzilla.mozilla.org/show_bug.cgi?id=1801648). Fix autoplay settings are not getting updated in private mode. + # 108.0.0 * [Commits](https://github.com/mozilla-mobile/firefox-android/compare/v107.0.0...v108.0.0) * [Dependencies](https://github.com/mozilla-mobile/firefox-android/blob/v108.0.0/android-components/buildSrc/src/main/java/Dependencies.kt) -- 2.11.4.GIT