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

Commit cdb63b98 authored by Beverly Tai's avatar Beverly Tai Committed by Android (Google) Code Review
Browse files

Merge "Update biometricUnlockMode with biometricUnlockSource" into main

parents daad29b0 da73fdf9
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -22,7 +22,7 @@ import com.android.systemui.SysuiTestCase
import com.android.systemui.biometrics.data.repository.fingerprintPropertyRepository
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository
import com.android.systemui.keyguard.shared.model.BiometricUnlockModel
import com.android.systemui.keyguard.shared.model.BiometricUnlockMode
import com.android.systemui.keyguard.shared.model.BiometricUnlockSource
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
@@ -70,8 +70,10 @@ class AuthRippleInteractorTest : SysuiTestCase() {
    fun faceUnlocked_showsAuthRipple() =
        testScope.runTest {
            val showUnlockRipple by collectLastValue(underTest.showUnlockRipple)
            keyguardRepository.setBiometricUnlockSource(BiometricUnlockSource.FACE_SENSOR)
            keyguardRepository.setBiometricUnlockState(BiometricUnlockModel.WAKE_AND_UNLOCK)
            keyguardRepository.setBiometricUnlockState(
                BiometricUnlockMode.WAKE_AND_UNLOCK,
                BiometricUnlockSource.FACE_SENSOR
            )
            assertThat(showUnlockRipple).isEqualTo(BiometricUnlockSource.FACE_SENSOR)
        }

@@ -79,8 +81,10 @@ class AuthRippleInteractorTest : SysuiTestCase() {
    fun fingerprintUnlocked_showsAuthRipple() =
        testScope.runTest {
            val showUnlockRippleFromBiometricUnlock by collectLastValue(underTest.showUnlockRipple)
            keyguardRepository.setBiometricUnlockSource(BiometricUnlockSource.FINGERPRINT_SENSOR)
            keyguardRepository.setBiometricUnlockState(BiometricUnlockModel.WAKE_AND_UNLOCK)
            keyguardRepository.setBiometricUnlockState(
                BiometricUnlockMode.WAKE_AND_UNLOCK,
                BiometricUnlockSource.FINGERPRINT_SENSOR
            )
            assertThat(showUnlockRippleFromBiometricUnlock)
                .isEqualTo(BiometricUnlockSource.FINGERPRINT_SENSOR)
        }
+13 −8
Original line number Diff line number Diff line
@@ -21,7 +21,7 @@ import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository
import com.android.systemui.keyguard.shared.model.BiometricUnlockModel
import com.android.systemui.keyguard.shared.model.BiometricUnlockMode
import com.android.systemui.keyguard.shared.model.BiometricUnlockSource
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
@@ -46,8 +46,10 @@ class DeviceEntrySourceInteractorTest : SysuiTestCase() {
        testScope.runTest {
            val deviceEntryFromBiometricAuthentication by
                collectLastValue(underTest.deviceEntryFromBiometricSource)
            keyguardRepository.setBiometricUnlockSource(BiometricUnlockSource.FACE_SENSOR)
            keyguardRepository.setBiometricUnlockState(BiometricUnlockModel.WAKE_AND_UNLOCK)
            keyguardRepository.setBiometricUnlockState(
                BiometricUnlockMode.WAKE_AND_UNLOCK,
                BiometricUnlockSource.FACE_SENSOR,
            )
            runCurrent()
            assertThat(deviceEntryFromBiometricAuthentication)
                .isEqualTo(BiometricUnlockSource.FACE_SENSOR)
@@ -57,8 +59,10 @@ class DeviceEntrySourceInteractorTest : SysuiTestCase() {
    fun deviceEntryFromFingerprintUnlock() = runTest {
        val deviceEntryFromBiometricAuthentication by
            collectLastValue(underTest.deviceEntryFromBiometricSource)
        keyguardRepository.setBiometricUnlockSource(BiometricUnlockSource.FINGERPRINT_SENSOR)
        keyguardRepository.setBiometricUnlockState(BiometricUnlockModel.WAKE_AND_UNLOCK)
        keyguardRepository.setBiometricUnlockState(
            BiometricUnlockMode.WAKE_AND_UNLOCK,
            BiometricUnlockSource.FINGERPRINT_SENSOR,
        )
        runCurrent()
        assertThat(deviceEntryFromBiometricAuthentication)
            .isEqualTo(BiometricUnlockSource.FINGERPRINT_SENSOR)
@@ -68,9 +72,10 @@ class DeviceEntrySourceInteractorTest : SysuiTestCase() {
    fun noDeviceEntry() = runTest {
        val deviceEntryFromBiometricAuthentication by
            collectLastValue(underTest.deviceEntryFromBiometricSource)
        keyguardRepository.setBiometricUnlockSource(BiometricUnlockSource.FINGERPRINT_SENSOR)
        // doesn't dismiss keyguard:
        keyguardRepository.setBiometricUnlockState(BiometricUnlockModel.ONLY_WAKE)
        keyguardRepository.setBiometricUnlockState(
            BiometricUnlockMode.ONLY_WAKE, // doesn't dismiss keyguard:
            BiometricUnlockSource.FINGERPRINT_SENSOR,
        )
        runCurrent()
        assertThat(deviceEntryFromBiometricAuthentication).isNull()
    }
+6 −4
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import com.android.systemui.doze.DozeMachine
import com.android.systemui.doze.DozeTransitionCallback
import com.android.systemui.doze.DozeTransitionListener
import com.android.systemui.dreams.DreamOverlayCallbackController
import com.android.systemui.keyguard.shared.model.BiometricUnlockMode
import com.android.systemui.keyguard.shared.model.BiometricUnlockSource
import com.android.systemui.keyguard.shared.model.DozeStateModel
import com.android.systemui.keyguard.shared.model.DozeTransitionModel
@@ -515,11 +516,9 @@ class KeyguardRepositoryImplTest : SysuiTestCase() {
    fun biometricUnlockSource() =
        testScope.runTest {
            val values = mutableListOf<BiometricUnlockSource?>()
            val job = underTest.biometricUnlockSource.onEach(values::add).launchIn(this)
            val job = underTest.biometricUnlockState.onEach { values.add(it.source) }.launchIn(this)

            runCurrent()
            val captor = argumentCaptor<KeyguardUpdateMonitorCallback>()
            verify(keyguardUpdateMonitor).registerCallback(captor.capture())

            // An initial, null value should be initially emitted so that flows combined with this
            // one
@@ -535,7 +534,10 @@ class KeyguardRepositoryImplTest : SysuiTestCase() {
                    BiometricSourceType.FINGERPRINT,
                )
                .onEach { biometricSourceType ->
                    captor.value.onBiometricAuthenticated(0, biometricSourceType, false)
                    underTest.setBiometricUnlockState(
                        BiometricUnlockMode.NONE,
                        BiometricUnlockSource.Companion.fromBiometricSourceType(biometricSourceType)
                    )
                    runCurrent()
                }

+27 −11
Original line number Diff line number Diff line
@@ -24,7 +24,7 @@ import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.animation.AnimatorTestRule
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.keyguard.shared.model.BiometricUnlockModel
import com.android.systemui.keyguard.shared.model.BiometricUnlockMode
import com.android.systemui.keyguard.shared.model.BiometricUnlockSource
import com.android.systemui.kosmos.testScope
import com.android.systemui.power.data.repository.powerRepository
@@ -89,7 +89,10 @@ class LightRevealScrimRepositoryTest : SysuiTestCase() {

        // The source and sensor locations are still null, so we should still be using the
        // default reveal despite a biometric unlock.
        fakeKeyguardRepository.setBiometricUnlockState(BiometricUnlockModel.WAKE_AND_UNLOCK)
        fakeKeyguardRepository.setBiometricUnlockState(
            BiometricUnlockMode.WAKE_AND_UNLOCK,
            BiometricUnlockSource.FINGERPRINT_SENSOR
        )

        runCurrent()
        values.assertEffectsMatchPredicates(
@@ -98,7 +101,10 @@ class LightRevealScrimRepositoryTest : SysuiTestCase() {

        // We got a source but still have no sensor locations, so should be sticking with
        // the default effect.
        fakeKeyguardRepository.setBiometricUnlockSource(BiometricUnlockSource.FINGERPRINT_SENSOR)
        fakeKeyguardRepository.setBiometricUnlockState(
            BiometricUnlockMode.WAKE_AND_UNLOCK,
            BiometricUnlockSource.FINGERPRINT_SENSOR
        )

        runCurrent()
        values.assertEffectsMatchPredicates(
@@ -117,8 +123,10 @@ class LightRevealScrimRepositoryTest : SysuiTestCase() {
        // Now we have fingerprint sensor locations, and wake and unlock via fingerprint.
        val fingerprintLocation = Point(500, 500)
        fakeKeyguardRepository.setFingerprintSensorLocation(fingerprintLocation)
        fakeKeyguardRepository.setBiometricUnlockSource(BiometricUnlockSource.FINGERPRINT_SENSOR)
        fakeKeyguardRepository.setBiometricUnlockState(BiometricUnlockModel.WAKE_AND_UNLOCK_PULSING)
        fakeKeyguardRepository.setBiometricUnlockState(
            BiometricUnlockMode.WAKE_AND_UNLOCK_PULSING,
            BiometricUnlockSource.FINGERPRINT_SENSOR
        )

        // We should now have switched to the circle reveal, at the fingerprint location.
        runCurrent()
@@ -133,14 +141,21 @@ class LightRevealScrimRepositoryTest : SysuiTestCase() {

        // Subsequent wake and unlocks should not emit duplicate, identical CircleReveals.
        val valuesPrevSize = values.size
        fakeKeyguardRepository.setBiometricUnlockState(BiometricUnlockModel.WAKE_AND_UNLOCK_PULSING)
        fakeKeyguardRepository.setBiometricUnlockState(
            BiometricUnlockModel.WAKE_AND_UNLOCK_FROM_DREAM
            BiometricUnlockMode.WAKE_AND_UNLOCK_PULSING,
            BiometricUnlockSource.FINGERPRINT_SENSOR
        )
        fakeKeyguardRepository.setBiometricUnlockState(
            BiometricUnlockMode.WAKE_AND_UNLOCK_FROM_DREAM,
            BiometricUnlockSource.FINGERPRINT_SENSOR
        )
        assertEquals(valuesPrevSize, values.size)

        // Non-biometric unlock, we should return to the default reveal.
        fakeKeyguardRepository.setBiometricUnlockState(BiometricUnlockModel.NONE)
        fakeKeyguardRepository.setBiometricUnlockState(
            BiometricUnlockMode.NONE,
            BiometricUnlockSource.FINGERPRINT_SENSOR
        )

        runCurrent()
        values.assertEffectsMatchPredicates(
@@ -155,9 +170,10 @@ class LightRevealScrimRepositoryTest : SysuiTestCase() {

        // We already have a face location, so switching to face source should update the
        // CircleReveal.
        fakeKeyguardRepository.setBiometricUnlockSource(BiometricUnlockSource.FACE_SENSOR)
        runCurrent()
        fakeKeyguardRepository.setBiometricUnlockState(BiometricUnlockModel.WAKE_AND_UNLOCK)
        fakeKeyguardRepository.setBiometricUnlockState(
            BiometricUnlockMode.WAKE_AND_UNLOCK,
            BiometricUnlockSource.FACE_SENSOR
        )
        runCurrent()

        values.assertEffectsMatchPredicates(
+5 −4
Original line number Diff line number Diff line
@@ -43,8 +43,7 @@ import com.android.systemui.keyguard.data.repository.FakeKeyguardTransitionRepos
import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository
import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository
import com.android.systemui.keyguard.data.repository.keyguardOcclusionRepository
import com.android.systemui.keyguard.data.repository.keyguardRepository
import com.android.systemui.keyguard.shared.model.BiometricUnlockModel
import com.android.systemui.keyguard.shared.model.BiometricUnlockMode
import com.android.systemui.keyguard.shared.model.KeyguardState
import com.android.systemui.keyguard.shared.model.TransitionState
import com.android.systemui.keyguard.shared.model.TransitionStep
@@ -99,7 +98,7 @@ class FromAodTransitionInteractorTest : SysuiTestCase() {
                to = KeyguardState.AOD,
                testScope
            )
            kosmos.keyguardRepository.setBiometricUnlockState(BiometricUnlockModel.NONE)
            kosmos.fakeKeyguardRepository.setBiometricUnlockState(BiometricUnlockMode.NONE)
            reset(transitionRepository)
        }
    }
@@ -278,7 +277,9 @@ class FromAodTransitionInteractorTest : SysuiTestCase() {
    @EnableFlags(Flags.FLAG_KEYGUARD_WM_STATE_REFACTOR)
    fun testWakeAndUnlock_transitionsToGone_onlyAfterDismissCallPostWakeup() =
        testScope.runTest {
            kosmos.keyguardRepository.setBiometricUnlockState(BiometricUnlockModel.WAKE_AND_UNLOCK)
            kosmos.fakeKeyguardRepository.setBiometricUnlockState(
                BiometricUnlockMode.WAKE_AND_UNLOCK
            )
            powerInteractor.setAwakeForTest()
            runCurrent()

Loading