diff options
8 files changed, 38 insertions, 34 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/BiometricRepository.kt b/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/BiometricSettingsRepository.kt index 25d8f4021f87..0af596a53a4d 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/BiometricRepository.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/BiometricSettingsRepository.kt @@ -47,12 +47,13 @@ import kotlinx.coroutines.flow.stateIn import kotlinx.coroutines.flow.transformLatest /** - * Acts as source of truth for biometric features. + * Acts as source of truth for biometric authentication related settings like enrollments, device + * policy, etc. * * Abstracts-away data sources and their schemas so the rest of the app doesn't need to worry about * upstream changes. */ -interface BiometricRepository { +interface BiometricSettingsRepository { /** Whether any fingerprints are enrolled for the current user. */ val isFingerprintEnrolled: StateFlow<Boolean> @@ -68,7 +69,7 @@ interface BiometricRepository { } @SysUISingleton -class BiometricRepositoryImpl +class BiometricSettingsRepositoryImpl @Inject constructor( context: Context, @@ -80,7 +81,7 @@ constructor( @Application scope: CoroutineScope, @Background backgroundDispatcher: CoroutineDispatcher, @Main looper: Looper, -) : BiometricRepository { +) : BiometricSettingsRepository { /** UserId of the current selected user. */ private val selectedUserId: Flow<Int> = @@ -88,7 +89,7 @@ constructor( override val isFingerprintEnrolled: StateFlow<Boolean> = selectedUserId - .flatMapLatest { userId -> + .flatMapLatest { conflatedCallbackFlow { val callback = object : AuthController.Callback { diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardRepositoryModule.kt b/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardRepositoryModule.kt index cc99eb72da16..6dee558ba0df 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardRepositoryModule.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardRepositoryModule.kt @@ -31,7 +31,10 @@ interface KeyguardRepositoryModule { @Binds fun lightRevealScrimRepository(impl: LightRevealScrimRepositoryImpl): LightRevealScrimRepository - @Binds fun biometricRepository(impl: BiometricRepositoryImpl): BiometricRepository + @Binds + fun biometricSettingsRepository( + impl: BiometricSettingsRepositoryImpl + ): BiometricSettingsRepository @Binds fun deviceEntryFingerprintAuthRepository( diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/AlternateBouncerInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/AlternateBouncerInteractor.kt index 6020ef8017c8..6452e0e094ce 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/AlternateBouncerInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/AlternateBouncerInteractor.kt @@ -20,7 +20,7 @@ import com.android.keyguard.KeyguardUpdateMonitor import com.android.systemui.dagger.SysUISingleton import com.android.systemui.flags.FeatureFlags import com.android.systemui.flags.Flags -import com.android.systemui.keyguard.data.repository.BiometricRepository +import com.android.systemui.keyguard.data.repository.BiometricSettingsRepository import com.android.systemui.keyguard.data.repository.DeviceEntryFingerprintAuthRepository import com.android.systemui.keyguard.data.repository.KeyguardBouncerRepository import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager.LegacyAlternateBouncer @@ -34,7 +34,7 @@ class AlternateBouncerInteractor @Inject constructor( private val bouncerRepository: KeyguardBouncerRepository, - private val biometricRepository: BiometricRepository, + private val biometricSettingsRepository: BiometricSettingsRepository, private val deviceEntryFingerprintAuthRepository: DeviceEntryFingerprintAuthRepository, private val systemClock: SystemClock, private val keyguardUpdateMonitor: KeyguardUpdateMonitor, @@ -99,9 +99,9 @@ constructor( fun canShowAlternateBouncerForFingerprint(): Boolean { return if (isModernAlternateBouncerEnabled) { bouncerRepository.isAlternateBouncerUIAvailable.value && - biometricRepository.isFingerprintEnrolled.value && - biometricRepository.isStrongBiometricAllowed.value && - biometricRepository.isFingerprintEnabledByDevicePolicy.value && + biometricSettingsRepository.isFingerprintEnrolled.value && + biometricSettingsRepository.isStrongBiometricAllowed.value && + biometricSettingsRepository.isFingerprintEnabledByDevicePolicy.value && !deviceEntryFingerprintAuthRepository.isLockedOut.value } else { legacyAlternateBouncer != null && diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/SideFpsControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/SideFpsControllerTest.kt index fd931b0a794b..a57c58c44907 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/SideFpsControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/SideFpsControllerTest.kt @@ -59,7 +59,7 @@ import com.android.systemui.SysuiTestableContext import com.android.systemui.dump.DumpManager import com.android.systemui.flags.FakeFeatureFlags import com.android.systemui.flags.Flags.MODERN_ALTERNATE_BOUNCER -import com.android.systemui.keyguard.data.repository.FakeBiometricRepository +import com.android.systemui.keyguard.data.repository.FakeBiometricSettingsRepository import com.android.systemui.keyguard.data.repository.FakeDeviceEntryFingerprintAuthRepository import com.android.systemui.keyguard.data.repository.KeyguardBouncerRepository import com.android.systemui.keyguard.domain.interactor.AlternateBouncerInteractor @@ -145,7 +145,7 @@ class SideFpsControllerTest : SysuiTestCase() { alternateBouncerInteractor = AlternateBouncerInteractor( keyguardBouncerRepository, - FakeBiometricRepository(), + FakeBiometricSettingsRepository(), FakeDeviceEntryFingerprintAuthRepository(), FakeSystemClock(), mock(KeyguardUpdateMonitor::class.java), diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsKeyguardViewControllerWithCoroutinesTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsKeyguardViewControllerWithCoroutinesTest.kt index 81a6bc2b25b5..5c9a9d6423a8 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsKeyguardViewControllerWithCoroutinesTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsKeyguardViewControllerWithCoroutinesTest.kt @@ -26,7 +26,7 @@ import com.android.systemui.classifier.FalsingCollector import com.android.systemui.flags.FeatureFlags import com.android.systemui.keyguard.DismissCallbackRegistry import com.android.systemui.keyguard.data.BouncerView -import com.android.systemui.keyguard.data.repository.BiometricRepository +import com.android.systemui.keyguard.data.repository.BiometricSettingsRepository import com.android.systemui.keyguard.data.repository.DeviceEntryFingerprintAuthRepository import com.android.systemui.keyguard.data.repository.KeyguardBouncerRepository import com.android.systemui.keyguard.domain.interactor.AlternateBouncerInteractor @@ -91,7 +91,7 @@ class UdfpsKeyguardViewControllerWithCoroutinesTest : UdfpsKeyguardViewControlle mAlternateBouncerInteractor = AlternateBouncerInteractor( keyguardBouncerRepository, - mock(BiometricRepository::class.java), + mock(BiometricSettingsRepository::class.java), mock(DeviceEntryFingerprintAuthRepository::class.java), mock(SystemClock::class.java), mock(KeyguardUpdateMonitor::class.java), diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/data/repository/BiometricRepositoryTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/data/repository/BiometricSettingsRepositoryTest.kt index a92dd3b92397..ddd10493571c 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/data/repository/BiometricRepositoryTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/data/repository/BiometricSettingsRepositoryTest.kt @@ -50,8 +50,8 @@ import org.mockito.MockitoAnnotations @SmallTest @TestableLooper.RunWithLooper(setAsMainLooper = true) @RunWith(AndroidTestingRunner::class) -class BiometricRepositoryTest : SysuiTestCase() { - private lateinit var underTest: BiometricRepository +class BiometricSettingsRepositoryTest : SysuiTestCase() { + private lateinit var underTest: BiometricSettingsRepository @Mock private lateinit var authController: AuthController @Mock private lateinit var lockPatternUtils: LockPatternUtils @@ -71,11 +71,11 @@ class BiometricRepositoryTest : SysuiTestCase() { userRepository = FakeUserRepository() } - private suspend fun createBiometricRepository() { + private suspend fun createBiometricSettingsRepository() { userRepository.setUserInfos(listOf(PRIMARY_USER)) userRepository.setSelectedUserInfo(PRIMARY_USER) underTest = - BiometricRepositoryImpl( + BiometricSettingsRepositoryImpl( context = context, lockPatternUtils = lockPatternUtils, broadcastDispatcher = fakeBroadcastDispatcher, @@ -91,7 +91,7 @@ class BiometricRepositoryTest : SysuiTestCase() { @Test fun fingerprintEnrollmentChange() = testScope.runTest { - createBiometricRepository() + createBiometricSettingsRepository() val fingerprintEnabledByDevicePolicy = collectLastValue(underTest.isFingerprintEnrolled) runCurrent() @@ -117,7 +117,7 @@ class BiometricRepositoryTest : SysuiTestCase() { @Test fun strongBiometricAllowedChange() = testScope.runTest { - createBiometricRepository() + createBiometricSettingsRepository() val strongBiometricAllowed = collectLastValue(underTest.isStrongBiometricAllowed) runCurrent() @@ -140,7 +140,7 @@ class BiometricRepositoryTest : SysuiTestCase() { @Test fun fingerprintDisabledByDpmChange() = testScope.runTest { - createBiometricRepository() + createBiometricSettingsRepository() val fingerprintEnabledByDevicePolicy = collectLastValue(underTest.isFingerprintEnabledByDevicePolicy) runCurrent() diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/AlternateBouncerInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/AlternateBouncerInteractorTest.kt index 68fff262214a..101d0f49ec50 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/AlternateBouncerInteractorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/AlternateBouncerInteractorTest.kt @@ -22,7 +22,7 @@ import com.android.keyguard.ViewMediatorCallback import com.android.systemui.SysuiTestCase import com.android.systemui.flags.FakeFeatureFlags import com.android.systemui.flags.Flags -import com.android.systemui.keyguard.data.repository.FakeBiometricRepository +import com.android.systemui.keyguard.data.repository.FakeBiometricSettingsRepository import com.android.systemui.keyguard.data.repository.FakeDeviceEntryFingerprintAuthRepository import com.android.systemui.keyguard.data.repository.KeyguardBouncerRepository import com.android.systemui.log.table.TableLogBuffer @@ -46,7 +46,7 @@ import org.mockito.MockitoAnnotations class AlternateBouncerInteractorTest : SysuiTestCase() { private lateinit var underTest: AlternateBouncerInteractor private lateinit var bouncerRepository: KeyguardBouncerRepository - private lateinit var biometricRepository: FakeBiometricRepository + private lateinit var biometricSettingsRepository: FakeBiometricSettingsRepository private lateinit var deviceEntryFingerprintAuthRepository: FakeDeviceEntryFingerprintAuthRepository @Mock private lateinit var systemClock: SystemClock @@ -64,13 +64,13 @@ class AlternateBouncerInteractorTest : SysuiTestCase() { TestCoroutineScope(), bouncerLogger, ) - biometricRepository = FakeBiometricRepository() + biometricSettingsRepository = FakeBiometricSettingsRepository() deviceEntryFingerprintAuthRepository = FakeDeviceEntryFingerprintAuthRepository() featureFlags = FakeFeatureFlags().apply { this.set(Flags.MODERN_ALTERNATE_BOUNCER, true) } underTest = AlternateBouncerInteractor( bouncerRepository, - biometricRepository, + biometricSettingsRepository, deviceEntryFingerprintAuthRepository, systemClock, keyguardUpdateMonitor, @@ -95,7 +95,7 @@ class AlternateBouncerInteractorTest : SysuiTestCase() { @Test fun canShowAlternateBouncerForFingerprint_noFingerprintsEnrolled() { givenCanShowAlternateBouncer() - biometricRepository.setFingerprintEnrolled(false) + biometricSettingsRepository.setFingerprintEnrolled(false) assertFalse(underTest.canShowAlternateBouncerForFingerprint()) } @@ -103,7 +103,7 @@ class AlternateBouncerInteractorTest : SysuiTestCase() { @Test fun canShowAlternateBouncerForFingerprint_strongBiometricNotAllowed() { givenCanShowAlternateBouncer() - biometricRepository.setStrongBiometricAllowed(false) + biometricSettingsRepository.setStrongBiometricAllowed(false) assertFalse(underTest.canShowAlternateBouncerForFingerprint()) } @@ -111,7 +111,7 @@ class AlternateBouncerInteractorTest : SysuiTestCase() { @Test fun canShowAlternateBouncerForFingerprint_devicePolicyDoesNotAllowFingerprint() { givenCanShowAlternateBouncer() - biometricRepository.setFingerprintEnabledByDevicePolicy(false) + biometricSettingsRepository.setFingerprintEnabledByDevicePolicy(false) assertFalse(underTest.canShowAlternateBouncerForFingerprint()) } @@ -158,13 +158,13 @@ class AlternateBouncerInteractorTest : SysuiTestCase() { private fun givenCanShowAlternateBouncer() { bouncerRepository.setAlternateBouncerUIAvailable(true) - biometricRepository.setFingerprintEnrolled(true) - biometricRepository.setStrongBiometricAllowed(true) - biometricRepository.setFingerprintEnabledByDevicePolicy(true) + biometricSettingsRepository.setFingerprintEnrolled(true) + biometricSettingsRepository.setStrongBiometricAllowed(true) + biometricSettingsRepository.setFingerprintEnabledByDevicePolicy(true) deviceEntryFingerprintAuthRepository.setLockedOut(false) } private fun givenCannotShowAlternateBouncer() { - biometricRepository.setFingerprintEnrolled(false) + biometricSettingsRepository.setFingerprintEnrolled(false) } } diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/FakeBiometricRepository.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/FakeBiometricSettingsRepository.kt index f3e52de0d7a0..044679d6e9a8 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/FakeBiometricRepository.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/data/repository/FakeBiometricSettingsRepository.kt @@ -21,7 +21,7 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.asStateFlow -class FakeBiometricRepository : BiometricRepository { +class FakeBiometricSettingsRepository : BiometricSettingsRepository { private val _isFingerprintEnrolled = MutableStateFlow<Boolean>(false) override val isFingerprintEnrolled: StateFlow<Boolean> = _isFingerprintEnrolled.asStateFlow() |