From 0fe0f4d9ae1e03146daa1af057502c2edaf3ee64 Mon Sep 17 00:00:00 2001 From: Joshua McCloskey Date: Thu, 25 Jan 2024 01:50:57 +0000 Subject: [PATCH] Adding FingerprintEnrollConfirmation Bug: 295217067 Test: atest FingerprintEnrollConfirmationScreenshotTest.kt Test: adb shell device_config put biometrics_framework com.android.settings.flags.fingerprint_v2_enrollment true Change-Id: I0b4995a97b7bccd35e26ed89bbbf14b80af4b0e1 --- ...etrics_framework_flag_declarations.aconfig | 7 ++ .../FingerprintEnrollmentV2Activity.kt | 25 +++- ...FingerprintEnrollConfirmationV2Fragment.kt | 82 ++++++++++++- .../rfps/ui/viewmodel/RFPSViewModel.kt | 19 ++- .../FingerprintEnrollConfirmationViewModel.kt | 67 +++++++++++ .../viewmodel/FingerprintNavigationStep.kt | 2 + .../FingerprintNavigationViewModel.kt | 2 +- tests/screenshot/OWNERS | 2 + .../robolectric/fp_enroll_confirmation.png | Bin 0 -> 103384 bytes .../biometrics/fingerprint/Injector.kt | 5 + ...erprintEnrollConfirmationScreenshotTest.kt | 46 ++++++++ ...gerprintEnrollFindSensorViewModelV2Test.kt | 18 ++- ...gerprintEnrollConfirmationViewModelTest.kt | 111 ++++++++++++++++++ 13 files changed, 367 insertions(+), 19 deletions(-) create mode 100644 src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollConfirmationViewModel.kt create mode 100644 tests/screenshot/OWNERS create mode 100644 tests/screenshot/assets/robolectric/fp_enroll_confirmation.png create mode 100644 tests/screenshot/src/com/android/settings/tests/screenshot/biometrics/fingerprint/fragment/FingerprintEnrollConfirmationScreenshotTest.kt create mode 100644 tests/unit/src/com/android/settings/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollConfirmationViewModelTest.kt diff --git a/aconfig/settings_biometrics_framework_flag_declarations.aconfig b/aconfig/settings_biometrics_framework_flag_declarations.aconfig index e9f19bc4ff4..4355ed146f7 100644 --- a/aconfig/settings_biometrics_framework_flag_declarations.aconfig +++ b/aconfig/settings_biometrics_framework_flag_declarations.aconfig @@ -7,3 +7,10 @@ flag { description: "This flag enables or disables the BiometricSettingsProvider" bug: "303595205" } + +flag { + name: "fingerprint_v2_enrollment" + namespace: "biometrics_framework" + description: "This flag enables or disables the Fingerprint v2 enrollment" + bug: "295206723" +} diff --git a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/activity/FingerprintEnrollmentV2Activity.kt b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/activity/FingerprintEnrollmentV2Activity.kt index 65030de3f07..d26b812a686 100644 --- a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/activity/FingerprintEnrollmentV2Activity.kt +++ b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/activity/FingerprintEnrollmentV2Activity.kt @@ -37,13 +37,13 @@ import com.android.settings.biometrics.BiometricEnrollBase.CONFIRM_REQUEST import com.android.settings.biometrics.BiometricEnrollBase.RESULT_FINISHED import com.android.settings.biometrics.GatekeeperPasswordProvider import com.android.settings.biometrics.fingerprint2.data.repository.FingerprintSensorRepositoryImpl -import com.android.settings.biometrics.fingerprint2.domain.interactor.PressToAuthInteractorImpl import com.android.settings.biometrics.fingerprint2.domain.interactor.AccessibilityInteractorImpl import com.android.settings.biometrics.fingerprint2.domain.interactor.FingerprintManagerInteractorImpl import com.android.settings.biometrics.fingerprint2.domain.interactor.FoldStateInteractor import com.android.settings.biometrics.fingerprint2.domain.interactor.FoldStateInteractorImpl import com.android.settings.biometrics.fingerprint2.domain.interactor.OrientationInteractor import com.android.settings.biometrics.fingerprint2.domain.interactor.OrientationInteractorImpl +import com.android.settings.biometrics.fingerprint2.domain.interactor.PressToAuthInteractorImpl import com.android.settings.biometrics.fingerprint2.lib.model.Default import com.android.settings.biometrics.fingerprint2.lib.model.SetupWizard import com.android.settings.biometrics.fingerprint2.ui.enrollment.fragment.FingerprintEnrollConfirmationV2Fragment @@ -54,6 +54,7 @@ import com.android.settings.biometrics.fingerprint2.ui.enrollment.modules.enroll import com.android.settings.biometrics.fingerprint2.ui.enrollment.modules.enrolling.rfps.ui.viewmodel.RFPSViewModel import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.BackgroundViewModel import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintAction +import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollConfirmationViewModel import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollEnrollingViewModel import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollFindSensorViewModel import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollIntroViewModel @@ -70,6 +71,7 @@ import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.Fing import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintNavigationViewModel import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintScrollViewModel import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.GatekeeperInfo +import com.android.settings.flags.Flags import com.android.settings.password.ChooseLockGeneric import com.android.settings.password.ChooseLockSettingsHelper import com.android.settings.password.ChooseLockSettingsHelper.EXTRA_KEY_GK_PW_HANDLE @@ -96,6 +98,8 @@ class FingerprintEnrollmentV2Activity : FragmentActivity() { private lateinit var fingerprintScrollViewModel: FingerprintScrollViewModel private lateinit var backgroundViewModel: BackgroundViewModel private lateinit var fingerprintFlowViewModel: FingerprintFlowViewModel + private lateinit var fingerprintEnrollConfirmationViewModel: + FingerprintEnrollConfirmationViewModel private val coroutineDispatcher = Dispatchers.Default /** Result listener for ChooseLock activity flow. */ @@ -155,6 +159,15 @@ class FingerprintEnrollmentV2Activity : FragmentActivity() { // TODO(b/299573056): Show split screen dialog when it's in multi window mode. setContentView(R.layout.fingerprint_v2_enroll_main) + if (!Flags.fingerprintV2Enrollment()) { + check(false) { + "fingerprint enrollment v2 is not enabled, " + + "please run adb shell device_config put " + + "biometrics_framework com.android.settings.flags.fingerprint_v2_enrollment true" + } + finish() + } + setTheme(SetupWizardUtils.getTheme(applicationContext, intent)) ThemeHelper.trySetDynamicColor(applicationContext) @@ -293,6 +306,15 @@ class FingerprintEnrollmentV2Activity : FragmentActivity() { ), )[RFPSViewModel::class.java] + fingerprintEnrollConfirmationViewModel = + ViewModelProvider( + this, + FingerprintEnrollConfirmationViewModel.FingerprintEnrollConfirmationViewModelFactory( + navigationViewModel, + fingerprintManagerInteractor, + ), + )[FingerprintEnrollConfirmationViewModel::class.java] + lifecycleScope.launch { navigationViewModel.currentStep.collect { step -> if (step is Init) { @@ -304,6 +326,7 @@ class FingerprintEnrollmentV2Activity : FragmentActivity() { lifecycleScope.launch { navigationViewModel.navigateTo.filterNotNull().collect { step -> + Log.d(TAG, "navigateTo: $step") if (step is ConfirmDeviceCredential) { launchConfirmOrChooseLock(userId) navigationViewModel.update( diff --git a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/fragment/FingerprintEnrollConfirmationV2Fragment.kt b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/fragment/FingerprintEnrollConfirmationV2Fragment.kt index fd07a952056..d8c1c93f910 100644 --- a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/fragment/FingerprintEnrollConfirmationV2Fragment.kt +++ b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/fragment/FingerprintEnrollConfirmationV2Fragment.kt @@ -17,7 +17,21 @@ package com.android.settings.biometrics.fingerprint2.ui.enrollment.fragment import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.annotation.VisibleForTesting import androidx.fragment.app.Fragment +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.ViewModelProvider +import androidx.lifecycle.lifecycleScope +import androidx.lifecycle.repeatOnLifecycle +import com.android.settings.R +import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollConfirmationViewModel +import com.google.android.setupcompat.template.FooterBarMixin +import com.google.android.setupcompat.template.FooterButton +import com.google.android.setupdesign.GlifLayout +import kotlinx.coroutines.launch /** * A fragment to indicate that fingerprint enrollment has been completed. @@ -25,9 +39,71 @@ import androidx.fragment.app.Fragment * This page will display basic information about what a fingerprint can be used for and acts as the * final step of enrollment. */ -class FingerprintEnrollConfirmationV2Fragment : Fragment() { +class FingerprintEnrollConfirmationV2Fragment() : + Fragment(R.layout.fingerprint_enroll_finish_base) { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) + companion object { + const val TAG = "FingerprintEnrollConfirmationV2Fragment" + } + + /** Used for testing purposes */ + private var factory: ViewModelProvider.Factory? = null + + @VisibleForTesting + constructor(theFactory: ViewModelProvider.Factory) : this() { + factory = theFactory + } + + private val viewModelProvider: ViewModelProvider by lazy { + if (factory != null) { + ViewModelProvider(requireActivity(), factory!!) + } else { + ViewModelProvider(requireActivity()) + } + } + + private val viewModel: FingerprintEnrollConfirmationViewModel by lazy { + viewModelProvider[FingerprintEnrollConfirmationViewModel::class.java] + } + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle?, + ): View? = + super.onCreateView(inflater, container, savedInstanceState).also { theView -> + val mainView = theView!! as GlifLayout + + mainView.setHeaderText(R.string.security_settings_fingerprint_enroll_finish_title) + mainView.setDescriptionText(R.string.security_settings_fingerprint_enroll_finish_v2_message) + + val mixin = mainView.getMixin(FooterBarMixin::class.java) + viewLifecycleOwner.lifecycleScope.launch { + repeatOnLifecycle(Lifecycle.State.RESUMED) { + viewModel.isAddAnotherButtonVisible.collect { + mixin.secondaryButton = + FooterButton.Builder(requireContext()) + .setText(R.string.fingerprint_enroll_button_add) + .setListener { viewModel.onAddAnotherButtonClicked() } + .setButtonType(FooterButton.ButtonType.SKIP) + .setTheme(com.google.android.setupdesign.R.style.SudGlifButton_Secondary) + .build() + } + } + } + + mixin.setPrimaryButton( + FooterButton.Builder(requireContext()) + .setText(R.string.security_settings_fingerprint_enroll_done) + .setListener(this::onNextButtonClick) + .setButtonType(FooterButton.ButtonType.NEXT) + .setTheme(com.google.android.setupdesign.R.style.SudGlifButton_Primary) + .build() + ) + } + + @Suppress("UNUSED_PARAMETER") + private fun onNextButtonClick(view: View?) { + viewModel.onNextButtonClicked() } } diff --git a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/modules/enrolling/rfps/ui/viewmodel/RFPSViewModel.kt b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/modules/enrolling/rfps/ui/viewmodel/RFPSViewModel.kt index 2408a8873a8..6ee57099ea2 100644 --- a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/modules/enrolling/rfps/ui/viewmodel/RFPSViewModel.kt +++ b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/modules/enrolling/rfps/ui/viewmodel/RFPSViewModel.kt @@ -47,10 +47,12 @@ class RFPSViewModel( /** Value to indicate if the text view is visible or not */ val textViewIsVisible: Flow = _textViewIsVisible.asStateFlow() + private var _shouldAnimateIcon: Flow = + fingerprintEnrollViewModel.enrollFlowShouldBeRunning /** Indicates if the icon should be animating or not */ - val shouldAnimateIcon = fingerprintEnrollViewModel.enrollFlowShouldBeRunning + val shouldAnimateIcon = _shouldAnimateIcon - private val enrollFlow: Flow = fingerprintEnrollViewModel.enrollFLow + private var enrollFlow: Flow = fingerprintEnrollViewModel.enrollFLow /** * Enroll progress message with a replay of size 1 allowing for new subscribers to get the most @@ -59,7 +61,7 @@ class RFPSViewModel( val progress: Flow = enrollFlow .filterIsInstance() - .shareIn(viewModelScope, SharingStarted.Eagerly, 1) + .shareIn(viewModelScope, SharingStarted.Eagerly, 0) /** Clear help message on enroll progress */ val clearHelpMessage: Flow = progress.map { it != null } @@ -122,6 +124,7 @@ class RFPSViewModel( /** Indicates the negative button has been clicked */ fun negativeButtonClicked() { + doReset() navigationViewModel.update( FingerprintAction.NEGATIVE_BUTTON_PRESSED, navStep, @@ -129,11 +132,19 @@ class RFPSViewModel( ) } - /** Indicates that enrollment has been finished and we can proceed to the next step. */ + /** Indicates that an enrollment was completed */ fun finishedSuccessfully() { + doReset() navigationViewModel.update(FingerprintAction.NEXT, navStep, "${TAG}#progressFinished") } + private fun doReset() { + _textViewIsVisible.update { false } + _shouldAnimateIcon = fingerprintEnrollViewModel.enrollFlowShouldBeRunning + /** Indicates if the icon should be animating or not */ + enrollFlow = fingerprintEnrollViewModel.enrollFLow + } + class RFPSViewModelFactory( private val fingerprintEnrollEnrollingViewModel: FingerprintEnrollEnrollingViewModel, private val navigationViewModel: FingerprintNavigationViewModel, diff --git a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollConfirmationViewModel.kt b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollConfirmationViewModel.kt new file mode 100644 index 00000000000..d9b31d7f622 --- /dev/null +++ b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollConfirmationViewModel.kt @@ -0,0 +1,67 @@ +/* + * Copyright (C) 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.ViewModelProvider +import com.android.settings.biometrics.fingerprint2.lib.domain.interactor.FingerprintManagerInteractor +import kotlinx.coroutines.flow.Flow + +/** + * Models the UI state for [FingerprintEnrollConfirmationV2Fragment] + */ +class FingerprintEnrollConfirmationViewModel( + private val navigationViewModel: FingerprintNavigationViewModel, + fingerprintInteractor: FingerprintManagerInteractor, +) : ViewModel() { + + /** + * Indicates if the add another button is possible. This should only be true when the user is able + * to enroll more fingerprints. + */ + val isAddAnotherButtonVisible: Flow = fingerprintInteractor.canEnrollFingerprints + + /** + * Indicates that the user has clicked the next button and is done with fingerprint enrollment. + */ + fun onNextButtonClicked() { + navigationViewModel.update(FingerprintAction.NEXT, navStep, "onNextButtonClicked") + } + + /** + * Indicates that the user has clicked the add another button and will be sent to the enrollment + * screen. + */ + fun onAddAnotherButtonClicked() { + navigationViewModel.update(FingerprintAction.ADD_ANOTHER, navStep, "onAddAnotherButtonClicked") + } + + class FingerprintEnrollConfirmationViewModelFactory( + private val navigationViewModel: FingerprintNavigationViewModel, + private val fingerprintInteractor: FingerprintManagerInteractor, + ) : ViewModelProvider.Factory { + @Suppress("UNCHECKED_CAST") + override fun create(modelClass: Class): T { + return FingerprintEnrollConfirmationViewModel(navigationViewModel, fingerprintInteractor) as T + } + } + + companion object { + private const val TAG = "FingerprintEnrollConfirmationViewModel" + private val navStep = FingerprintNavigationStep.Confirmation::class + } +} diff --git a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FingerprintNavigationStep.kt b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FingerprintNavigationStep.kt index 979f9533e0f..76b4895f2bb 100644 --- a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FingerprintNavigationStep.kt +++ b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FingerprintNavigationStep.kt @@ -37,6 +37,7 @@ enum class FingerprintAction { ACTIVITY_CREATED, NEGATIVE_BUTTON_PRESSED, USER_CLICKED_FINISH, + ADD_ANOTHER, } /** State that can be used to help a [FingerprintNavigationStep] determine the next step to take. */ @@ -179,6 +180,7 @@ sealed interface FingerprintNavigationStep { return when (action) { FingerprintAction.NEXT -> Finish(null) FingerprintAction.PREV -> TransitionStep(Education(state.fingerprintSensor!!)) + FingerprintAction.ADD_ANOTHER -> TransitionStep(Enrollment(state.fingerprintSensor!!)) else -> null } } diff --git a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FingerprintNavigationViewModel.kt b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FingerprintNavigationViewModel.kt index 26c20cff8af..131f5bb1e96 100644 --- a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FingerprintNavigationViewModel.kt +++ b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FingerprintNavigationViewModel.kt @@ -89,7 +89,7 @@ class FingerprintNavigationViewModel( fun update(action: FingerprintAction, caller: KClass<*>, debugStr: String) { Log.d(TAG, "$caller.update($action) $debugStr") val currentStep = _currentStep.value - val isUiStep = currentStep is UiStep + val isUiStep = currentStep is UiStep && caller is UiStep if (currentStep == null) { throw NullPointerException("current step is null") } diff --git a/tests/screenshot/OWNERS b/tests/screenshot/OWNERS new file mode 100644 index 00000000000..fbe29d186c1 --- /dev/null +++ b/tests/screenshot/OWNERS @@ -0,0 +1,2 @@ +joshmccloskey@google.com +jbolinger@google.com diff --git a/tests/screenshot/assets/robolectric/fp_enroll_confirmation.png b/tests/screenshot/assets/robolectric/fp_enroll_confirmation.png new file mode 100644 index 0000000000000000000000000000000000000000..db9009be8b7856f93fbaa41a2fb5071d7c9eca26 GIT binary patch literal 103384 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%0DEm2fOO=;moF-TX`Ht|DF9-q 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 z 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 literal 0 HcmV?d00001 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 84d76ff5501..3cd2002d396 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 @@ -27,6 +27,7 @@ import com.android.settings.biometrics.fingerprint2.lib.model.Default import com.android.settings.biometrics.fingerprint2.ui.enrollment.modules.enrolling.rfps.ui.viewmodel.RFPSIconTouchViewModel import com.android.settings.biometrics.fingerprint2.ui.enrollment.modules.enrolling.rfps.ui.viewmodel.RFPSViewModel import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.BackgroundViewModel +import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollConfirmationViewModel import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollEnrollingViewModel import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollFindSensorViewModel import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollIntroViewModel @@ -103,6 +104,9 @@ class Injector(step: FingerprintNavigationStep.UiStep) { var rfpsViewModel = RFPSViewModel(fingerprintEnrollEnrollingViewModel, navigationViewModel, orientationInteractor) + val fingerprintEnrollConfirmationViewModel = + FingerprintEnrollConfirmationViewModel(navigationViewModel, interactor) + var fingerprintFindSensorViewModel = FingerprintEnrollFindSensorViewModel( navigationViewModel, @@ -131,6 +135,7 @@ class Injector(step: FingerprintNavigationStep.UiStep) { BackgroundViewModel::class.java -> backgroundViewModel RFPSIconTouchViewModel::class.java -> rfpsIconTouchViewModel FingerprintEnrollEnrollingViewModel::class.java -> fingerprintEnrollEnrollingViewModel + FingerprintEnrollConfirmationViewModel::class.java -> fingerprintEnrollConfirmationViewModel else -> null } as T diff --git a/tests/screenshot/src/com/android/settings/tests/screenshot/biometrics/fingerprint/fragment/FingerprintEnrollConfirmationScreenshotTest.kt b/tests/screenshot/src/com/android/settings/tests/screenshot/biometrics/fingerprint/fragment/FingerprintEnrollConfirmationScreenshotTest.kt new file mode 100644 index 00000000000..28f4fbec5d5 --- /dev/null +++ b/tests/screenshot/src/com/android/settings/tests/screenshot/biometrics/fingerprint/fragment/FingerprintEnrollConfirmationScreenshotTest.kt @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings.tests.screenshot.biometrics.fingerprint.fragment + +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.platform.app.InstrumentationRegistry +import com.android.settings.biometrics.fingerprint2.ui.enrollment.fragment.FingerprintEnrollConfirmationV2Fragment +import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintNavigationStep +import com.android.settings.tests.screenshot.biometrics.fingerprint.Injector +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import platform.test.screenshot.FragmentScreenshotTestRule +import platform.test.screenshot.ViewScreenshotTestRule.Mode + +@RunWith(AndroidJUnit4::class) +class FingerprintEnrollConfirmationScreenshotTest { + private val injector: Injector = Injector(FingerprintNavigationStep.Confirmation) + + @Rule + @JvmField + var rule: FragmentScreenshotTestRule = Injector.BiometricFragmentScreenShotRule() + + @Test + fun testConfirmation() { + rule.screenshotTest( + "fp_enroll_confirmation", + Mode.MatchSize, + FingerprintEnrollConfirmationV2Fragment(injector.factory), + ) + } +} 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 f202c4fb7c3..829716e0e2d 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 @@ -40,6 +40,7 @@ import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch @@ -119,21 +120,18 @@ class FingerprintEnrollFindSensorViewModelV2Test { } foldStateInteractor = object : FoldStateInteractor { - override val isFolded: Flow = foldState + override val isFolded: Flow = foldState.asStateFlow() + override fun onConfigurationChange(newConfig: Configuration) { - TODO("Not yet implemented") + foldState.update { false } } } + orientationInteractor = - object: OrientationInteractor { - override val orientation: Flow - get() = TODO("Not yet implemented") + object : OrientationInteractor { + override val orientation: Flow = flowOf(Configuration.ORIENTATION_LANDSCAPE) override val rotation: Flow = flowOf(Surface.ROTATION_0) - - override fun getRotationFromDefault(rotation: Int): Int { - TODO("Not yet implemented") - } - + override fun getRotationFromDefault(rotation: Int): Int = rotation } underTest = FingerprintEnrollFindSensorViewModel.FingerprintEnrollFindSensorViewModelFactory( 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 new file mode 100644 index 00000000000..696e4fa6bbb --- /dev/null +++ b/tests/unit/src/com/android/settings/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollConfirmationViewModelTest.kt @@ -0,0 +1,111 @@ +/* + * Copyright (C) 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings.fingerprint2.ui.enrollment.viewmodel + +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 +import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintFlowViewModel +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.google.common.truth.Truth.assertThat +import kotlinx.coroutines.launch +import kotlinx.coroutines.test.StandardTestDispatcher +import kotlinx.coroutines.test.TestScope +import kotlinx.coroutines.test.advanceUntilIdle +import kotlinx.coroutines.test.runCurrent +import kotlinx.coroutines.test.runTest +import org.junit.Before +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import org.mockito.junit.MockitoJUnit +import org.mockito.junit.MockitoJUnitRunner + +@RunWith(MockitoJUnitRunner::class) +class FingerprintEnrollConfirmationViewModelTest { + @JvmField @Rule var rule = MockitoJUnit.rule() + + @get:Rule val instantTaskRule = InstantTaskExecutorRule() + private var backgroundDispatcher = StandardTestDispatcher() + private var testScope = TestScope(backgroundDispatcher) + val fingerprintFlowViewModel = FingerprintFlowViewModel(Default) + val fakeFingerprintManagerInteractor = FakeFingerprintManagerInteractor() + lateinit var navigationViewModel: FingerprintNavigationViewModel + lateinit var underTest: FingerprintEnrollConfirmationViewModel + + @Before + fun setup() { + navigationViewModel = + FingerprintNavigationViewModel( + FingerprintNavigationStep.Confirmation, + false, + fingerprintFlowViewModel, + fakeFingerprintManagerInteractor, + ) + underTest = + FingerprintEnrollConfirmationViewModel(navigationViewModel, fakeFingerprintManagerInteractor) + } + + @Test + fun testCanEnrollFingerprints() = + testScope.runTest { + fakeFingerprintManagerInteractor.sensorProp = + FingerprintSensor(0 /* sensorId */, SensorStrength.STRONG, 5, FingerprintSensorType.REAR) + fakeFingerprintManagerInteractor.enrolledFingerprintsInternal = mutableListOf() + fakeFingerprintManagerInteractor.enrollableFingerprints = 5 + + var canEnrollFingerprints: Boolean = false + val job = launch { underTest.isAddAnotherButtonVisible.collect { canEnrollFingerprints = it } } + + advanceUntilIdle() + assertThat(canEnrollFingerprints).isTrue() + job.cancel() + } + + @Test + fun testNextButtonSendsNextStep() = + testScope.runTest { + var step: FingerprintNavigationStep.UiStep? = null + val job = launch { navigationViewModel.navigateTo.collect { step = it } } + + underTest.onNextButtonClicked() + + runCurrent() + + assertThat(step).isNull() + job.cancel() + } + + @Test + fun testAddAnotherSendsAction() = + testScope.runTest { + var step: FingerprintNavigationStep.UiStep? = null + val job = launch { navigationViewModel.navigateTo.collect { step = it } } + + underTest.onAddAnotherButtonClicked() + + runCurrent() + + assertThat(step).isInstanceOf(FingerprintNavigationStep.Enrollment::class.java) + job.cancel() + } +}