Loading packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/BiometricMessageInteractorTest.kt +25 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.os.UserHandle import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.accessibility.data.repository.fakeAccessibilityRepository import com.android.systemui.biometrics.FaceHelpMessageDebouncer import com.android.systemui.biometrics.data.repository.fingerprintPropertyRepository import com.android.systemui.biometrics.domain.faceHelpMessageDeferral Loading @@ -45,6 +46,7 @@ import com.android.systemui.keyguard.shared.model.ErrorFingerprintAuthentication import com.android.systemui.keyguard.shared.model.FailFingerprintAuthenticationStatus import com.android.systemui.keyguard.shared.model.HelpFingerprintAuthenticationStatus import com.android.systemui.kosmos.testScope import com.android.systemui.res.R import com.android.systemui.testKosmos import com.android.systemui.user.data.repository.FakeUserRepository.Companion.DEFAULT_SELECTED_USER import com.android.systemui.util.mockito.whenever Loading @@ -67,6 +69,7 @@ class BiometricMessageInteractorTest : SysuiTestCase() { private val faceAuthRepository = kosmos.fakeDeviceEntryFaceAuthRepository private val biometricSettingsRepository = kosmos.biometricSettingsRepository private val faceHelpMessageDeferral = kosmos.faceHelpMessageDeferral private val accessibilityRepository = kosmos.fakeAccessibilityRepository @Test fun fingerprintErrorMessage() = Loading Loading @@ -222,6 +225,28 @@ class BiometricMessageInteractorTest : SysuiTestCase() { ) } @Test fun fingerprintA11yMessage_fps() = testScope.runTest { val fingerprintA11yMessage by collectLastValue(underTest.fingerprintMessage) // GIVEN UDFPS fingerprintPropertyRepository.setProperties( 0, SensorStrength.STRONG, FingerprintSensorType.UDFPS_OPTICAL, mapOf(), ) accessibilityRepository.isTouchExplorationEnabled.value = true // GIVEN fingerprint is allowed biometricSettingsRepository.setIsFingerprintAuthCurrentlyAllowed(true) // THEN fingerprintA11yMessage is updated to fps message assertThat(fingerprintA11yMessage?.message) .isEqualTo(kosmos.mainResources.getString(R.string.fingerprint_dialog_touch_sensor)) } @Test fun faceFailedMessage_primaryAuthRequired() = testScope.runTest { Loading packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/BiometricMessageInteractor.kt +17 −1 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.systemui.deviceentry.domain.interactor import android.content.res.Resources import com.android.systemui.accessibility.domain.interactor.AccessibilityInteractor import com.android.systemui.biometrics.domain.interactor.FingerprintPropertyInteractor import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Main Loading Loading @@ -61,6 +62,7 @@ constructor( private val biometricSettingsInteractor: DeviceEntryBiometricSettingsInteractor, faceHelpMessageDeferralInteractor: FaceHelpMessageDeferralInteractor, devicePostureInteractor: DevicePostureInteractor, private val accessibilityInteractor: AccessibilityInteractor, ) { private val faceHelp: Flow<HelpFaceAuthenticationStatus> = faceAuthInteractor.authenticationStatus.filterIsInstance<HelpFaceAuthenticationStatus>() Loading Loading @@ -133,6 +135,15 @@ constructor( } } private val fingerprintA11yMessage: Flow<FingerprintMessage> = accessibilityInteractor.isTouchExplorationEnabled .sample(biometricSettingsInteractor.fingerprintAuthCurrentlyAllowed, ::Pair) .filter { (_, fingerprintAuthAllowed) -> fingerprintAuthAllowed } .filter { (touchExplorationEnabled, _) -> touchExplorationEnabled } .map { FingerprintMessage(resources.getString(R.string.fingerprint_dialog_touch_sensor)) } val coExFaceAcquisitionMsgIdsToShow: Flow<Set<Int>> = devicePostureInteractor.posture.map { devicePosture -> when (devicePosture) { Loading @@ -145,7 +156,12 @@ constructor( } val fingerprintMessage: Flow<FingerprintMessage> = merge(fingerprintErrorMessage, fingerprintFailMessage, fingerprintHelpMessage) merge( fingerprintErrorMessage, fingerprintFailMessage, fingerprintHelpMessage, fingerprintA11yMessage, ) private val filterConditionForFaceHelpMessages: Flow<(HelpFaceAuthenticationStatus) -> Boolean> = Loading packages/SystemUI/tests/utils/src/com/android/systemui/deviceentry/domain/interactor/BiometricMessageInteractorKosmos.kt +2 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.systemui.deviceentry.domain.interactor import android.content.res.mainResources import com.android.systemui.accessibility.domain.interactor.accessibilityInteractor import com.android.systemui.biometrics.domain.interactor.fingerprintPropertyInteractor import com.android.systemui.keyguard.domain.interactor.devicePostureInteractor import com.android.systemui.kosmos.Kosmos Loading @@ -31,5 +32,6 @@ val Kosmos.biometricMessageInteractor by biometricSettingsInteractor = deviceEntryBiometricSettingsInteractor, faceHelpMessageDeferralInteractor = faceHelpMessageDeferralInteractor, devicePostureInteractor = devicePostureInteractor, accessibilityInteractor = accessibilityInteractor, ) } Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/domain/interactor/BiometricMessageInteractorTest.kt +25 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.os.UserHandle import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.accessibility.data.repository.fakeAccessibilityRepository import com.android.systemui.biometrics.FaceHelpMessageDebouncer import com.android.systemui.biometrics.data.repository.fingerprintPropertyRepository import com.android.systemui.biometrics.domain.faceHelpMessageDeferral Loading @@ -45,6 +46,7 @@ import com.android.systemui.keyguard.shared.model.ErrorFingerprintAuthentication import com.android.systemui.keyguard.shared.model.FailFingerprintAuthenticationStatus import com.android.systemui.keyguard.shared.model.HelpFingerprintAuthenticationStatus import com.android.systemui.kosmos.testScope import com.android.systemui.res.R import com.android.systemui.testKosmos import com.android.systemui.user.data.repository.FakeUserRepository.Companion.DEFAULT_SELECTED_USER import com.android.systemui.util.mockito.whenever Loading @@ -67,6 +69,7 @@ class BiometricMessageInteractorTest : SysuiTestCase() { private val faceAuthRepository = kosmos.fakeDeviceEntryFaceAuthRepository private val biometricSettingsRepository = kosmos.biometricSettingsRepository private val faceHelpMessageDeferral = kosmos.faceHelpMessageDeferral private val accessibilityRepository = kosmos.fakeAccessibilityRepository @Test fun fingerprintErrorMessage() = Loading Loading @@ -222,6 +225,28 @@ class BiometricMessageInteractorTest : SysuiTestCase() { ) } @Test fun fingerprintA11yMessage_fps() = testScope.runTest { val fingerprintA11yMessage by collectLastValue(underTest.fingerprintMessage) // GIVEN UDFPS fingerprintPropertyRepository.setProperties( 0, SensorStrength.STRONG, FingerprintSensorType.UDFPS_OPTICAL, mapOf(), ) accessibilityRepository.isTouchExplorationEnabled.value = true // GIVEN fingerprint is allowed biometricSettingsRepository.setIsFingerprintAuthCurrentlyAllowed(true) // THEN fingerprintA11yMessage is updated to fps message assertThat(fingerprintA11yMessage?.message) .isEqualTo(kosmos.mainResources.getString(R.string.fingerprint_dialog_touch_sensor)) } @Test fun faceFailedMessage_primaryAuthRequired() = testScope.runTest { Loading
packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/BiometricMessageInteractor.kt +17 −1 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.systemui.deviceentry.domain.interactor import android.content.res.Resources import com.android.systemui.accessibility.domain.interactor.AccessibilityInteractor import com.android.systemui.biometrics.domain.interactor.FingerprintPropertyInteractor import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Main Loading Loading @@ -61,6 +62,7 @@ constructor( private val biometricSettingsInteractor: DeviceEntryBiometricSettingsInteractor, faceHelpMessageDeferralInteractor: FaceHelpMessageDeferralInteractor, devicePostureInteractor: DevicePostureInteractor, private val accessibilityInteractor: AccessibilityInteractor, ) { private val faceHelp: Flow<HelpFaceAuthenticationStatus> = faceAuthInteractor.authenticationStatus.filterIsInstance<HelpFaceAuthenticationStatus>() Loading Loading @@ -133,6 +135,15 @@ constructor( } } private val fingerprintA11yMessage: Flow<FingerprintMessage> = accessibilityInteractor.isTouchExplorationEnabled .sample(biometricSettingsInteractor.fingerprintAuthCurrentlyAllowed, ::Pair) .filter { (_, fingerprintAuthAllowed) -> fingerprintAuthAllowed } .filter { (touchExplorationEnabled, _) -> touchExplorationEnabled } .map { FingerprintMessage(resources.getString(R.string.fingerprint_dialog_touch_sensor)) } val coExFaceAcquisitionMsgIdsToShow: Flow<Set<Int>> = devicePostureInteractor.posture.map { devicePosture -> when (devicePosture) { Loading @@ -145,7 +156,12 @@ constructor( } val fingerprintMessage: Flow<FingerprintMessage> = merge(fingerprintErrorMessage, fingerprintFailMessage, fingerprintHelpMessage) merge( fingerprintErrorMessage, fingerprintFailMessage, fingerprintHelpMessage, fingerprintA11yMessage, ) private val filterConditionForFaceHelpMessages: Flow<(HelpFaceAuthenticationStatus) -> Boolean> = Loading
packages/SystemUI/tests/utils/src/com/android/systemui/deviceentry/domain/interactor/BiometricMessageInteractorKosmos.kt +2 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.systemui.deviceentry.domain.interactor import android.content.res.mainResources import com.android.systemui.accessibility.domain.interactor.accessibilityInteractor import com.android.systemui.biometrics.domain.interactor.fingerprintPropertyInteractor import com.android.systemui.keyguard.domain.interactor.devicePostureInteractor import com.android.systemui.kosmos.Kosmos Loading @@ -31,5 +32,6 @@ val Kosmos.biometricMessageInteractor by biometricSettingsInteractor = deviceEntryBiometricSettingsInteractor, faceHelpMessageDeferralInteractor = faceHelpMessageDeferralInteractor, devicePostureInteractor = devicePostureInteractor, accessibilityInteractor = accessibilityInteractor, ) }