From fb8069ae2ae416949807d019cbd2192272a955aa Mon Sep 17 00:00:00 2001 From: Joshua McCloskey Date: Tue, 26 Mar 2024 18:10:24 +0000 Subject: [PATCH] Updated FakeFingerprintManagerInteractor This class should use FingerprintSensorPropertiesInternal.toFingerprintSensor() instead of creating a FingerprintSensor(). Bug: 297082837 Test: atest Change-Id: I3b622563300931f1f1638ae63b1c44aa62189087 --- .../FingerprintEnrollIntroFragmentTest.kt | 18 +++- .../biometrics/fingerprint/Injector.kt | 23 ++++- .../FakeFingerprintManagerInteractor.kt | 30 ++++--- .../FingerprintManagerInteractorTest.kt | 33 +++++-- ...gerprintEnrollFindSensorViewModelV2Test.kt | 69 +++++++++++---- ...gerprintEnrollConfirmationViewModelTest.kt | 20 ++++- ...FingerprintEnrollEnrollingViewModelTest.kt | 23 +++-- .../FingerprintSettingsViewModelTest.kt | 87 ++++++++++++------- 8 files changed, 223 insertions(+), 80 deletions(-) diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint2/fragment/FingerprintEnrollIntroFragmentTest.kt b/tests/robotests/src/com/android/settings/biometrics/fingerprint2/fragment/FingerprintEnrollIntroFragmentTest.kt index cea72aa7753..e876289866e 100644 --- a/tests/robotests/src/com/android/settings/biometrics/fingerprint2/fragment/FingerprintEnrollIntroFragmentTest.kt +++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint2/fragment/FingerprintEnrollIntroFragmentTest.kt @@ -17,6 +17,11 @@ package com.android.settings.biometrics.fingerprint2.fragment import android.content.Context +import android.hardware.biometrics.ComponentInfoInternal +import android.hardware.biometrics.SensorLocationInternal +import android.hardware.biometrics.SensorProperties +import android.hardware.fingerprint.FingerprintSensorProperties +import android.hardware.fingerprint.FingerprintSensorPropertiesInternal import android.os.Bundle import androidx.fragment.app.testing.FragmentScenario import androidx.fragment.app.testing.launchFragmentInContainer @@ -47,6 +52,7 @@ import com.android.settings.testutils2.FakeFingerprintManagerInteractor import com.android.systemui.biometrics.shared.model.FingerprintSensor import com.android.systemui.biometrics.shared.model.FingerprintSensorType import com.android.systemui.biometrics.shared.model.SensorStrength +import com.android.systemui.biometrics.shared.model.toFingerprintSensor import com.google.android.setupdesign.GlifLayout import com.google.android.setupdesign.template.RequireScrollMixin import kotlinx.coroutines.test.StandardTestDispatcher @@ -67,7 +73,17 @@ class FingerprintEnrollIntroFragmentTest { private val backgroundDispatcher = StandardTestDispatcher() private lateinit var fragmentScenario: FragmentScenario private val fingerprintSensor = - FingerprintSensor(1, SensorStrength.STRONG, 5, FingerprintSensorType.POWER_BUTTON) + FingerprintSensorPropertiesInternal( + 0 /* sensorId */, + SensorProperties.STRENGTH_STRONG, + 5 /* maxEnrollmentsPerUser */, + listOf(), + FingerprintSensorProperties.TYPE_POWER_BUTTON, + false /* halControlsIllumination */, + true /* resetLockoutRequiresHardwareAuthToken */, + listOf(SensorLocationInternal.DEFAULT), + ) + .toFingerprintSensor() var enrollFlow = Default val flowViewModel = FingerprintFlowViewModel(enrollFlow) diff --git a/tests/screenshot/src/com/android/settings/tests/screenshot/biometrics/fingerprint/Injector.kt b/tests/screenshot/src/com/android/settings/tests/screenshot/biometrics/fingerprint/Injector.kt index 9d97fbf8f96..4d2865040cb 100644 --- a/tests/screenshot/src/com/android/settings/tests/screenshot/biometrics/fingerprint/Injector.kt +++ b/tests/screenshot/src/com/android/settings/tests/screenshot/biometrics/fingerprint/Injector.kt @@ -16,6 +16,11 @@ package com.android.settings.tests.screenshot.biometrics.fingerprint import android.content.res.Configuration +import android.hardware.biometrics.ComponentInfoInternal +import android.hardware.biometrics.SensorLocationInternal +import android.hardware.biometrics.SensorProperties +import android.hardware.fingerprint.FingerprintSensorProperties +import android.hardware.fingerprint.FingerprintSensorPropertiesInternal import android.view.Surface import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider @@ -39,9 +44,7 @@ import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.Fing import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintScrollViewModel import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.GatekeeperInfo import com.android.settings.testutils2.FakeFingerprintManagerInteractor -import com.android.systemui.biometrics.shared.model.FingerprintSensor -import com.android.systemui.biometrics.shared.model.FingerprintSensorType -import com.android.systemui.biometrics.shared.model.SensorStrength +import com.android.systemui.biometrics.shared.model.toFingerprintSensor import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow @@ -56,7 +59,19 @@ import platform.test.screenshot.matchers.PixelPerfectMatcher class Injector(step: FingerprintNavigationStep.UiStep) { var enrollFlow = Default - var fingerprintSensor = FingerprintSensor(1, SensorStrength.STRONG, 5, FingerprintSensorType.REAR) + var fingerprintSensor = + FingerprintSensorPropertiesInternal( + 0 /* sensorId */, + SensorProperties.STRENGTH_STRONG, + 5 /* maxEnrollmentsPerUser */, + listOf(), + FingerprintSensorProperties.TYPE_REAR, + false /* halControlsIllumination */, + true /* resetLockoutRequiresHardwareAuthToken */, + listOf(SensorLocationInternal.DEFAULT), + ) + .toFingerprintSensor() + var accessibilityInteractor = object : AccessibilityInteractor { override val isAccessibilityEnabled: Flow = flowOf(true) diff --git a/tests/shared/src/com/android/settings/testutils2/FakeFingerprintManagerInteractor.kt b/tests/shared/src/com/android/settings/testutils2/FakeFingerprintManagerInteractor.kt index f571dad420b..b39f0d18522 100644 --- a/tests/shared/src/com/android/settings/testutils2/FakeFingerprintManagerInteractor.kt +++ b/tests/shared/src/com/android/settings/testutils2/FakeFingerprintManagerInteractor.kt @@ -16,6 +16,11 @@ package com.android.settings.testutils2 +import android.hardware.biometrics.ComponentInfoInternal +import android.hardware.biometrics.SensorLocationInternal +import android.hardware.biometrics.SensorProperties +import android.hardware.fingerprint.FingerprintSensorProperties +import android.hardware.fingerprint.FingerprintSensorPropertiesInternal import com.android.settings.biometrics.fingerprint2.lib.domain.interactor.FingerprintManagerInteractor import com.android.settings.biometrics.fingerprint2.lib.model.EnrollReason import com.android.settings.biometrics.fingerprint2.lib.model.FingerEnrollState @@ -23,7 +28,7 @@ import com.android.settings.biometrics.fingerprint2.lib.model.FingerprintAuthAtt import com.android.settings.biometrics.fingerprint2.lib.model.FingerprintData import com.android.systemui.biometrics.shared.model.FingerprintSensor import com.android.systemui.biometrics.shared.model.FingerprintSensorType -import com.android.systemui.biometrics.shared.model.SensorStrength +import com.android.systemui.biometrics.shared.model.toFingerprintSensor import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flow import kotlinx.coroutines.flow.flowOf @@ -35,16 +40,20 @@ class FakeFingerprintManagerInteractor : FingerprintManagerInteractor { var enrolledFingerprintsInternal: MutableList = mutableListOf() var challengeToGenerate: Pair = Pair(-1L, byteArrayOf()) var authenticateAttempt = FingerprintAuthAttemptModel.Success(1) - var enrollStateViewModel: List = - listOf(FingerEnrollState.EnrollProgress(5, 5)) + var enrollStateViewModel: List = listOf(FingerEnrollState.EnrollProgress(5, 5)) var sensorProp = - FingerprintSensor( - 0 /* sensorId */, - SensorStrength.STRONG, - 5, - FingerprintSensorType.POWER_BUTTON - ) + FingerprintSensorPropertiesInternal( + 0 /* sensorId */, + SensorProperties.STRENGTH_STRONG, + 5 /* maxEnrollmentsPerUser */, + listOf(), + FingerprintSensorProperties.TYPE_POWER_BUTTON, + false /* halControlsIllumination */, + true /* resetLockoutRequiresHardwareAuthToken */, + listOf(SensorLocationInternal.DEFAULT), + ) + .toFingerprintSensor() override suspend fun authenticate(): FingerprintAuthAttemptModel { return authenticateAttempt @@ -68,7 +77,7 @@ class FakeFingerprintManagerInteractor : FingerprintManagerInteractor { override suspend fun enroll( hardwareAuthToken: ByteArray?, - enrollReason: EnrollReason + enrollReason: EnrollReason, ): Flow = flowOf(*enrollStateViewModel.toTypedArray()) override suspend fun removeFingerprint(fp: FingerprintData): Boolean { @@ -84,5 +93,4 @@ class FakeFingerprintManagerInteractor : FingerprintManagerInteractor { override suspend fun hasSideFps(): Boolean { return sensorProp.sensorType == FingerprintSensorType.POWER_BUTTON } - } diff --git a/tests/unit/src/com/android/settings/fingerprint2/domain/interactor/FingerprintManagerInteractorTest.kt b/tests/unit/src/com/android/settings/fingerprint2/domain/interactor/FingerprintManagerInteractorTest.kt index 2b4bff77bc7..58d18f69db0 100644 --- a/tests/unit/src/com/android/settings/fingerprint2/domain/interactor/FingerprintManagerInteractorTest.kt +++ b/tests/unit/src/com/android/settings/fingerprint2/domain/interactor/FingerprintManagerInteractorTest.kt @@ -18,18 +18,23 @@ package com.android.settings.fingerprint2.domain.interactor import android.content.Context import android.content.Intent +import android.hardware.biometrics.ComponentInfoInternal +import android.hardware.biometrics.SensorLocationInternal +import android.hardware.biometrics.SensorProperties import android.hardware.fingerprint.Fingerprint import android.hardware.fingerprint.FingerprintEnrollOptions import android.hardware.fingerprint.FingerprintManager import android.hardware.fingerprint.FingerprintManager.CryptoObject import android.hardware.fingerprint.FingerprintManager.FINGERPRINT_ERROR_LOCKOUT_PERMANENT +import android.hardware.fingerprint.FingerprintSensorProperties +import android.hardware.fingerprint.FingerprintSensorPropertiesInternal import android.os.CancellationSignal import android.os.Handler import androidx.test.core.app.ApplicationProvider import com.android.settings.biometrics.GatekeeperPasswordProvider import com.android.settings.biometrics.fingerprint2.data.repository.FingerprintSensorRepository -import com.android.settings.biometrics.fingerprint2.domain.interactor.PressToAuthInteractor import com.android.settings.biometrics.fingerprint2.domain.interactor.FingerprintManagerInteractorImpl +import com.android.settings.biometrics.fingerprint2.domain.interactor.PressToAuthInteractor import com.android.settings.biometrics.fingerprint2.lib.domain.interactor.FingerprintManagerInteractor import com.android.settings.biometrics.fingerprint2.lib.model.Default import com.android.settings.biometrics.fingerprint2.lib.model.EnrollReason @@ -38,8 +43,7 @@ import com.android.settings.biometrics.fingerprint2.lib.model.FingerprintAuthAtt import com.android.settings.biometrics.fingerprint2.lib.model.FingerprintData import com.android.settings.password.ChooseLockSettingsHelper import com.android.systemui.biometrics.shared.model.FingerprintSensor -import com.android.systemui.biometrics.shared.model.FingerprintSensorType -import com.android.systemui.biometrics.shared.model.SensorStrength +import com.android.systemui.biometrics.shared.model.toFingerprintSensor import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.cancelAndJoin import kotlinx.coroutines.flow.Flow @@ -85,7 +89,18 @@ class FingerprintManagerInteractorTest { @Before fun setup() { - val sensor = FingerprintSensor(1, SensorStrength.STRONG, 5, FingerprintSensorType.POWER_BUTTON) + val sensor = + FingerprintSensorPropertiesInternal( + 0 /* sensorId */, + SensorProperties.STRENGTH_STRONG, + 5 /* maxEnrollmentsPerUser */, + listOf(), + FingerprintSensorProperties.TYPE_POWER_BUTTON, + false /* halControlsIllumination */, + true /* resetLockoutRequiresHardwareAuthToken */, + listOf(SensorLocationInternal.DEFAULT), + ) + .toFingerprintSensor() val fingerprintSensorRepository = object : FingerprintSensorRepository { override val fingerprintSensor: Flow = flowOf(sensor) @@ -135,7 +150,7 @@ class FingerprintManagerInteractorTest { listOf( Fingerprint("Finger 1,", 2, 3L), Fingerprint("Finger 2,", 3, 3L), - Fingerprint("Finger 3,", 4, 3L) + Fingerprint("Finger 3,", 4, 3L), ) val fingerprintList2: List = fingerprintList1.plus( @@ -160,7 +175,7 @@ class FingerprintManagerInteractorTest { gateKeeperPasswordProvider.requestGatekeeperHat( any(Intent::class.java), anyLong(), - anyInt() + anyInt(), ) ) .thenReturn(byteArray) @@ -223,7 +238,7 @@ class FingerprintManagerInteractorTest { removalCallback.value.onRemovalError( fingerprintToRemove, 100, - "Oh no, we couldn't find that one" + "Oh no, we couldn't find that one", ) runCurrent() @@ -260,7 +275,7 @@ class FingerprintManagerInteractorTest { any(CancellationSignal::class.java), capture(authCallback), nullable(Handler::class.java), - anyInt() + anyInt(), ) authCallback.value.onAuthenticationSucceeded( FingerprintManager.AuthenticationResult(null, fingerprint, 1, false) @@ -287,7 +302,7 @@ class FingerprintManagerInteractorTest { any(CancellationSignal::class.java), capture(authCallback), nullable(Handler::class.java), - anyInt() + anyInt(), ) authCallback.value.onAuthenticationError(FINGERPRINT_ERROR_LOCKOUT_PERMANENT, "Lockout!!") diff --git a/tests/unit/src/com/android/settings/fingerprint2/enrollment/viewmodel/FingerprintEnrollFindSensorViewModelV2Test.kt b/tests/unit/src/com/android/settings/fingerprint2/enrollment/viewmodel/FingerprintEnrollFindSensorViewModelV2Test.kt index 829716e0e2d..5fcd772cdcc 100644 --- a/tests/unit/src/com/android/settings/fingerprint2/enrollment/viewmodel/FingerprintEnrollFindSensorViewModelV2Test.kt +++ b/tests/unit/src/com/android/settings/fingerprint2/enrollment/viewmodel/FingerprintEnrollFindSensorViewModelV2Test.kt @@ -18,6 +18,11 @@ package com.android.settings.fingerprint2.enrollment.viewmodel import android.content.Context import android.content.res.Configuration +import android.hardware.biometrics.ComponentInfoInternal +import android.hardware.biometrics.SensorLocationInternal +import android.hardware.biometrics.SensorProperties +import android.hardware.fingerprint.FingerprintSensorProperties +import android.hardware.fingerprint.FingerprintSensorPropertiesInternal import android.view.Surface import androidx.arch.core.executor.testing.InstantTaskExecutorRule import androidx.test.core.app.ApplicationProvider @@ -33,9 +38,7 @@ import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.Fing import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintNavigationStep import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintNavigationViewModel import com.android.settings.testutils2.FakeFingerprintManagerInteractor -import com.android.systemui.biometrics.shared.model.FingerprintSensor -import com.android.systemui.biometrics.shared.model.FingerprintSensorType -import com.android.systemui.biometrics.shared.model.SensorStrength +import com.android.systemui.biometrics.shared.model.toFingerprintSensor import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow @@ -94,7 +97,19 @@ class FingerprintEnrollFindSensorViewModelV2Test { ) .create(FingerprintGatekeeperViewModel::class.java) - val sensor = FingerprintSensor(1, SensorStrength.STRONG, 5, FingerprintSensorType.POWER_BUTTON) + val sensor = + FingerprintSensorPropertiesInternal( + 0 /* sensorId */, + SensorProperties.STRENGTH_STRONG, + 5 /* maxEnrollmentsPerUser */, + listOf(), + FingerprintSensorProperties.TYPE_POWER_BUTTON, + false /* halControlsIllumination */, + true /* resetLockoutRequiresHardwareAuthToken */, + listOf(SensorLocationInternal.DEFAULT), + ) + .toFingerprintSensor() + val fingerprintFlowViewModel = FingerprintFlowViewModel(Default) navigationViewModel = FingerprintNavigationViewModel( @@ -159,12 +174,17 @@ class FingerprintEnrollFindSensorViewModelV2Test { fun udfpsLottieInfo() = testScope.runTest { fakeFingerprintManagerInteractor.sensorProp = - FingerprintSensor( - 0 /* sensorId */, - SensorStrength.STRONG, - 5, - FingerprintSensorType.UDFPS_OPTICAL, - ) + FingerprintSensorPropertiesInternal( + 0 /* sensorId */, + SensorProperties.STRENGTH_STRONG, + 5 /* maxEnrollmentsPerUser */, + listOf(), + FingerprintSensorProperties.TYPE_UDFPS_OPTICAL, + false /* halControlsIllumination */, + true /* resetLockoutRequiresHardwareAuthToken */, + listOf(SensorLocationInternal.DEFAULT), + ) + .toFingerprintSensor() var udfpsLottieInfo: Boolean? = null val job = launch { underTest.udfpsLottieInfo.collect { udfpsLottieInfo = it } } @@ -218,7 +238,17 @@ class FingerprintEnrollFindSensorViewModelV2Test { fun rfpsAnimation() = testScope.runTest { fakeFingerprintManagerInteractor.sensorProp = - FingerprintSensor(0 /* sensorId */, SensorStrength.STRONG, 5, FingerprintSensorType.REAR) + FingerprintSensorPropertiesInternal( + 0 /* sensorId */, + SensorProperties.STRENGTH_STRONG, + 5 /* maxEnrollmentsPerUser */, + listOf(), + FingerprintSensorProperties.TYPE_REAR, + false /* halControlsIllumination */, + true /* resetLockoutRequiresHardwareAuthToken */, + listOf(SensorLocationInternal.DEFAULT), + ) + .toFingerprintSensor() var showRfpsAnimation: Boolean? = null val job = launch { underTest.showRfpsAnimation.collect { showRfpsAnimation = it } } @@ -232,12 +262,17 @@ class FingerprintEnrollFindSensorViewModelV2Test { fun showPrimaryButton_ifUdfps() = testScope.runTest { fakeFingerprintManagerInteractor.sensorProp = - FingerprintSensor( - 0 /* sensorId */, - SensorStrength.STRONG, - 5, - FingerprintSensorType.UDFPS_OPTICAL, - ) + FingerprintSensorPropertiesInternal( + 0 /* sensorId */, + SensorProperties.STRENGTH_STRONG, + 5 /* maxEnrollmentsPerUser */, + listOf(), + FingerprintSensorProperties.TYPE_UDFPS_OPTICAL, + false /* halControlsIllumination */, + true /* resetLockoutRequiresHardwareAuthToken */, + listOf(SensorLocationInternal.DEFAULT), + ) + .toFingerprintSensor() var showPrimaryButton: Boolean? = null val job = launch { underTest.showPrimaryButton.collect { showPrimaryButton = it } } diff --git a/tests/unit/src/com/android/settings/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollConfirmationViewModelTest.kt b/tests/unit/src/com/android/settings/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollConfirmationViewModelTest.kt index 696e4fa6bbb..ad025cfb1c3 100644 --- a/tests/unit/src/com/android/settings/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollConfirmationViewModelTest.kt +++ b/tests/unit/src/com/android/settings/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollConfirmationViewModelTest.kt @@ -16,6 +16,11 @@ package com.android.settings.fingerprint2.ui.enrollment.viewmodel +import android.hardware.biometrics.ComponentInfoInternal +import android.hardware.biometrics.SensorLocationInternal +import android.hardware.biometrics.SensorProperties +import android.hardware.fingerprint.FingerprintSensorProperties +import android.hardware.fingerprint.FingerprintSensorPropertiesInternal import androidx.arch.core.executor.testing.InstantTaskExecutorRule import com.android.settings.biometrics.fingerprint2.lib.model.Default import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollConfirmationViewModel @@ -26,6 +31,7 @@ import com.android.settings.testutils2.FakeFingerprintManagerInteractor import com.android.systemui.biometrics.shared.model.FingerprintSensor import com.android.systemui.biometrics.shared.model.FingerprintSensorType import com.android.systemui.biometrics.shared.model.SensorStrength +import com.android.systemui.biometrics.shared.model.toFingerprintSensor import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.launch import kotlinx.coroutines.test.StandardTestDispatcher @@ -68,8 +74,18 @@ class FingerprintEnrollConfirmationViewModelTest { @Test fun testCanEnrollFingerprints() = testScope.runTest { - fakeFingerprintManagerInteractor.sensorProp = - FingerprintSensor(0 /* sensorId */, SensorStrength.STRONG, 5, FingerprintSensorType.REAR) + fakeFingerprintManagerInteractor.sensorProp = FingerprintSensorPropertiesInternal( + 0 /* sensorId */, + SensorProperties.STRENGTH_STRONG, + 5 /* maxEnrollmentsPerUser */, + listOf(), + FingerprintSensorProperties.TYPE_POWER_BUTTON, + false /* halControlsIllumination */, + true /* resetLockoutRequiresHardwareAuthToken */, + listOf(SensorLocationInternal.DEFAULT), + ) + .toFingerprintSensor() + fakeFingerprintManagerInteractor.enrolledFingerprintsInternal = mutableListOf() fakeFingerprintManagerInteractor.enrollableFingerprints = 5 diff --git a/tests/unit/src/com/android/settings/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollEnrollingViewModelTest.kt b/tests/unit/src/com/android/settings/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollEnrollingViewModelTest.kt index 4678da16f40..5a304330a16 100644 --- a/tests/unit/src/com/android/settings/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollEnrollingViewModelTest.kt +++ b/tests/unit/src/com/android/settings/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollEnrollingViewModelTest.kt @@ -16,6 +16,11 @@ package com.android.settings.fingerprint2.ui.enrollment.viewmodel +import android.hardware.biometrics.ComponentInfoInternal +import android.hardware.biometrics.SensorLocationInternal +import android.hardware.biometrics.SensorProperties +import android.hardware.fingerprint.FingerprintSensorProperties +import android.hardware.fingerprint.FingerprintSensorPropertiesInternal import androidx.arch.core.executor.testing.InstantTaskExecutorRule import com.android.settings.biometrics.fingerprint2.lib.model.Default import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.BackgroundViewModel @@ -26,11 +31,8 @@ import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.Fing import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintNavigationStep.Enrollment import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintNavigationViewModel import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.GatekeeperInfo -import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.NavigationState import com.android.settings.testutils2.FakeFingerprintManagerInteractor -import com.android.systemui.biometrics.shared.model.FingerprintSensor -import com.android.systemui.biometrics.shared.model.FingerprintSensorType -import com.android.systemui.biometrics.shared.model.SensorStrength +import com.android.systemui.biometrics.shared.model.toFingerprintSensor import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -72,7 +74,18 @@ class FingerprintEnrollEnrollingViewModelTest { fakeFingerprintManagerInteractor, ) .create(FingerprintGatekeeperViewModel::class.java) - val sensor = FingerprintSensor(1, SensorStrength.STRONG, 5, FingerprintSensorType.POWER_BUTTON) + val sensor = + FingerprintSensorPropertiesInternal( + 1 /* sensorId */, + SensorProperties.STRENGTH_STRONG, + 5 /* maxEnrollmentsPerUser */, + listOf(), + FingerprintSensorProperties.TYPE_POWER_BUTTON, + false /* halControlsIllumination */, + true /* resetLockoutRequiresHardwareAuthToken */, + listOf(SensorLocationInternal.DEFAULT), + ) + .toFingerprintSensor() val fingerprintFlowViewModel = FingerprintFlowViewModel(Default) navigationViewModel = diff --git a/tests/unit/src/com/android/settings/fingerprint2/ui/settings/FingerprintSettingsViewModelTest.kt b/tests/unit/src/com/android/settings/fingerprint2/ui/settings/FingerprintSettingsViewModelTest.kt index 6577c950bb0..1618e16d904 100644 --- a/tests/unit/src/com/android/settings/fingerprint2/ui/settings/FingerprintSettingsViewModelTest.kt +++ b/tests/unit/src/com/android/settings/fingerprint2/ui/settings/FingerprintSettingsViewModelTest.kt @@ -16,6 +16,11 @@ package com.android.settings.fingerprint2.ui.settings +import android.hardware.biometrics.ComponentInfoInternal +import android.hardware.biometrics.SensorLocationInternal +import android.hardware.biometrics.SensorProperties +import android.hardware.fingerprint.FingerprintSensorProperties +import android.hardware.fingerprint.FingerprintSensorPropertiesInternal import androidx.arch.core.executor.testing.InstantTaskExecutorRule import com.android.settings.biometrics.fingerprint2.lib.model.FingerprintAuthAttemptModel import com.android.settings.biometrics.fingerprint2.lib.model.FingerprintData @@ -23,9 +28,7 @@ import com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel.Finger import com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel.FingerprintSettingsViewModel import com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel.PreferenceViewModel import com.android.settings.testutils2.FakeFingerprintManagerInteractor -import com.android.systemui.biometrics.shared.model.FingerprintSensor -import com.android.systemui.biometrics.shared.model.FingerprintSensorType -import com.android.systemui.biometrics.shared.model.SensorStrength +import com.android.systemui.biometrics.shared.model.toFingerprintSensor import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.collectLatest @@ -96,12 +99,18 @@ class FingerprintSettingsViewModelTest { fun authenticate_DoesNotRun_ifOptical() = testScope.runTest { fakeFingerprintManagerInteractor.sensorProp = - FingerprintSensor( - 0 /* sensorId */, - SensorStrength.STRONG, - 5 /* maxEnrollmentsPerUser */, - FingerprintSensorType.UDFPS_OPTICAL, - ) + FingerprintSensorPropertiesInternal( + 0 /* sensorId */, + SensorProperties.STRENGTH_STRONG, + 5 /* maxEnrollmentsPerUser */, + listOf(), + FingerprintSensorProperties.TYPE_UDFPS_OPTICAL, + false /* halControlsIllumination */, + true /* resetLockoutRequiresHardwareAuthToken */, + listOf(SensorLocationInternal.DEFAULT), + ) + .toFingerprintSensor() + fakeFingerprintManagerInteractor.enrolledFingerprintsInternal = mutableListOf(FingerprintData("a", 1, 3L)) @@ -132,12 +141,18 @@ class FingerprintSettingsViewModelTest { fun authenticate_DoesNotRun_ifUltrasonic() = testScope.runTest { fakeFingerprintManagerInteractor.sensorProp = - FingerprintSensor( - 0 /* sensorId */, - SensorStrength.STRONG, - 5 /* maxEnrollmentsPerUser */, - FingerprintSensorType.UDFPS_ULTRASONIC, - ) + FingerprintSensorPropertiesInternal( + 0 /* sensorId */, + SensorProperties.STRENGTH_STRONG, + 5 /* maxEnrollmentsPerUser */, + listOf(), + FingerprintSensorProperties.TYPE_UDFPS_ULTRASONIC, + false /* halControlsIllumination */, + true /* resetLockoutRequiresHardwareAuthToken */, + listOf(SensorLocationInternal.DEFAULT), + ) + .toFingerprintSensor() + fakeFingerprintManagerInteractor.enrolledFingerprintsInternal = mutableListOf(FingerprintData("a", 1, 3L)) @@ -166,12 +181,18 @@ class FingerprintSettingsViewModelTest { fun authenticate_DoesRun_ifNotUdfps() = testScope.runTest { fakeFingerprintManagerInteractor.sensorProp = - FingerprintSensor( - 0 /* sensorId */, - SensorStrength.STRONG, - 5 /* maxEnrollmentsPerUser */, - FingerprintSensorType.POWER_BUTTON - ) + FingerprintSensorPropertiesInternal( + 0 /* sensorId */, + SensorProperties.STRENGTH_STRONG, + 5 /* maxEnrollmentsPerUser */, + listOf(), + FingerprintSensorProperties.TYPE_POWER_BUTTON, + false /* halControlsIllumination */, + true /* resetLockoutRequiresHardwareAuthToken */, + listOf(SensorLocationInternal.DEFAULT), + ) + .toFingerprintSensor() + fakeFingerprintManagerInteractor.enrolledFingerprintsInternal = mutableListOf(FingerprintData("a", 1, 3L)) val success = FingerprintAuthAttemptModel.Success(1) @@ -324,8 +345,7 @@ class FingerprintSettingsViewModelTest { runCurrent() assertThat(authAttempt).isEqualTo(success) - fakeFingerprintManagerInteractor.authenticateAttempt = - FingerprintAuthAttemptModel.Success(10) + fakeFingerprintManagerInteractor.authenticateAttempt = FingerprintAuthAttemptModel.Success(10) underTest.shouldAuthenticate(false) advanceTimeBy(400) runCurrent() @@ -372,14 +392,19 @@ class FingerprintSettingsViewModelTest { private fun setupAuth(): MutableList { fakeFingerprintManagerInteractor.sensorProp = - FingerprintSensor( - 0 /* sensorId */, - SensorStrength.STRONG, - 5 /* maxEnrollmentsPerUser */, - FingerprintSensorType.POWER_BUTTON - ) - val fingerprints = - mutableListOf(FingerprintData("a", 1, 3L), FingerprintData("b", 2, 5L)) + FingerprintSensorPropertiesInternal( + 0 /* sensorId */, + SensorProperties.STRENGTH_STRONG, + 5 /* maxEnrollmentsPerUser */, + listOf(), + FingerprintSensorProperties.TYPE_POWER_BUTTON, + false /* halControlsIllumination */, + true /* resetLockoutRequiresHardwareAuthToken */, + listOf(SensorLocationInternal.DEFAULT), + ) + .toFingerprintSensor() + + val fingerprints = mutableListOf(FingerprintData("a", 1, 3L), FingerprintData("b", 2, 5L)) fakeFingerprintManagerInteractor.enrolledFingerprintsInternal = fingerprints val success = FingerprintAuthAttemptModel.Success(1) fakeFingerprintManagerInteractor.authenticateAttempt = success