Loading packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryFaceAuthInteractorTest.kt +29 −0 Original line number Original line Diff line number Diff line Loading @@ -20,6 +20,8 @@ import android.content.pm.UserInfo import android.hardware.biometrics.BiometricFaceConstants import android.hardware.biometrics.BiometricFaceConstants import android.hardware.biometrics.BiometricSourceType import android.hardware.biometrics.BiometricSourceType import android.os.PowerManager import android.os.PowerManager import android.platform.test.annotations.EnableFlags import android.service.dreams.Flags.FLAG_DREAMS_V2 import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest import com.android.compose.animation.scene.ObservableTransitionState import com.android.compose.animation.scene.ObservableTransitionState Loading Loading @@ -156,6 +158,33 @@ class DeviceEntryFaceAuthInteractorTest : SysuiTestCase() { ) ) } } @Test @EnableFlags(FLAG_DREAMS_V2) fun faceAuthIsRequestedWhenTransitioningFromDreamToLockscreen() = testScope.runTest { underTest.start() runCurrent() powerInteractor.setAwakeForTest(reason = PowerManager.WAKE_REASON_LID) faceWakeUpTriggersConfig.setTriggerFaceAuthOnWakeUpFrom( setOf(WakeSleepReason.LID.powerManagerWakeReason) ) keyguardTransitionRepository.sendTransitionStep( TransitionStep( KeyguardState.DREAMING, KeyguardState.LOCKSCREEN, transitionState = TransitionState.STARTED, ) ) runCurrent() assertThat(faceAuthRepository.runningAuthRequest.value) .isEqualTo( Pair(FaceAuthUiEvent.FACE_AUTH_UPDATED_KEYGUARD_VISIBILITY_CHANGED, true) ) } @Test @Test fun whenFaceIsLockedOutAnyAttemptsToTriggerFaceAuthMustProvideLockoutError() = fun whenFaceIsLockedOutAnyAttemptsToTriggerFaceAuthMustProvideLockoutError() = testScope.runTest { testScope.runTest { Loading packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/SystemUIDeviceEntryFaceAuthInteractor.kt +14 −5 Original line number Original line Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.app.trust.TrustManager import android.content.Context import android.content.Context import android.hardware.biometrics.BiometricFaceConstants import android.hardware.biometrics.BiometricFaceConstants import android.hardware.biometrics.BiometricSourceType import android.hardware.biometrics.BiometricSourceType import android.service.dreams.Flags.dreamsV2 import com.android.keyguard.KeyguardUpdateMonitor import com.android.keyguard.KeyguardUpdateMonitor import com.android.systemui.biometrics.data.repository.FacePropertyRepository import com.android.systemui.biometrics.data.repository.FacePropertyRepository import com.android.systemui.biometrics.shared.model.LockoutMode import com.android.systemui.biometrics.shared.model.LockoutMode Loading @@ -40,6 +41,7 @@ import com.android.systemui.keyguard.shared.model.DevicePosture import com.android.systemui.keyguard.shared.model.Edge import com.android.systemui.keyguard.shared.model.Edge import com.android.systemui.keyguard.shared.model.KeyguardState.AOD import com.android.systemui.keyguard.shared.model.KeyguardState.AOD import com.android.systemui.keyguard.shared.model.KeyguardState.DOZING import com.android.systemui.keyguard.shared.model.KeyguardState.DOZING import com.android.systemui.keyguard.shared.model.KeyguardState.DREAMING import com.android.systemui.keyguard.shared.model.KeyguardState.LOCKSCREEN import com.android.systemui.keyguard.shared.model.KeyguardState.LOCKSCREEN import com.android.systemui.keyguard.shared.model.KeyguardState.OFF import com.android.systemui.keyguard.shared.model.KeyguardState.OFF import com.android.systemui.keyguard.shared.model.TransitionState import com.android.systemui.keyguard.shared.model.TransitionState Loading Loading @@ -136,11 +138,18 @@ constructor( } } .launchIn(applicationScope) .launchIn(applicationScope) merge( val transitionFlows = buildList { keyguardTransitionInteractor.transition(Edge.create(AOD, LOCKSCREEN)), add(keyguardTransitionInteractor.transition(Edge.create(AOD, LOCKSCREEN))) keyguardTransitionInteractor.transition(Edge.create(OFF, LOCKSCREEN)), add(keyguardTransitionInteractor.transition(Edge.create(OFF, LOCKSCREEN))) keyguardTransitionInteractor.transition(Edge.create(DOZING, LOCKSCREEN)), add(keyguardTransitionInteractor.transition(Edge.create(DOZING, LOCKSCREEN))) ) if (dreamsV2()) { add(keyguardTransitionInteractor.transition(Edge.create(DREAMING, LOCKSCREEN))) } } transitionFlows .merge() .filter { it.transitionState == TransitionState.STARTED } .filter { it.transitionState == TransitionState.STARTED } .sample(powerInteractor.detailedWakefulness) .sample(powerInteractor.detailedWakefulness) .filter { wakefulnessModel -> .filter { wakefulnessModel -> Loading Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryFaceAuthInteractorTest.kt +29 −0 Original line number Original line Diff line number Diff line Loading @@ -20,6 +20,8 @@ import android.content.pm.UserInfo import android.hardware.biometrics.BiometricFaceConstants import android.hardware.biometrics.BiometricFaceConstants import android.hardware.biometrics.BiometricSourceType import android.hardware.biometrics.BiometricSourceType import android.os.PowerManager import android.os.PowerManager import android.platform.test.annotations.EnableFlags import android.service.dreams.Flags.FLAG_DREAMS_V2 import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import androidx.test.filters.SmallTest import com.android.compose.animation.scene.ObservableTransitionState import com.android.compose.animation.scene.ObservableTransitionState Loading Loading @@ -156,6 +158,33 @@ class DeviceEntryFaceAuthInteractorTest : SysuiTestCase() { ) ) } } @Test @EnableFlags(FLAG_DREAMS_V2) fun faceAuthIsRequestedWhenTransitioningFromDreamToLockscreen() = testScope.runTest { underTest.start() runCurrent() powerInteractor.setAwakeForTest(reason = PowerManager.WAKE_REASON_LID) faceWakeUpTriggersConfig.setTriggerFaceAuthOnWakeUpFrom( setOf(WakeSleepReason.LID.powerManagerWakeReason) ) keyguardTransitionRepository.sendTransitionStep( TransitionStep( KeyguardState.DREAMING, KeyguardState.LOCKSCREEN, transitionState = TransitionState.STARTED, ) ) runCurrent() assertThat(faceAuthRepository.runningAuthRequest.value) .isEqualTo( Pair(FaceAuthUiEvent.FACE_AUTH_UPDATED_KEYGUARD_VISIBILITY_CHANGED, true) ) } @Test @Test fun whenFaceIsLockedOutAnyAttemptsToTriggerFaceAuthMustProvideLockoutError() = fun whenFaceIsLockedOutAnyAttemptsToTriggerFaceAuthMustProvideLockoutError() = testScope.runTest { testScope.runTest { Loading
packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/SystemUIDeviceEntryFaceAuthInteractor.kt +14 −5 Original line number Original line Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.app.trust.TrustManager import android.content.Context import android.content.Context import android.hardware.biometrics.BiometricFaceConstants import android.hardware.biometrics.BiometricFaceConstants import android.hardware.biometrics.BiometricSourceType import android.hardware.biometrics.BiometricSourceType import android.service.dreams.Flags.dreamsV2 import com.android.keyguard.KeyguardUpdateMonitor import com.android.keyguard.KeyguardUpdateMonitor import com.android.systemui.biometrics.data.repository.FacePropertyRepository import com.android.systemui.biometrics.data.repository.FacePropertyRepository import com.android.systemui.biometrics.shared.model.LockoutMode import com.android.systemui.biometrics.shared.model.LockoutMode Loading @@ -40,6 +41,7 @@ import com.android.systemui.keyguard.shared.model.DevicePosture import com.android.systemui.keyguard.shared.model.Edge import com.android.systemui.keyguard.shared.model.Edge import com.android.systemui.keyguard.shared.model.KeyguardState.AOD import com.android.systemui.keyguard.shared.model.KeyguardState.AOD import com.android.systemui.keyguard.shared.model.KeyguardState.DOZING import com.android.systemui.keyguard.shared.model.KeyguardState.DOZING import com.android.systemui.keyguard.shared.model.KeyguardState.DREAMING import com.android.systemui.keyguard.shared.model.KeyguardState.LOCKSCREEN import com.android.systemui.keyguard.shared.model.KeyguardState.LOCKSCREEN import com.android.systemui.keyguard.shared.model.KeyguardState.OFF import com.android.systemui.keyguard.shared.model.KeyguardState.OFF import com.android.systemui.keyguard.shared.model.TransitionState import com.android.systemui.keyguard.shared.model.TransitionState Loading Loading @@ -136,11 +138,18 @@ constructor( } } .launchIn(applicationScope) .launchIn(applicationScope) merge( val transitionFlows = buildList { keyguardTransitionInteractor.transition(Edge.create(AOD, LOCKSCREEN)), add(keyguardTransitionInteractor.transition(Edge.create(AOD, LOCKSCREEN))) keyguardTransitionInteractor.transition(Edge.create(OFF, LOCKSCREEN)), add(keyguardTransitionInteractor.transition(Edge.create(OFF, LOCKSCREEN))) keyguardTransitionInteractor.transition(Edge.create(DOZING, LOCKSCREEN)), add(keyguardTransitionInteractor.transition(Edge.create(DOZING, LOCKSCREEN))) ) if (dreamsV2()) { add(keyguardTransitionInteractor.transition(Edge.create(DREAMING, LOCKSCREEN))) } } transitionFlows .merge() .filter { it.transitionState == TransitionState.STARTED } .filter { it.transitionState == TransitionState.STARTED } .sample(powerInteractor.detailedWakefulness) .sample(powerInteractor.detailedWakefulness) .filter { wakefulnessModel -> .filter { wakefulnessModel -> Loading