Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f3474e60 authored by Grace Cheng's avatar Grace Cheng
Browse files

Hide quick affordances when secure lock device enabled

Update KeyguardQuickAffordanceInteractor to hide quick affordances when
secure lock device is enabled

Flag: android.security.secure_lock_device
Fixes: 400299594
Bug: 401645997
Test: atest KeyguardQuickAffordanceInteractorTest
Change-Id: I7b8edceba1c72924df9825f8f989c7c382759f1a
parent d38f205d
Loading
Loading
Loading
Loading
+28 −2
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ package com.android.systemui.keyguard.domain.interactor
import android.app.admin.DevicePolicyManager
import android.os.UserHandle
import android.platform.test.annotations.EnableFlags
import android.security.Flags.FLAG_SECURE_LOCK_DEVICE
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.internal.widget.LockPatternUtils
@@ -27,7 +28,6 @@ import com.android.keyguard.logging.KeyguardQuickAffordancesLogger
import com.android.systemui.Flags
import com.android.systemui.SysuiTestCase
import com.android.systemui.accessibility.domain.interactor.AccessibilityInteractor
import com.android.systemui.accessibility.domain.interactor.accessibilityInteractor
import com.android.systemui.animation.DialogTransitionAnimator
import com.android.systemui.common.shared.model.ContentDescription
import com.android.systemui.common.shared.model.Icon
@@ -49,6 +49,7 @@ import com.android.systemui.keyguard.data.quickaffordance.KeyguardQuickAffordanc
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.data.repository.biometricSettingsRepository
import com.android.systemui.keyguard.domain.model.KeyguardQuickAffordanceModel
import com.android.systemui.keyguard.shared.model.KeyguardQuickAffordancePickerRepresentation
import com.android.systemui.keyguard.shared.quickaffordance.ActivationState
@@ -59,6 +60,8 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.plugins.ActivityStarter
import com.android.systemui.res.R
import com.android.systemui.scene.domain.interactor.sceneInteractor
import com.android.systemui.securelockdevice.data.repository.fakeSecureLockDeviceRepository
import com.android.systemui.securelockdevice.domain.interactor.secureLockDeviceInteractor
import com.android.systemui.settings.UserFileManager
import com.android.systemui.settings.UserTracker
import com.android.systemui.shade.cameraLauncher
@@ -143,7 +146,7 @@ class KeyguardQuickAffordanceInteractorTest : SysuiTestCase() {
            FakeKeyguardQuickAffordanceConfig(BuiltInKeyguardQuickAffordanceKeys.QR_CODE_SCANNER)

        dockManager = DockManagerFake()
        biometricSettingsRepository = FakeBiometricSettingsRepository()
        biometricSettingsRepository = kosmos.biometricSettingsRepository

        val localUserSelectionManager =
            KeyguardQuickAffordanceLocalUserSelectionManager(
@@ -185,6 +188,7 @@ class KeyguardQuickAffordanceInteractorTest : SysuiTestCase() {

        val withDeps =
            KeyguardInteractorFactory.create(featureFlags = featureFlags, repository = repository)

        underTest =
            KeyguardQuickAffordanceInteractor(
                keyguardInteractor = withDeps.keyguardInteractor,
@@ -198,6 +202,7 @@ class KeyguardQuickAffordanceInteractorTest : SysuiTestCase() {
                launchAnimator = launchAnimator,
                logger = logger,
                metricsLogger = metricsLogger,
                secureLockDeviceInteractor = { kosmos.secureLockDeviceInteractor },
                devicePolicyManager = devicePolicyManager,
                dockManager = dockManager,
                biometricSettingsRepository = biometricSettingsRepository,
@@ -314,6 +319,27 @@ class KeyguardQuickAffordanceInteractorTest : SysuiTestCase() {
            assertThat(collectedValue).isEqualTo(KeyguardQuickAffordanceModel.Hidden)
        }

    @EnableFlags(FLAG_SECURE_LOCK_DEVICE)
    @Test
    fun quickAffordance_hiddenWhenUserIsInSecureLockDeviceMode() =
        testScope.runTest {
            kosmos.fakeSecureLockDeviceRepository.onSecureLockDeviceEnabled()
            val isSecureLockDeviceEnabled by
                collectLastValue(kosmos.secureLockDeviceInteractor.isSecureLockDeviceEnabled)

            assertThat(isSecureLockDeviceEnabled).isEqualTo(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 {
+18 −2
Original line number Diff line number Diff line
@@ -51,6 +51,7 @@ import com.android.systemui.res.R
import com.android.systemui.scene.domain.interactor.SceneInteractor
import com.android.systemui.scene.shared.flag.SceneContainerFlag
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.securelockdevice.domain.interactor.SecureLockDeviceInteractor
import com.android.systemui.settings.UserTracker
import com.android.systemui.shade.ShadeDisplayAware
import com.android.systemui.shade.domain.interactor.ShadeInteractor
@@ -58,6 +59,7 @@ import com.android.systemui.shared.customization.data.content.CustomizationProvi
import com.android.systemui.shared.quickaffordance.shared.model.KeyguardPreviewConstants.KEYGUARD_QUICK_AFFORDANCE_ID_NONE
import com.android.systemui.statusbar.phone.SystemUIDialog
import com.android.systemui.statusbar.policy.KeyguardStateController
import com.android.systemui.util.kotlin.combine
import com.google.android.msdl.data.model.MSDLToken
import com.google.android.msdl.domain.MSDLPlayer
import dagger.Lazy
@@ -89,6 +91,7 @@ constructor(
    private val logger: KeyguardQuickAffordancesLogger,
    private val metricsLogger: KeyguardQuickAffordancesMetricsLogger,
    private val devicePolicyManager: DevicePolicyManager,
    private val secureLockDeviceInteractor: Lazy<SecureLockDeviceInteractor>,
    private val dockManager: DockManager,
    private val biometricSettingsRepository: BiometricSettingsRepository,
    private val accessibilityInteractor: AccessibilityInteractor,
@@ -145,8 +148,21 @@ constructor(
            },
            shadeInteractor.anyExpansion.map { it < 1.0f }.distinctUntilChanged(),
            biometricSettingsRepository.isCurrentUserInLockdown,
        ) { affordance, isDozing, isKeyguardShowing, isQuickSettingsVisible, isUserInLockdown ->
            if (!isDozing && isKeyguardShowing && isQuickSettingsVisible && !isUserInLockdown) {
            secureLockDeviceInteractor.get().isSecureLockDeviceEnabled,
        ) {
            affordance,
            isDozing,
            isKeyguardShowing,
            isQuickSettingsVisible,
            isUserInLockdown,
            isSecureLockDeviceEnabled ->
            if (
                !isDozing &&
                    isKeyguardShowing &&
                    isQuickSettingsVisible &&
                    !isUserInLockdown &&
                    !isSecureLockDeviceEnabled
            ) {
                affordance
            } else {
                KeyguardQuickAffordanceModel.Hidden
+4 −1
Original line number Diff line number Diff line
@@ -46,6 +46,7 @@ import com.android.systemui.keyguard.data.quickaffordance.KeyguardQuickAffordanc
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.biometricSettingsRepository
import com.android.systemui.keyguard.domain.interactor.KeyguardInteractorFactory
import com.android.systemui.keyguard.domain.interactor.KeyguardQuickAffordanceInteractor
import com.android.systemui.keyguard.shared.quickaffordance.KeyguardQuickAffordancesMetricsLogger
@@ -59,6 +60,7 @@ import com.android.systemui.kosmos.useUnconfinedTestDispatcher
import com.android.systemui.plugins.ActivityStarter
import com.android.systemui.res.R
import com.android.systemui.scene.domain.interactor.sceneInteractor
import com.android.systemui.securelockdevice.domain.interactor.secureLockDeviceInteractor
import com.android.systemui.settings.UserFileManager
import com.android.systemui.settings.UserTracker
import com.android.systemui.shade.domain.interactor.shadeInteractor
@@ -124,7 +126,7 @@ class CustomizationProviderTest : SysuiTestCase() {
        whenever(backgroundHandler.looper).thenReturn(TestableLooper.get(this).looper)

        dockManager = DockManagerFake()
        biometricSettingsRepository = FakeBiometricSettingsRepository()
        biometricSettingsRepository = kosmos.biometricSettingsRepository

        underTest = CustomizationProvider()
        val localUserSelectionManager =
@@ -201,6 +203,7 @@ class CustomizationProviderTest : SysuiTestCase() {
                launchAnimator = launchAnimator,
                logger = logger,
                metricsLogger = metricsLogger,
                secureLockDeviceInteractor = { kosmos.secureLockDeviceInteractor },
                devicePolicyManager = devicePolicyManager,
                dockManager = dockManager,
                biometricSettingsRepository = biometricSettingsRepository,
+5 −1
Original line number Diff line number Diff line
@@ -43,10 +43,12 @@ import com.android.systemui.keyguard.data.quickaffordance.KeyguardQuickAffordanc
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.biometricSettingsRepository
import com.android.systemui.keyguard.shared.quickaffordance.KeyguardQuickAffordancePosition
import com.android.systemui.keyguard.shared.quickaffordance.KeyguardQuickAffordancesMetricsLogger
import com.android.systemui.plugins.ActivityStarter
import com.android.systemui.scene.domain.interactor.sceneInteractor
import com.android.systemui.securelockdevice.domain.interactor.secureLockDeviceInteractor
import com.android.systemui.settings.FakeUserTracker
import com.android.systemui.settings.UserFileManager
import com.android.systemui.settings.UserTracker
@@ -253,7 +255,8 @@ class KeyguardQuickAffordanceInteractorParameterizedTest : SysuiTestCase() {
        homeControls =
            FakeKeyguardQuickAffordanceConfig(BuiltInKeyguardQuickAffordanceKeys.HOME_CONTROLS)
        dockManager = DockManagerFake()
        biometricSettingsRepository = FakeBiometricSettingsRepository()
        biometricSettingsRepository = kosmos.biometricSettingsRepository

        val quickAccessWallet =
            FakeKeyguardQuickAffordanceConfig(
                BuiltInKeyguardQuickAffordanceKeys.QUICK_ACCESS_WALLET
@@ -313,6 +316,7 @@ class KeyguardQuickAffordanceInteractorParameterizedTest : SysuiTestCase() {
                launchAnimator = launchAnimator,
                logger = logger,
                metricsLogger = metricsLogger,
                secureLockDeviceInteractor = { kosmos.secureLockDeviceInteractor },
                devicePolicyManager = devicePolicyManager,
                dockManager = dockManager,
                biometricSettingsRepository = biometricSettingsRepository,
+5 −1
Original line number Diff line number Diff line
@@ -44,10 +44,12 @@ import com.android.systemui.keyguard.data.quickaffordance.KeyguardQuickAffordanc
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.biometricSettingsRepository
import com.android.systemui.keyguard.shared.quickaffordance.KeyguardQuickAffordancePosition
import com.android.systemui.keyguard.shared.quickaffordance.KeyguardQuickAffordancesMetricsLogger
import com.android.systemui.plugins.ActivityStarter
import com.android.systemui.scene.domain.interactor.sceneInteractor
import com.android.systemui.securelockdevice.domain.interactor.secureLockDeviceInteractor
import com.android.systemui.settings.FakeUserTracker
import com.android.systemui.settings.UserFileManager
import com.android.systemui.settings.UserTracker
@@ -251,7 +253,8 @@ class KeyguardQuickAffordanceInteractorSceneContainerTest : SysuiTestCase() {
        homeControls =
            FakeKeyguardQuickAffordanceConfig(BuiltInKeyguardQuickAffordanceKeys.HOME_CONTROLS)
        dockManager = DockManagerFake()
        biometricSettingsRepository = FakeBiometricSettingsRepository()
        biometricSettingsRepository = kosmos.biometricSettingsRepository

        val quickAccessWallet =
            FakeKeyguardQuickAffordanceConfig(
                BuiltInKeyguardQuickAffordanceKeys.QUICK_ACCESS_WALLET
@@ -313,6 +316,7 @@ class KeyguardQuickAffordanceInteractorSceneContainerTest : SysuiTestCase() {
                launchAnimator = launchAnimator,
                logger = logger,
                metricsLogger = metricsLogger,
                secureLockDeviceInteractor = { kosmos.secureLockDeviceInteractor },
                devicePolicyManager = devicePolicyManager,
                dockManager = dockManager,
                biometricSettingsRepository = biometricSettingsRepository,
Loading