For #20250 - Adds FLAG_SECURE to TabsTray dialog

upstream-sync
codrut.topliceanu 3 years ago committed by mergify[bot]
parent d530f5b773
commit 083d50aafd

@ -4,6 +4,7 @@
package org.mozilla.fenix.tabstray package org.mozilla.fenix.tabstray
import android.view.WindowManager
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
@ -22,7 +23,8 @@ import org.mozilla.fenix.utils.Settings
class SecureTabsTrayBinding( class SecureTabsTrayBinding(
store: TabsTrayStore, store: TabsTrayStore,
private val settings: Settings, private val settings: Settings,
private val fragment: Fragment private val fragment: Fragment,
private val dialog: TabsTrayDialog
) : AbstractBinding<TabsTrayState>(store) { ) : AbstractBinding<TabsTrayState>(store) {
override suspend fun onState(flow: Flow<TabsTrayState>) { override suspend fun onState(flow: Flow<TabsTrayState>) {
@ -36,8 +38,10 @@ class SecureTabsTrayBinding(
if (state.selectedPage == Page.PrivateTabs && if (state.selectedPage == Page.PrivateTabs &&
!settings.allowScreenshotsInPrivateMode) { !settings.allowScreenshotsInPrivateMode) {
fragment.secure() fragment.secure()
dialog.window?.addFlags(WindowManager.LayoutParams.FLAG_SECURE)
} else if (!settings.lastKnownMode.isPrivate) { } else if (!settings.lastKnownMode.isPrivate) {
fragment.removeSecure() fragment.removeSecure()
dialog.window?.clearFlags(WindowManager.LayoutParams.FLAG_SECURE)
} }
} }
} }

@ -278,7 +278,8 @@ class TabsTrayFragment : AppCompatDialogFragment() {
feature = SecureTabsTrayBinding( feature = SecureTabsTrayBinding(
store = tabsTrayStore, store = tabsTrayStore,
settings = requireComponents.settings, settings = requireComponents.settings,
fragment = this fragment = this,
dialog = dialog as TabsTrayDialog
), ),
owner = this, owner = this,
view = view view = view

@ -4,6 +4,8 @@
package org.mozilla.fenix.tabstray package org.mozilla.fenix.tabstray
import android.view.Window
import android.view.WindowManager
import androidx.appcompat.content.res.AppCompatResources import androidx.appcompat.content.res.AppCompatResources
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import io.mockk.Runs import io.mockk.Runs
@ -31,6 +33,8 @@ class SecureTabsTrayBindingTest {
private val settings: Settings = mockk(relaxed = true) private val settings: Settings = mockk(relaxed = true)
private val fragment: Fragment = mockk(relaxed = true) private val fragment: Fragment = mockk(relaxed = true)
private val dialog: TabsTrayDialog = mockk(relaxed = true)
private val window: Window = mockk(relaxed = true)
@Before @Before
fun setup() { fun setup() {
@ -38,6 +42,9 @@ class SecureTabsTrayBindingTest {
every { AppCompatResources.getDrawable(any(), any()) } returns mockk(relaxed = true) every { AppCompatResources.getDrawable(any(), any()) } returns mockk(relaxed = true)
every { fragment.secure() } just Runs every { fragment.secure() } just Runs
every { fragment.removeSecure() } just Runs every { fragment.removeSecure() } just Runs
every { dialog.window } returns window
every { window.addFlags(any()) } just Runs
every { window.clearFlags(any()) } just Runs
} }
@Test @Test
@ -46,7 +53,8 @@ class SecureTabsTrayBindingTest {
val secureTabsTrayBinding = SecureTabsTrayBinding( val secureTabsTrayBinding = SecureTabsTrayBinding(
store = tabsTrayStore, store = tabsTrayStore,
settings = settings, settings = settings,
fragment = fragment fragment = fragment,
dialog = dialog
) )
secureTabsTrayBinding.start() secureTabsTrayBinding.start()
@ -54,6 +62,7 @@ class SecureTabsTrayBindingTest {
tabsTrayStore.waitUntilIdle() tabsTrayStore.waitUntilIdle()
verify { fragment.secure() } verify { fragment.secure() }
verify { window.addFlags(WindowManager.LayoutParams.FLAG_SECURE) }
} }
@Test @Test
@ -62,7 +71,8 @@ class SecureTabsTrayBindingTest {
val secureTabsTrayBinding = SecureTabsTrayBinding( val secureTabsTrayBinding = SecureTabsTrayBinding(
store = tabsTrayStore, store = tabsTrayStore,
settings = settings, settings = settings,
fragment = fragment fragment = fragment,
dialog = dialog
) )
every { settings.allowScreenshotsInPrivateMode } returns true every { settings.allowScreenshotsInPrivateMode } returns true
@ -71,6 +81,7 @@ class SecureTabsTrayBindingTest {
tabsTrayStore.waitUntilIdle() tabsTrayStore.waitUntilIdle()
verify { fragment.removeSecure() } verify { fragment.removeSecure() }
verify { window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE) }
} }
@Test @Test
@ -80,7 +91,8 @@ class SecureTabsTrayBindingTest {
val secureTabsTrayBinding = SecureTabsTrayBinding( val secureTabsTrayBinding = SecureTabsTrayBinding(
store = tabsTrayStore, store = tabsTrayStore,
settings = settings, settings = settings,
fragment = fragment fragment = fragment,
dialog = dialog
) )
secureTabsTrayBinding.start() secureTabsTrayBinding.start()
@ -88,6 +100,7 @@ class SecureTabsTrayBindingTest {
tabsTrayStore.waitUntilIdle() tabsTrayStore.waitUntilIdle()
verify { fragment.removeSecure() } verify { fragment.removeSecure() }
verify { window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE) }
} }
@Test @Test
@ -97,7 +110,8 @@ class SecureTabsTrayBindingTest {
val secureTabsTrayBinding = SecureTabsTrayBinding( val secureTabsTrayBinding = SecureTabsTrayBinding(
store = tabsTrayStore, store = tabsTrayStore,
settings = settings, settings = settings,
fragment = fragment fragment = fragment,
dialog = dialog
) )
secureTabsTrayBinding.start() secureTabsTrayBinding.start()
@ -105,5 +119,6 @@ class SecureTabsTrayBindingTest {
tabsTrayStore.waitUntilIdle() tabsTrayStore.waitUntilIdle()
verify(exactly = 0) { fragment.removeSecure() } verify(exactly = 0) { fragment.removeSecure() }
verify(exactly = 0) { window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE) }
} }
} }

Loading…
Cancel
Save