Disable lockscreen shortcuts when the user enters lockdown mode
When lockdown mode is triggered, disable the lockscreen shortcuts until the user has left lockdown mode Bug: b/285014861 Test: atest KeyguardQuickAffordanceInteractorTest.kt Test: manual - while on lockscreen with quick affordance visible, enable lockdown mode. Observe the quick affordance becoming hidden. Unlock device, go back to lockscreen, and observe the quick affordance return. (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:09c1367cc5c8c7d63ed5022b552c79f72a87b61e) Change-Id: I7755cf17893e3f98aa66640d68c43bba8bbe7459
This commit is contained in:
@@ -35,6 +35,7 @@ import com.android.systemui.dock.retrieveIsDocked
|
|||||||
import com.android.systemui.flags.FeatureFlags
|
import com.android.systemui.flags.FeatureFlags
|
||||||
import com.android.systemui.flags.Flags
|
import com.android.systemui.flags.Flags
|
||||||
import com.android.systemui.keyguard.data.quickaffordance.KeyguardQuickAffordanceConfig
|
import com.android.systemui.keyguard.data.quickaffordance.KeyguardQuickAffordanceConfig
|
||||||
|
import com.android.systemui.keyguard.data.repository.BiometricSettingsRepository
|
||||||
import com.android.systemui.keyguard.data.repository.KeyguardQuickAffordanceRepository
|
import com.android.systemui.keyguard.data.repository.KeyguardQuickAffordanceRepository
|
||||||
import com.android.systemui.keyguard.domain.model.KeyguardQuickAffordanceModel
|
import com.android.systemui.keyguard.domain.model.KeyguardQuickAffordanceModel
|
||||||
import com.android.systemui.keyguard.domain.quickaffordance.KeyguardQuickAffordanceRegistry
|
import com.android.systemui.keyguard.domain.quickaffordance.KeyguardQuickAffordanceRegistry
|
||||||
@@ -77,6 +78,7 @@ constructor(
|
|||||||
private val logger: KeyguardQuickAffordancesMetricsLogger,
|
private val logger: KeyguardQuickAffordancesMetricsLogger,
|
||||||
private val devicePolicyManager: DevicePolicyManager,
|
private val devicePolicyManager: DevicePolicyManager,
|
||||||
private val dockManager: DockManager,
|
private val dockManager: DockManager,
|
||||||
|
private val biometricSettingsRepository: BiometricSettingsRepository,
|
||||||
@Background private val backgroundDispatcher: CoroutineDispatcher,
|
@Background private val backgroundDispatcher: CoroutineDispatcher,
|
||||||
@Application private val appContext: Context,
|
@Application private val appContext: Context,
|
||||||
) {
|
) {
|
||||||
@@ -107,9 +109,10 @@ constructor(
|
|||||||
quickAffordanceAlwaysVisible(position),
|
quickAffordanceAlwaysVisible(position),
|
||||||
keyguardInteractor.isDozing,
|
keyguardInteractor.isDozing,
|
||||||
keyguardInteractor.isKeyguardShowing,
|
keyguardInteractor.isKeyguardShowing,
|
||||||
keyguardInteractor.isQuickSettingsVisible
|
keyguardInteractor.isQuickSettingsVisible,
|
||||||
) { affordance, isDozing, isKeyguardShowing, isQuickSettingsVisible ->
|
biometricSettingsRepository.isCurrentUserInLockdown,
|
||||||
if (!isDozing && isKeyguardShowing && !isQuickSettingsVisible) {
|
) { affordance, isDozing, isKeyguardShowing, isQuickSettingsVisible, isUserInLockdown ->
|
||||||
|
if (!isDozing && isKeyguardShowing && !isQuickSettingsVisible && !isUserInLockdown) {
|
||||||
affordance
|
affordance
|
||||||
} else {
|
} else {
|
||||||
KeyguardQuickAffordanceModel.Hidden
|
KeyguardQuickAffordanceModel.Hidden
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ import com.android.systemui.keyguard.data.quickaffordance.FakeKeyguardQuickAffor
|
|||||||
import com.android.systemui.keyguard.data.quickaffordance.KeyguardQuickAffordanceLegacySettingSyncer
|
import com.android.systemui.keyguard.data.quickaffordance.KeyguardQuickAffordanceLegacySettingSyncer
|
||||||
import com.android.systemui.keyguard.data.quickaffordance.KeyguardQuickAffordanceLocalUserSelectionManager
|
import com.android.systemui.keyguard.data.quickaffordance.KeyguardQuickAffordanceLocalUserSelectionManager
|
||||||
import com.android.systemui.keyguard.data.quickaffordance.KeyguardQuickAffordanceRemoteUserSelectionManager
|
import com.android.systemui.keyguard.data.quickaffordance.KeyguardQuickAffordanceRemoteUserSelectionManager
|
||||||
|
import com.android.systemui.keyguard.data.repository.FakeBiometricSettingsRepository
|
||||||
import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository
|
import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository
|
||||||
import com.android.systemui.keyguard.data.repository.KeyguardQuickAffordanceRepository
|
import com.android.systemui.keyguard.data.repository.KeyguardQuickAffordanceRepository
|
||||||
import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
|
import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
|
||||||
@@ -99,6 +100,7 @@ class CustomizationProviderTest : SysuiTestCase() {
|
|||||||
@Mock private lateinit var logger: KeyguardQuickAffordancesMetricsLogger
|
@Mock private lateinit var logger: KeyguardQuickAffordancesMetricsLogger
|
||||||
|
|
||||||
private lateinit var dockManager: DockManagerFake
|
private lateinit var dockManager: DockManagerFake
|
||||||
|
private lateinit var biometricSettingsRepository: FakeBiometricSettingsRepository
|
||||||
|
|
||||||
private lateinit var underTest: CustomizationProvider
|
private lateinit var underTest: CustomizationProvider
|
||||||
private lateinit var testScope: TestScope
|
private lateinit var testScope: TestScope
|
||||||
@@ -112,6 +114,7 @@ class CustomizationProviderTest : SysuiTestCase() {
|
|||||||
whenever(backgroundHandler.looper).thenReturn(TestableLooper.get(this).looper)
|
whenever(backgroundHandler.looper).thenReturn(TestableLooper.get(this).looper)
|
||||||
|
|
||||||
dockManager = DockManagerFake()
|
dockManager = DockManagerFake()
|
||||||
|
biometricSettingsRepository = FakeBiometricSettingsRepository()
|
||||||
|
|
||||||
underTest = CustomizationProvider()
|
underTest = CustomizationProvider()
|
||||||
val testDispatcher = UnconfinedTestDispatcher()
|
val testDispatcher = UnconfinedTestDispatcher()
|
||||||
@@ -199,6 +202,7 @@ class CustomizationProviderTest : SysuiTestCase() {
|
|||||||
logger = logger,
|
logger = logger,
|
||||||
devicePolicyManager = devicePolicyManager,
|
devicePolicyManager = devicePolicyManager,
|
||||||
dockManager = dockManager,
|
dockManager = dockManager,
|
||||||
|
biometricSettingsRepository = biometricSettingsRepository,
|
||||||
backgroundDispatcher = testDispatcher,
|
backgroundDispatcher = testDispatcher,
|
||||||
appContext = mContext,
|
appContext = mContext,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ import com.android.systemui.keyguard.data.quickaffordance.KeyguardQuickAffordanc
|
|||||||
import com.android.systemui.keyguard.data.quickaffordance.KeyguardQuickAffordanceLegacySettingSyncer
|
import com.android.systemui.keyguard.data.quickaffordance.KeyguardQuickAffordanceLegacySettingSyncer
|
||||||
import com.android.systemui.keyguard.data.quickaffordance.KeyguardQuickAffordanceLocalUserSelectionManager
|
import com.android.systemui.keyguard.data.quickaffordance.KeyguardQuickAffordanceLocalUserSelectionManager
|
||||||
import com.android.systemui.keyguard.data.quickaffordance.KeyguardQuickAffordanceRemoteUserSelectionManager
|
import com.android.systemui.keyguard.data.quickaffordance.KeyguardQuickAffordanceRemoteUserSelectionManager
|
||||||
|
import com.android.systemui.keyguard.data.repository.FakeBiometricSettingsRepository
|
||||||
import com.android.systemui.keyguard.data.repository.KeyguardQuickAffordanceRepository
|
import com.android.systemui.keyguard.data.repository.KeyguardQuickAffordanceRepository
|
||||||
import com.android.systemui.keyguard.domain.quickaffordance.FakeKeyguardQuickAffordanceRegistry
|
import com.android.systemui.keyguard.domain.quickaffordance.FakeKeyguardQuickAffordanceRegistry
|
||||||
import com.android.systemui.keyguard.shared.quickaffordance.KeyguardQuickAffordancePosition
|
import com.android.systemui.keyguard.shared.quickaffordance.KeyguardQuickAffordancePosition
|
||||||
@@ -235,6 +236,7 @@ class KeyguardQuickAffordanceInteractorParameterizedTest : SysuiTestCase() {
|
|||||||
@JvmField @Parameter(4) var startActivity: Boolean = false
|
@JvmField @Parameter(4) var startActivity: Boolean = false
|
||||||
private lateinit var homeControls: FakeKeyguardQuickAffordanceConfig
|
private lateinit var homeControls: FakeKeyguardQuickAffordanceConfig
|
||||||
private lateinit var dockManager: DockManagerFake
|
private lateinit var dockManager: DockManagerFake
|
||||||
|
private lateinit var biometricSettingsRepository: FakeBiometricSettingsRepository
|
||||||
private lateinit var userTracker: UserTracker
|
private lateinit var userTracker: UserTracker
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
@@ -246,6 +248,7 @@ class KeyguardQuickAffordanceInteractorParameterizedTest : SysuiTestCase() {
|
|||||||
homeControls =
|
homeControls =
|
||||||
FakeKeyguardQuickAffordanceConfig(BuiltInKeyguardQuickAffordanceKeys.HOME_CONTROLS)
|
FakeKeyguardQuickAffordanceConfig(BuiltInKeyguardQuickAffordanceKeys.HOME_CONTROLS)
|
||||||
dockManager = DockManagerFake()
|
dockManager = DockManagerFake()
|
||||||
|
biometricSettingsRepository = FakeBiometricSettingsRepository()
|
||||||
val quickAccessWallet =
|
val quickAccessWallet =
|
||||||
FakeKeyguardQuickAffordanceConfig(
|
FakeKeyguardQuickAffordanceConfig(
|
||||||
BuiltInKeyguardQuickAffordanceKeys.QUICK_ACCESS_WALLET
|
BuiltInKeyguardQuickAffordanceKeys.QUICK_ACCESS_WALLET
|
||||||
@@ -333,6 +336,7 @@ class KeyguardQuickAffordanceInteractorParameterizedTest : SysuiTestCase() {
|
|||||||
logger = logger,
|
logger = logger,
|
||||||
devicePolicyManager = devicePolicyManager,
|
devicePolicyManager = devicePolicyManager,
|
||||||
dockManager = dockManager,
|
dockManager = dockManager,
|
||||||
|
biometricSettingsRepository = biometricSettingsRepository,
|
||||||
backgroundDispatcher = testDispatcher,
|
backgroundDispatcher = testDispatcher,
|
||||||
appContext = mContext,
|
appContext = mContext,
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ import com.android.systemui.keyguard.data.quickaffordance.KeyguardQuickAffordanc
|
|||||||
import com.android.systemui.keyguard.data.quickaffordance.KeyguardQuickAffordanceLegacySettingSyncer
|
import com.android.systemui.keyguard.data.quickaffordance.KeyguardQuickAffordanceLegacySettingSyncer
|
||||||
import com.android.systemui.keyguard.data.quickaffordance.KeyguardQuickAffordanceLocalUserSelectionManager
|
import com.android.systemui.keyguard.data.quickaffordance.KeyguardQuickAffordanceLocalUserSelectionManager
|
||||||
import com.android.systemui.keyguard.data.quickaffordance.KeyguardQuickAffordanceRemoteUserSelectionManager
|
import com.android.systemui.keyguard.data.quickaffordance.KeyguardQuickAffordanceRemoteUserSelectionManager
|
||||||
|
import com.android.systemui.keyguard.data.repository.FakeBiometricSettingsRepository
|
||||||
import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository
|
import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository
|
||||||
import com.android.systemui.keyguard.data.repository.KeyguardQuickAffordanceRepository
|
import com.android.systemui.keyguard.data.repository.KeyguardQuickAffordanceRepository
|
||||||
import com.android.systemui.keyguard.domain.model.KeyguardQuickAffordanceModel
|
import com.android.systemui.keyguard.domain.model.KeyguardQuickAffordanceModel
|
||||||
@@ -94,6 +95,7 @@ class KeyguardQuickAffordanceInteractorTest : SysuiTestCase() {
|
|||||||
private lateinit var qrCodeScanner: FakeKeyguardQuickAffordanceConfig
|
private lateinit var qrCodeScanner: FakeKeyguardQuickAffordanceConfig
|
||||||
private lateinit var featureFlags: FakeFeatureFlags
|
private lateinit var featureFlags: FakeFeatureFlags
|
||||||
private lateinit var dockManager: DockManagerFake
|
private lateinit var dockManager: DockManagerFake
|
||||||
|
private lateinit var biometricSettingsRepository: FakeBiometricSettingsRepository
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
@@ -116,6 +118,7 @@ class KeyguardQuickAffordanceInteractorTest : SysuiTestCase() {
|
|||||||
testScope = TestScope(testDispatcher)
|
testScope = TestScope(testDispatcher)
|
||||||
|
|
||||||
dockManager = DockManagerFake()
|
dockManager = DockManagerFake()
|
||||||
|
biometricSettingsRepository = FakeBiometricSettingsRepository()
|
||||||
|
|
||||||
val localUserSelectionManager =
|
val localUserSelectionManager =
|
||||||
KeyguardQuickAffordanceLocalUserSelectionManager(
|
KeyguardQuickAffordanceLocalUserSelectionManager(
|
||||||
@@ -197,6 +200,7 @@ class KeyguardQuickAffordanceInteractorTest : SysuiTestCase() {
|
|||||||
logger = logger,
|
logger = logger,
|
||||||
devicePolicyManager = devicePolicyManager,
|
devicePolicyManager = devicePolicyManager,
|
||||||
dockManager = dockManager,
|
dockManager = dockManager,
|
||||||
|
biometricSettingsRepository = biometricSettingsRepository,
|
||||||
backgroundDispatcher = testDispatcher,
|
backgroundDispatcher = testDispatcher,
|
||||||
appContext = context,
|
appContext = context,
|
||||||
)
|
)
|
||||||
@@ -309,6 +313,24 @@ class KeyguardQuickAffordanceInteractorTest : SysuiTestCase() {
|
|||||||
assertThat(collectedValue()).isEqualTo(KeyguardQuickAffordanceModel.Hidden)
|
assertThat(collectedValue()).isEqualTo(KeyguardQuickAffordanceModel.Hidden)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun quickAffordance_hiddenWhenUserIsInLockdownMode() =
|
||||||
|
testScope.runTest {
|
||||||
|
biometricSettingsRepository.setIsUserInLockdown(true)
|
||||||
|
quickAccessWallet.setState(
|
||||||
|
KeyguardQuickAffordanceConfig.LockScreenState.Visible(
|
||||||
|
icon = ICON,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
val collectedValue by
|
||||||
|
collectLastValue(
|
||||||
|
underTest.quickAffordance(KeyguardQuickAffordancePosition.BOTTOM_END)
|
||||||
|
)
|
||||||
|
|
||||||
|
assertThat(collectedValue).isEqualTo(KeyguardQuickAffordanceModel.Hidden)
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun quickAffordance_bottomStartAffordanceHiddenWhileDozing() =
|
fun quickAffordance_bottomStartAffordanceHiddenWhileDozing() =
|
||||||
testScope.runTest {
|
testScope.runTest {
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ import com.android.systemui.keyguard.data.quickaffordance.KeyguardQuickAffordanc
|
|||||||
import com.android.systemui.keyguard.data.quickaffordance.KeyguardQuickAffordanceLegacySettingSyncer
|
import com.android.systemui.keyguard.data.quickaffordance.KeyguardQuickAffordanceLegacySettingSyncer
|
||||||
import com.android.systemui.keyguard.data.quickaffordance.KeyguardQuickAffordanceLocalUserSelectionManager
|
import com.android.systemui.keyguard.data.quickaffordance.KeyguardQuickAffordanceLocalUserSelectionManager
|
||||||
import com.android.systemui.keyguard.data.quickaffordance.KeyguardQuickAffordanceRemoteUserSelectionManager
|
import com.android.systemui.keyguard.data.quickaffordance.KeyguardQuickAffordanceRemoteUserSelectionManager
|
||||||
|
import com.android.systemui.keyguard.data.repository.FakeBiometricSettingsRepository
|
||||||
import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository
|
import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository
|
||||||
import com.android.systemui.keyguard.data.repository.FakeKeyguardTransitionRepository
|
import com.android.systemui.keyguard.data.repository.FakeKeyguardTransitionRepository
|
||||||
import com.android.systemui.keyguard.data.repository.KeyguardQuickAffordanceRepository
|
import com.android.systemui.keyguard.data.repository.KeyguardQuickAffordanceRepository
|
||||||
@@ -107,6 +108,7 @@ class KeyguardBottomAreaViewModelTest : SysuiTestCase() {
|
|||||||
private lateinit var quickAccessWalletAffordanceConfig: FakeKeyguardQuickAffordanceConfig
|
private lateinit var quickAccessWalletAffordanceConfig: FakeKeyguardQuickAffordanceConfig
|
||||||
private lateinit var qrCodeScannerAffordanceConfig: FakeKeyguardQuickAffordanceConfig
|
private lateinit var qrCodeScannerAffordanceConfig: FakeKeyguardQuickAffordanceConfig
|
||||||
private lateinit var dockManager: DockManagerFake
|
private lateinit var dockManager: DockManagerFake
|
||||||
|
private lateinit var biometricSettingsRepository: FakeBiometricSettingsRepository
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
fun setUp() {
|
fun setUp() {
|
||||||
@@ -123,6 +125,7 @@ class KeyguardBottomAreaViewModelTest : SysuiTestCase() {
|
|||||||
qrCodeScannerAffordanceConfig =
|
qrCodeScannerAffordanceConfig =
|
||||||
FakeKeyguardQuickAffordanceConfig(BuiltInKeyguardQuickAffordanceKeys.QR_CODE_SCANNER)
|
FakeKeyguardQuickAffordanceConfig(BuiltInKeyguardQuickAffordanceKeys.QR_CODE_SCANNER)
|
||||||
dockManager = DockManagerFake()
|
dockManager = DockManagerFake()
|
||||||
|
biometricSettingsRepository = FakeBiometricSettingsRepository()
|
||||||
registry =
|
registry =
|
||||||
FakeKeyguardQuickAffordanceRegistry(
|
FakeKeyguardQuickAffordanceRegistry(
|
||||||
mapOf(
|
mapOf(
|
||||||
@@ -233,6 +236,7 @@ class KeyguardBottomAreaViewModelTest : SysuiTestCase() {
|
|||||||
logger = logger,
|
logger = logger,
|
||||||
devicePolicyManager = devicePolicyManager,
|
devicePolicyManager = devicePolicyManager,
|
||||||
dockManager = dockManager,
|
dockManager = dockManager,
|
||||||
|
biometricSettingsRepository = biometricSettingsRepository,
|
||||||
backgroundDispatcher = testDispatcher,
|
backgroundDispatcher = testDispatcher,
|
||||||
appContext = mContext,
|
appContext = mContext,
|
||||||
),
|
),
|
||||||
|
|||||||
Reference in New Issue
Block a user