Bug 1835937 - Fix crash when changing autoplay site permission in private browsing

fenix/116.0
jackyzy823 1 year ago committed by mergify[bot]
parent 22238a08b6
commit 72faf4ef40

@ -24,8 +24,8 @@ class PermissionStorage(
* Persists the [sitePermissions] provided as a parameter.
* @param sitePermissions the [sitePermissions] to be stored.
*/
suspend fun add(sitePermissions: SitePermissions) = withContext(dispatcher) {
permissionsStorage.save(sitePermissions, private = false)
suspend fun add(sitePermissions: SitePermissions, private: Boolean) = withContext(dispatcher) {
permissionsStorage.save(sitePermissions, private = private)
}
/**

@ -120,6 +120,7 @@ class DefaultQuickSettingsController(
private val displayPermissions: () -> Unit,
private val engine: Engine = context.components.core.engine,
) : QuickSettingsController {
override fun handlePermissionsShown() {
displayPermissions()
}
@ -170,7 +171,7 @@ class DefaultQuickSettingsController(
}
val sitePermissions =
autoplayValue.createSitePermissionsFromCustomRules(origin, settings)
handleAutoplayAdd(sitePermissions)
handleAutoplayAdd(sitePermissions, tab?.content?.private ?: false)
sitePermissions
} else {
val newPermission = autoplayValue.updateSitePermissions(permissions)
@ -298,9 +299,9 @@ class DefaultQuickSettingsController(
}
@VisibleForTesting
internal fun handleAutoplayAdd(sitePermissions: SitePermissions) {
internal fun handleAutoplayAdd(sitePermissions: SitePermissions, private: Boolean) {
ioScope.launch {
permissionStorage.add(sitePermissions)
permissionStorage.add(sitePermissions, private)
reload(sessionId)
}
}

@ -28,11 +28,22 @@ class PermissionStorageTest {
val sitePermissionsStorage: SitePermissionsStorage = mockk(relaxed = true)
val storage = PermissionStorage(testContext, this.coroutineContext, sitePermissionsStorage)
storage.add(sitePermissions)
storage.add(sitePermissions, false)
coVerify { sitePermissionsStorage.save(sitePermissions, private = false) }
}
@Test
fun `add permission in privateBrowsing`() = runTest {
val sitePermissions: SitePermissions = mockk(relaxed = true)
val sitePermissionsStorage: SitePermissionsStorage = mockk(relaxed = true)
val storage = PermissionStorage(testContext, this.coroutineContext, sitePermissionsStorage)
storage.add(sitePermissions, true)
coVerify { sitePermissionsStorage.save(sitePermissions, private = true) }
}
@Test
fun `find sitePermissions by origin`() = runTest {
val sitePermissions: SitePermissions = mockk(relaxed = true)

@ -210,14 +210,14 @@ class DefaultQuickSettingsControllerTest {
val autoplayValue = mockk<AutoplayValue.AllowAll>(relaxed = true)
every { store.dispatch(any()) } returns mockk()
every { controller.handleAutoplayAdd(any()) } returns Unit
every { controller.handleAutoplayAdd(any(), any()) } returns Unit
controller.sitePermissions = null
controller.handleAutoplayChanged(autoplayValue)
verify {
controller.handleAutoplayAdd(any())
controller.handleAutoplayAdd(any(), any())
store.dispatch(any())
}
}
@ -227,7 +227,7 @@ class DefaultQuickSettingsControllerTest {
val autoplayValue = mockk<AutoplayValue.AllowAll>(relaxed = true)
every { store.dispatch(any()) } returns mockk()
every { controller.handleAutoplayAdd(any()) } returns Unit
every { controller.handleAutoplayAdd(any(), any()) } returns Unit
every { controller.handlePermissionsChange(any()) } returns Unit
every { autoplayValue.updateSitePermissions(any()) } returns mockk()
@ -296,11 +296,11 @@ class DefaultQuickSettingsControllerTest {
runTestOnMain {
val testPermissions = mockk<SitePermissions>()
controller.handleAutoplayAdd(testPermissions)
controller.handleAutoplayAdd(testPermissions, true)
advanceUntilIdle()
coVerifyOrder {
permissionStorage.add(testPermissions)
permissionStorage.add(testPermissions, true)
reload(tab.id)
}
}

Loading…
Cancel
Save