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:
Brad Hinegardner
2023-05-31 22:02:08 +00:00
parent 2eb911d3cb
commit a6c3630d74
5 changed files with 40 additions and 3 deletions

View File

@@ -35,6 +35,7 @@ import com.android.systemui.dock.retrieveIsDocked
import com.android.systemui.flags.FeatureFlags
import com.android.systemui.flags.Flags
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.domain.model.KeyguardQuickAffordanceModel
import com.android.systemui.keyguard.domain.quickaffordance.KeyguardQuickAffordanceRegistry
@@ -77,6 +78,7 @@ constructor(
private val logger: KeyguardQuickAffordancesMetricsLogger,
private val devicePolicyManager: DevicePolicyManager,
private val dockManager: DockManager,
private val biometricSettingsRepository: BiometricSettingsRepository,
@Background private val backgroundDispatcher: CoroutineDispatcher,
@Application private val appContext: Context,
) {
@@ -107,9 +109,10 @@ constructor(
quickAffordanceAlwaysVisible(position),
keyguardInteractor.isDozing,
keyguardInteractor.isKeyguardShowing,
keyguardInteractor.isQuickSettingsVisible
) { affordance, isDozing, isKeyguardShowing, isQuickSettingsVisible ->
if (!isDozing && isKeyguardShowing && !isQuickSettingsVisible) {
keyguardInteractor.isQuickSettingsVisible,
biometricSettingsRepository.isCurrentUserInLockdown,
) { affordance, isDozing, isKeyguardShowing, isQuickSettingsVisible, isUserInLockdown ->
if (!isDozing && isKeyguardShowing && !isQuickSettingsVisible && !isUserInLockdown) {
affordance
} else {
KeyguardQuickAffordanceModel.Hidden

View File

@@ -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.KeyguardQuickAffordanceLocalUserSelectionManager
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.KeyguardQuickAffordanceRepository
import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
@@ -99,6 +100,7 @@ class CustomizationProviderTest : SysuiTestCase() {
@Mock private lateinit var logger: KeyguardQuickAffordancesMetricsLogger
private lateinit var dockManager: DockManagerFake
private lateinit var biometricSettingsRepository: FakeBiometricSettingsRepository
private lateinit var underTest: CustomizationProvider
private lateinit var testScope: TestScope
@@ -112,6 +114,7 @@ class CustomizationProviderTest : SysuiTestCase() {
whenever(backgroundHandler.looper).thenReturn(TestableLooper.get(this).looper)
dockManager = DockManagerFake()
biometricSettingsRepository = FakeBiometricSettingsRepository()
underTest = CustomizationProvider()
val testDispatcher = UnconfinedTestDispatcher()
@@ -199,6 +202,7 @@ class CustomizationProviderTest : SysuiTestCase() {
logger = logger,
devicePolicyManager = devicePolicyManager,
dockManager = dockManager,
biometricSettingsRepository = biometricSettingsRepository,
backgroundDispatcher = testDispatcher,
appContext = mContext,
)

View File

@@ -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.KeyguardQuickAffordanceLocalUserSelectionManager
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.domain.quickaffordance.FakeKeyguardQuickAffordanceRegistry
import com.android.systemui.keyguard.shared.quickaffordance.KeyguardQuickAffordancePosition
@@ -235,6 +236,7 @@ class KeyguardQuickAffordanceInteractorParameterizedTest : SysuiTestCase() {
@JvmField @Parameter(4) var startActivity: Boolean = false
private lateinit var homeControls: FakeKeyguardQuickAffordanceConfig
private lateinit var dockManager: DockManagerFake
private lateinit var biometricSettingsRepository: FakeBiometricSettingsRepository
private lateinit var userTracker: UserTracker
@Before
@@ -246,6 +248,7 @@ class KeyguardQuickAffordanceInteractorParameterizedTest : SysuiTestCase() {
homeControls =
FakeKeyguardQuickAffordanceConfig(BuiltInKeyguardQuickAffordanceKeys.HOME_CONTROLS)
dockManager = DockManagerFake()
biometricSettingsRepository = FakeBiometricSettingsRepository()
val quickAccessWallet =
FakeKeyguardQuickAffordanceConfig(
BuiltInKeyguardQuickAffordanceKeys.QUICK_ACCESS_WALLET
@@ -333,6 +336,7 @@ class KeyguardQuickAffordanceInteractorParameterizedTest : SysuiTestCase() {
logger = logger,
devicePolicyManager = devicePolicyManager,
dockManager = dockManager,
biometricSettingsRepository = biometricSettingsRepository,
backgroundDispatcher = testDispatcher,
appContext = mContext,
)

View File

@@ -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.KeyguardQuickAffordanceLocalUserSelectionManager
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.KeyguardQuickAffordanceRepository
import com.android.systemui.keyguard.domain.model.KeyguardQuickAffordanceModel
@@ -94,6 +95,7 @@ class KeyguardQuickAffordanceInteractorTest : SysuiTestCase() {
private lateinit var qrCodeScanner: FakeKeyguardQuickAffordanceConfig
private lateinit var featureFlags: FakeFeatureFlags
private lateinit var dockManager: DockManagerFake
private lateinit var biometricSettingsRepository: FakeBiometricSettingsRepository
@Before
fun setUp() {
@@ -116,6 +118,7 @@ class KeyguardQuickAffordanceInteractorTest : SysuiTestCase() {
testScope = TestScope(testDispatcher)
dockManager = DockManagerFake()
biometricSettingsRepository = FakeBiometricSettingsRepository()
val localUserSelectionManager =
KeyguardQuickAffordanceLocalUserSelectionManager(
@@ -197,6 +200,7 @@ class KeyguardQuickAffordanceInteractorTest : SysuiTestCase() {
logger = logger,
devicePolicyManager = devicePolicyManager,
dockManager = dockManager,
biometricSettingsRepository = biometricSettingsRepository,
backgroundDispatcher = testDispatcher,
appContext = context,
)
@@ -309,6 +313,24 @@ class KeyguardQuickAffordanceInteractorTest : SysuiTestCase() {
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
fun quickAffordance_bottomStartAffordanceHiddenWhileDozing() =
testScope.runTest {

View File

@@ -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.KeyguardQuickAffordanceLocalUserSelectionManager
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.FakeKeyguardTransitionRepository
import com.android.systemui.keyguard.data.repository.KeyguardQuickAffordanceRepository
@@ -107,6 +108,7 @@ class KeyguardBottomAreaViewModelTest : SysuiTestCase() {
private lateinit var quickAccessWalletAffordanceConfig: FakeKeyguardQuickAffordanceConfig
private lateinit var qrCodeScannerAffordanceConfig: FakeKeyguardQuickAffordanceConfig
private lateinit var dockManager: DockManagerFake
private lateinit var biometricSettingsRepository: FakeBiometricSettingsRepository
@Before
fun setUp() {
@@ -123,6 +125,7 @@ class KeyguardBottomAreaViewModelTest : SysuiTestCase() {
qrCodeScannerAffordanceConfig =
FakeKeyguardQuickAffordanceConfig(BuiltInKeyguardQuickAffordanceKeys.QR_CODE_SCANNER)
dockManager = DockManagerFake()
biometricSettingsRepository = FakeBiometricSettingsRepository()
registry =
FakeKeyguardQuickAffordanceRegistry(
mapOf(
@@ -233,6 +236,7 @@ class KeyguardBottomAreaViewModelTest : SysuiTestCase() {
logger = logger,
devicePolicyManager = devicePolicyManager,
dockManager = dockManager,
biometricSettingsRepository = biometricSettingsRepository,
backgroundDispatcher = testDispatcher,
appContext = mContext,
),