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

Commit e5603098 authored by Lucas Silva's avatar Lucas Silva Committed by Android (Google) Code Review
Browse files

Merge "Request face auth when exiting dreams" into main

parents 1c3d58e1 a17f037f
Loading
Loading
Loading
Loading
+29 −0
Original line number Original line Diff line number Diff line
@@ -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
@@ -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 {
+14 −5
Original line number Original line Diff line number Diff line
@@ -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
@@ -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
@@ -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 ->