Loading packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/BiometricSettingsRepositoryTest.kt +24 −0 Original line number Diff line number Diff line Loading @@ -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 { Loading packages/SystemUI/src/com/android/systemui/keyguard/data/repository/BiometricSettingsRepository.kt +24 −26 Original line number Diff line number Diff line Loading @@ -188,8 +188,7 @@ constructor( ) private val isFingerprintEnrolled: Flow<Boolean> = selectedUserId .flatMapLatest { currentUserId -> selectedUserId.flatMapLatest { currentUserId -> conflatedCallbackFlow { val callback = object : AuthController.Callback { Loading @@ -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 -> Loading Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/repository/BiometricSettingsRepositoryTest.kt +24 −0 Original line number Diff line number Diff line Loading @@ -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 { Loading
packages/SystemUI/src/com/android/systemui/keyguard/data/repository/BiometricSettingsRepository.kt +24 −26 Original line number Diff line number Diff line Loading @@ -188,8 +188,7 @@ constructor( ) private val isFingerprintEnrolled: Flow<Boolean> = selectedUserId .flatMapLatest { currentUserId -> selectedUserId.flatMapLatest { currentUserId -> conflatedCallbackFlow { val callback = object : AuthController.Callback { Loading @@ -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 -> Loading