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

Commit 2af3c050 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Send initial isFingerprintEnrolled when userChanges" into main

parents 40e5d141 1900fabc
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
@@ -527,6 +527,30 @@ class BiometricSettingsRepositoryTest : SysuiTestCase() {
        whenever(authController.isFaceAuthEnrolled(userId)).thenReturn(true)
    }

    @Test
    fun userChange_isFingerprintEnrolledAndEnabledUpdated() =
        testScope.runTest {
            createBiometricSettingsRepository()
            whenever(authController.isFingerprintEnrolled(ANOTHER_USER_ID)).thenReturn(false)
            whenever(authController.isFingerprintEnrolled(PRIMARY_USER_ID)).thenReturn(true)

            verify(biometricManager)
                .registerEnabledOnKeyguardCallback(biometricManagerCallback.capture())
            val isFingerprintEnrolledAndEnabled =
                collectLastValue(underTest.isFingerprintEnrolledAndEnabled)
            biometricManagerCallback.value.onChanged(true, ANOTHER_USER_ID)
            runCurrent()
            userRepository.setSelectedUserInfo(ANOTHER_USER)
            runCurrent()
            assertThat(isFingerprintEnrolledAndEnabled()).isFalse()

            biometricManagerCallback.value.onChanged(true, PRIMARY_USER_ID)
            runCurrent()
            userRepository.setSelectedUserInfo(PRIMARY_USER)
            runCurrent()
            assertThat(isFingerprintEnrolledAndEnabled()).isTrue()
        }

    @Test
    fun userChange_biometricEnabledChange_handlesRaceCondition() =
        testScope.runTest {
+24 −26
Original line number Diff line number Diff line
@@ -188,8 +188,7 @@ constructor(
        )

    private val isFingerprintEnrolled: Flow<Boolean> =
        selectedUserId
            .flatMapLatest { currentUserId ->
        selectedUserId.flatMapLatest { currentUserId ->
            conflatedCallbackFlow {
                val callback =
                    object : AuthController.Callback {
@@ -208,15 +207,14 @@ constructor(
                        }
                    }
                authController.addCallback(callback)
                trySendWithFailureLogging(
                    authController.isFingerprintEnrolled(currentUserId),
                    TAG,
                    "Initial value of fingerprint enrollment"
                )
                awaitClose { authController.removeCallback(callback) }
            }
        }
            .stateIn(
                scope,
                started = SharingStarted.Eagerly,
                initialValue =
                    authController.isFingerprintEnrolled(userRepository.getSelectedUserInfo().id)
            )

    private val isFaceEnrolled: Flow<Boolean> =
        selectedUserId.flatMapLatest { selectedUserId: Int ->