From d92faeb1cf8a1055dc96b75877be5a472eb9b92b Mon Sep 17 00:00:00 2001 From: Joshua McCloskey Date: Tue, 13 Feb 2024 18:56:07 +0000 Subject: [PATCH] Adding more biometric screenshot tests Test: atest FingerprintEnrollIntroScreenshotTest FingerprintEnrollFindSensorScreenshotTest FingerprintEnrollEnrollingScreenshotTest Bug: 297083009 Change-Id: I11df6fbaefa9d333dcfe803577947a4be7af9882 --- ...fingerprint_enroll_find_sensor_graphic.xml | 8 +- .../fingerprint_v2_enroll_find_sensor.xml | 43 ++--- .../fingerprint_v2_rfps_enroll_enrolling.xml | 65 +++---- .../settings/biometrics/fingerprint2/OWNERS | 3 +- ...Repo.kt => FingerprintSensorRepository.kt} | 6 +- .../data/repository/PressToAuthRepo.kt | 62 ------- .../interactor/AccessibilityInteractor.kt} | 42 +++-- .../FingerprintManagerInteractorImpl.kt | 13 +- .../domain/interactor/FoldStateInteractor.kt | 58 +++++++ .../interactor/OrientationInteractor.kt} | 62 +++---- .../interactor/PressToAuthInteractor.kt | 104 +++++++++++ .../FingerprintManagerInteractor.kt | 3 - .../FingerprintEnrollmentV2Activity.kt | 67 ++++---- .../FingerprintEnrollFindSensorV2Fragment.kt | 97 ++++++----- .../rfps/ui/fragment/RFPSEnrollFragment.kt | 43 +++-- .../rfps/ui/viewmodel/RFPSViewModel.kt | 18 +- .../rfps/ui/widget/RFPSProgressBar.kt | 13 +- .../FingerprintEnrollFindSensorViewModel.kt | 41 ++--- .../viewmodel/FingerprintEnrollViewModel.kt | 2 +- .../viewmodel/FoldStateViewModel.kt | 56 ------ .../fragment/FingerprintSettingsV2Fragment.kt | 9 +- .../biometrics/fingerprint2/fragment/OWNERS | 1 + tests/screenshot/AndroidManifest.xml | 4 +- .../robolectric/fp_enroll_enrolling.png | Bin 0 -> 84725 bytes .../robolectric/fp_enroll_find_sensor.png | Bin 0 -> 46734 bytes .../assets/robolectric/fp_enroll_intro.png | Bin 57858 -> 149140 bytes .../tests/screenshot/BasicScreenshotTest.kt | 142 --------------- .../settings/tests/screenshot/README.md | 12 ++ .../biometrics/fingerprint/Injector.kt | 161 ++++++++++++++++++ ...ingerprintEnrollEnrollingScreenshotTest.kt | 40 +++++ ...ngerprintEnrollFindSensorScreenshotTest.kt | 45 +++++ .../FingerprintEnrollIntroScreenshotTest.kt | 45 +++++ .../FakeFingerprintManagerInteractor.kt | 4 - .../FingerprintManagerInteractorTest.kt | 19 +-- ...gerprintEnrollFindSensorViewModelV2Test.kt | 71 +++++--- 35 files changed, 805 insertions(+), 554 deletions(-) rename src/com/android/settings/biometrics/fingerprint2/data/repository/{FingerprintSensorRepo.kt => FingerprintSensorRepository.kt} (96%) delete mode 100644 src/com/android/settings/biometrics/fingerprint2/data/repository/PressToAuthRepo.kt rename src/com/android/settings/biometrics/fingerprint2/{ui/enrollment/viewmodel/AccessibilityViewModel.kt => domain/interactor/AccessibilityInteractor.kt} (57%) create mode 100644 src/com/android/settings/biometrics/fingerprint2/domain/interactor/FoldStateInteractor.kt rename src/com/android/settings/biometrics/fingerprint2/{ui/enrollment/viewmodel/OrientationStateViewModel.kt => domain/interactor/OrientationInteractor.kt} (56%) create mode 100644 src/com/android/settings/biometrics/fingerprint2/domain/interactor/PressToAuthInteractor.kt delete mode 100644 src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FoldStateViewModel.kt create mode 100644 tests/robotests/src/com/android/settings/biometrics/fingerprint2/fragment/OWNERS create mode 100644 tests/screenshot/assets/robolectric/fp_enroll_enrolling.png create mode 100644 tests/screenshot/assets/robolectric/fp_enroll_find_sensor.png delete mode 100644 tests/screenshot/src/com/android/settings/tests/screenshot/BasicScreenshotTest.kt create mode 100644 tests/screenshot/src/com/android/settings/tests/screenshot/README.md create mode 100644 tests/screenshot/src/com/android/settings/tests/screenshot/biometrics/fingerprint/Injector.kt create mode 100644 tests/screenshot/src/com/android/settings/tests/screenshot/biometrics/fingerprint/fragment/FingerprintEnrollEnrollingScreenshotTest.kt create mode 100644 tests/screenshot/src/com/android/settings/tests/screenshot/biometrics/fingerprint/fragment/FingerprintEnrollFindSensorScreenshotTest.kt create mode 100644 tests/screenshot/src/com/android/settings/tests/screenshot/biometrics/fingerprint/fragment/FingerprintEnrollIntroScreenshotTest.kt diff --git a/res/layout/fingerprint_enroll_find_sensor_graphic.xml b/res/layout/fingerprint_enroll_find_sensor_graphic.xml index 069045783e3..d818d48d36f 100644 --- a/res/layout/fingerprint_enroll_find_sensor_graphic.xml +++ b/res/layout/fingerprint_enroll_find_sensor_graphic.xml @@ -25,12 +25,12 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:contentDescription="@string/security_settings_fingerprint_enroll_find_sensor_content_description" - android:src="@drawable/fingerprint_sensor_location" - android:scaleType="centerInside"/> + android:scaleType="centerInside" + android:src="@drawable/fingerprint_sensor_location" /> + android:layout_height="match_parent" /> - + \ No newline at end of file diff --git a/res/layout/fingerprint_v2_enroll_find_sensor.xml b/res/layout/fingerprint_v2_enroll_find_sensor.xml index d2a495d0532..bff0cfb32e1 100644 --- a/res/layout/fingerprint_v2_enroll_find_sensor.xml +++ b/res/layout/fingerprint_v2_enroll_find_sensor.xml @@ -16,29 +16,30 @@ --> - - + android:layout_height="match_parent"> - - - + android:layout_height="match_parent" + android:clipChildren="false" + android:clipToPadding="false" + android:orientation="vertical"> - + + + + + \ No newline at end of file diff --git a/res/layout/fingerprint_v2_rfps_enroll_enrolling.xml b/res/layout/fingerprint_v2_rfps_enroll_enrolling.xml index 0b087d20b73..710f3fbac48 100644 --- a/res/layout/fingerprint_v2_rfps_enroll_enrolling.xml +++ b/res/layout/fingerprint_v2_rfps_enroll_enrolling.xml @@ -18,35 +18,35 @@ - - - + + + android:progress="0" + /> - + - + + + - - \ No newline at end of file diff --git a/src/com/android/settings/biometrics/fingerprint2/OWNERS b/src/com/android/settings/biometrics/fingerprint2/OWNERS index c58a06d5fa0..f5fd453ff26 100644 --- a/src/com/android/settings/biometrics/fingerprint2/OWNERS +++ b/src/com/android/settings/biometrics/fingerprint2/OWNERS @@ -1,3 +1,4 @@ # Owners for Biometric Fingerprint joshmccloskey@google.com -jbolinger@google.com \ No newline at end of file +jbolinger@google.com +spdonghao@google.com \ No newline at end of file diff --git a/src/com/android/settings/biometrics/fingerprint2/data/repository/FingerprintSensorRepo.kt b/src/com/android/settings/biometrics/fingerprint2/data/repository/FingerprintSensorRepository.kt similarity index 96% rename from src/com/android/settings/biometrics/fingerprint2/data/repository/FingerprintSensorRepo.kt rename to src/com/android/settings/biometrics/fingerprint2/data/repository/FingerprintSensorRepository.kt index c045b0e7b9a..000a4774a78 100644 --- a/src/com/android/settings/biometrics/fingerprint2/data/repository/FingerprintSensorRepo.kt +++ b/src/com/android/settings/biometrics/fingerprint2/data/repository/FingerprintSensorRepository.kt @@ -39,16 +39,16 @@ import kotlinx.coroutines.withContext * * TODO(b/313493336): Move this to systemui */ -interface FingerprintSensorRepo { +interface FingerprintSensorRepository { /** Get the [FingerprintSensor] */ val fingerprintSensor: Flow } -class FingerprintSensorRepoImpl( +class FingerprintSensorRepositoryImpl( fingerprintManager: FingerprintManager, backgroundDispatcher: CoroutineDispatcher, activityScope: CoroutineScope, -) : FingerprintSensorRepo { +) : FingerprintSensorRepository { override val fingerprintSensor: Flow = callbackFlow { diff --git a/src/com/android/settings/biometrics/fingerprint2/data/repository/PressToAuthRepo.kt b/src/com/android/settings/biometrics/fingerprint2/data/repository/PressToAuthRepo.kt deleted file mode 100644 index 5909825b39f..00000000000 --- a/src/com/android/settings/biometrics/fingerprint2/data/repository/PressToAuthRepo.kt +++ /dev/null @@ -1,62 +0,0 @@ -/* - * 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.data.repository - -import android.content.Context -import android.provider.Settings - -/** Interface that indicates if press to auth is on or off. */ -interface PressToAuthRepo { - /** Indicates true if the PressToAuth feature is enabled, false otherwise. */ - val isEnabled: Boolean -} - -/** Indicates whether or not the press to auth feature is enabled. */ -class PressToAuthRepoImpl(private val context: Context) : PressToAuthRepo { - /** - * Gets the status of the press to auth feature. - * - * Returns whether or not the press to auth feature is enabled. - */ - override val isEnabled: Boolean - get() { - var toReturn: Int = - Settings.Secure.getIntForUser( - context.contentResolver, - Settings.Secure.SFPS_PERFORMANT_AUTH_ENABLED, - -1, - context.userId, - ) - if (toReturn == -1) { - toReturn = - if ( - context.resources.getBoolean(com.android.internal.R.bool.config_performantAuthDefault) - ) { - 1 - } else { - 0 - } - Settings.Secure.putIntForUser( - context.contentResolver, - Settings.Secure.SFPS_PERFORMANT_AUTH_ENABLED, - toReturn, - context.userId, - ) - } - return (toReturn == 1) - } -} diff --git a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/AccessibilityViewModel.kt b/src/com/android/settings/biometrics/fingerprint2/domain/interactor/AccessibilityInteractor.kt similarity index 57% rename from src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/AccessibilityViewModel.kt rename to src/com/android/settings/biometrics/fingerprint2/domain/interactor/AccessibilityInteractor.kt index 608b3706dbb..e7692372a31 100644 --- a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/AccessibilityViewModel.kt +++ b/src/com/android/settings/biometrics/fingerprint2/domain/interactor/AccessibilityInteractor.kt @@ -1,5 +1,5 @@ /* - * Copyright (C) 2023 The Android Open Source Project + * 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. @@ -14,12 +14,10 @@ * limitations under the License. */ -package com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel +package com.android.settings.biometrics.fingerprint2.domain.interactor import android.view.accessibility.AccessibilityManager -import androidx.lifecycle.ViewModel -import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.viewModelScope +import androidx.lifecycle.LifecycleCoroutineScope import kotlinx.coroutines.channels.awaitClose import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.SharingStarted @@ -27,28 +25,28 @@ import kotlinx.coroutines.flow.callbackFlow import kotlinx.coroutines.flow.stateIn /** Represents all of the information on accessibility state. */ -class AccessibilityViewModel(accessibilityManager: AccessibilityManager) : ViewModel() { +interface AccessibilityInteractor { + /** A flow that contains whether or not accessibility is enabled */ + val isAccessibilityEnabled: Flow +} + +class AccessibilityInteractorImpl( + accessibilityManager: AccessibilityManager, + activityScope: LifecycleCoroutineScope +) : AccessibilityInteractor { /** A flow that contains whether or not accessibility is enabled */ - val isAccessibilityEnabled: Flow = + override val isAccessibilityEnabled: Flow = callbackFlow { val listener = - AccessibilityManager.AccessibilityStateChangeListener { enabled -> trySend(enabled) } + AccessibilityManager.AccessibilityStateChangeListener { enabled -> trySend(enabled) } accessibilityManager.addAccessibilityStateChangeListener(listener) // This clause will be called when no one is listening to the flow awaitClose { accessibilityManager.removeAccessibilityStateChangeListener(listener) } - } - .stateIn( - viewModelScope, // This is going to tied to the view model scope - SharingStarted.WhileSubscribed(), // When no longer subscribed, we removeTheListener - false, - ) - - class AccessibilityViewModelFactory(private val accessibilityManager: AccessibilityManager) : - ViewModelProvider.Factory { - @Suppress("UNCHECKED_CAST") - override fun create(modelClass: Class): T { - return AccessibilityViewModel(accessibilityManager) as T } - } -} + .stateIn( + activityScope, // This is going to tied to the activity scope + SharingStarted.WhileSubscribed(), // When no longer subscribed, we removeTheListener + false + ) +} \ No newline at end of file diff --git a/src/com/android/settings/biometrics/fingerprint2/domain/interactor/FingerprintManagerInteractorImpl.kt b/src/com/android/settings/biometrics/fingerprint2/domain/interactor/FingerprintManagerInteractorImpl.kt index 1fbeb44249b..135a36ce538 100644 --- a/src/com/android/settings/biometrics/fingerprint2/domain/interactor/FingerprintManagerInteractorImpl.kt +++ b/src/com/android/settings/biometrics/fingerprint2/domain/interactor/FingerprintManagerInteractorImpl.kt @@ -26,8 +26,7 @@ import android.util.Log import com.android.settings.biometrics.GatekeeperPasswordProvider import com.android.settings.biometrics.fingerprint2.conversion.Util.toEnrollError import com.android.settings.biometrics.fingerprint2.conversion.Util.toOriginalReason -import com.android.settings.biometrics.fingerprint2.data.repository.FingerprintSensorRepo -import com.android.settings.biometrics.fingerprint2.data.repository.PressToAuthRepo +import com.android.settings.biometrics.fingerprint2.data.repository.FingerprintSensorRepository 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 @@ -57,9 +56,9 @@ class FingerprintManagerInteractorImpl( applicationContext: Context, private val backgroundDispatcher: CoroutineDispatcher, private val fingerprintManager: FingerprintManager, - fingerprintSensorRepo: FingerprintSensorRepo, + fingerprintSensorRepository: FingerprintSensorRepository, private val gatekeeperPasswordProvider: GatekeeperPasswordProvider, - private val pressToAuthRepo: PressToAuthRepo, + private val pressToAuthInteractor: PressToAuthInteractor, private val fingerprintFlow: FingerprintFlow, ) : FingerprintManagerInteractor { @@ -101,7 +100,7 @@ class FingerprintManagerInteractorImpl( ) } - override val sensorPropertiesInternal = fingerprintSensorRepo.fingerprintSensor + override val sensorPropertiesInternal = fingerprintSensorRepository.fingerprintSensor override val maxEnrollableFingerprints = flow { emit(maxFingerprints) } @@ -211,10 +210,6 @@ class FingerprintManagerInteractorImpl( it.resume(fingerprintManager.isPowerbuttonFps) } - override suspend fun pressToAuthEnabled(): Boolean = suspendCancellableCoroutine { - it.resume(pressToAuthRepo.isEnabled) - } - override suspend fun authenticate(): FingerprintAuthAttemptModel = suspendCancellableCoroutine { c: CancellableContinuation -> val authenticationCallback = diff --git a/src/com/android/settings/biometrics/fingerprint2/domain/interactor/FoldStateInteractor.kt b/src/com/android/settings/biometrics/fingerprint2/domain/interactor/FoldStateInteractor.kt new file mode 100644 index 00000000000..0224aa2ef93 --- /dev/null +++ b/src/com/android/settings/biometrics/fingerprint2/domain/interactor/FoldStateInteractor.kt @@ -0,0 +1,58 @@ +/* + * 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.domain.interactor + +import android.content.Context +import android.content.res.Configuration +import com.android.systemui.unfold.compat.ScreenSizeFoldProvider +import com.android.systemui.unfold.updates.FoldProvider +import kotlinx.coroutines.channels.awaitClose +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.callbackFlow + +interface FoldStateInteractor { + /** A flow that contains the fold state info */ + val isFolded: Flow + + /** + * Indicates a configuration change has occurred, and the repo + * should update the [isFolded] flow. + */ + fun onConfigurationChange(newConfig: Configuration) +} + +/** + * Interactor which handles fold state + */ +class FoldStateInteractorImpl(context: Context) : FoldStateInteractor { + private val screenSizeFoldProvider = ScreenSizeFoldProvider(context) + override val isFolded: Flow = callbackFlow { + val foldStateListener = FoldProvider.FoldCallback { isFolded -> trySend(isFolded) } + screenSizeFoldProvider.registerCallback(foldStateListener, context.mainExecutor) + awaitClose { screenSizeFoldProvider.unregisterCallback(foldStateListener) } + } + + /** + * This function is called by the root activity, indicating an orientation event has occurred. + * When this happens, the [ScreenSizeFoldProvider] is notified and it will re-compute if the + * device is folded or not, and notify the [FoldProvider.FoldCallback] + */ + override fun onConfigurationChange(newConfig: Configuration) { + screenSizeFoldProvider.onConfigurationChange(newConfig) + } + +} diff --git a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/OrientationStateViewModel.kt b/src/com/android/settings/biometrics/fingerprint2/domain/interactor/OrientationInteractor.kt similarity index 56% rename from src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/OrientationStateViewModel.kt rename to src/com/android/settings/biometrics/fingerprint2/domain/interactor/OrientationInteractor.kt index dd266e18285..968203fff80 100644 --- a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/OrientationStateViewModel.kt +++ b/src/com/android/settings/biometrics/fingerprint2/domain/interactor/OrientationInteractor.kt @@ -1,5 +1,5 @@ /* - * Copyright (C) 2023 The Android Open Source Project + * 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. @@ -14,25 +14,37 @@ * limitations under the License. */ -package com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel +package com.android.settings.biometrics.fingerprint2.domain.interactor import android.content.Context import android.view.OrientationEventListener -import androidx.lifecycle.ViewModel -import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.viewModelScope import com.android.internal.R +import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.channels.awaitClose import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.callbackFlow import kotlinx.coroutines.flow.stateIn -/** Represents all of the information on orientation state and rotation state. */ -class OrientationStateViewModel(private val context: Context) : ViewModel() { +/** + * Interactor which provides information about orientation + */ +interface OrientationInteractor { + /** A flow that contains the information about the orientation changing */ + val orientation: Flow + /** A flow that contains the rotation info */ + val rotation: Flow + /** + * A Helper function that computes rotation if device is in + * [R.bool.config_reverseDefaultConfigRotation] + */ + fun getRotationFromDefault(rotation: Int): Int +} - /** A flow that contains the orientation info */ - val orientation: Flow = callbackFlow { +class OrientationInteractorImpl(private val context: Context, activityScope: CoroutineScope) : + OrientationInteractor { + + override val orientation: Flow = callbackFlow { val orientationEventListener = object : OrientationEventListener(context) { override fun onOrientationChanged(orientation: Int) { @@ -43,25 +55,24 @@ class OrientationStateViewModel(private val context: Context) : ViewModel() { awaitClose { orientationEventListener.disable() } } - /** A flow that contains the rotation info */ - val rotation: Flow = + override val rotation: Flow = callbackFlow { - val orientationEventListener = - object : OrientationEventListener(context) { - override fun onOrientationChanged(orientation: Int) { - trySend(getRotationFromDefault(context.display!!.rotation)) - } + val orientationEventListener = + object : OrientationEventListener(context) { + override fun onOrientationChanged(orientation: Int) { + trySend(getRotationFromDefault(context.display!!.rotation)) } - orientationEventListener.enable() - awaitClose { orientationEventListener.disable() } - } + } + orientationEventListener.enable() + awaitClose { orientationEventListener.disable() } + } .stateIn( - viewModelScope, // This is going to tied to the view model scope + activityScope, // This is tied to the activity scope SharingStarted.WhileSubscribed(), // When no longer subscribed, we removeTheListener context.display!!.rotation, ) - fun getRotationFromDefault(rotation: Int): Int { + override fun getRotationFromDefault(rotation: Int): Int { val isReverseDefaultRotation = context.resources.getBoolean(R.bool.config_reverseDefaultRotation) return if (isReverseDefaultRotation) { @@ -70,11 +81,4 @@ class OrientationStateViewModel(private val context: Context) : ViewModel() { rotation } } - - class OrientationViewModelFactory(private val context: Context) : ViewModelProvider.Factory { - @Suppress("UNCHECKED_CAST") - override fun create(modelClass: Class): T { - return OrientationStateViewModel(context) as T - } - } -} +} \ No newline at end of file diff --git a/src/com/android/settings/biometrics/fingerprint2/domain/interactor/PressToAuthInteractor.kt b/src/com/android/settings/biometrics/fingerprint2/domain/interactor/PressToAuthInteractor.kt new file mode 100644 index 00000000000..ab7b5de3f51 --- /dev/null +++ b/src/com/android/settings/biometrics/fingerprint2/domain/interactor/PressToAuthInteractor.kt @@ -0,0 +1,104 @@ +/* + * 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.domain.interactor + +import android.content.Context +import android.database.ContentObserver +import android.provider.Settings +import android.util.Log +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.channels.awaitClose +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.callbackFlow +import kotlinx.coroutines.flow.flowOn + +/** Interface that indicates if press to auth is on or off. */ +interface PressToAuthInteractor { + /** Indicates true if the PressToAuth feature is enabled, false otherwise. */ + val isEnabled: Flow +} + +/** Indicates whether or not the press to auth feature is enabled. */ +class PressToAuthInteractorImpl( + private val context: Context, + private val backgroundDispatcher: CoroutineDispatcher, +) : PressToAuthInteractor { + + /** + * A flow that contains the status of the press to auth feature. + */ + override val isEnabled: Flow = + + callbackFlow { + val callback = + object : ContentObserver(null) { + override fun onChange(selfChange: Boolean) { + Log.d(TAG, "SFPS_PERFORMANT_AUTH_ENABLED#onchange") + trySend( + getPressToAuth(), + ) + } + } + + context.contentResolver.registerContentObserver( + Settings.Secure.getUriFor(Settings.Secure.SFPS_PERFORMANT_AUTH_ENABLED), + false, + callback, + context.userId + ) + trySend(getPressToAuth()) + awaitClose { + context.contentResolver.unregisterContentObserver(callback) + } + }.flowOn(backgroundDispatcher) + + + /** + * Returns true if press to auth is enabled + */ + private fun getPressToAuth(): Boolean { + var toReturn: Int = + Settings.Secure.getIntForUser( + context.contentResolver, + Settings.Secure.SFPS_PERFORMANT_AUTH_ENABLED, + -1, + context.userId, + ) + if (toReturn == -1) { + toReturn = + if ( + context.resources.getBoolean(com.android.internal.R.bool.config_performantAuthDefault) + ) { + 1 + } else { + 0 + } + Settings.Secure.putIntForUser( + context.contentResolver, + Settings.Secure.SFPS_PERFORMANT_AUTH_ENABLED, + toReturn, + context.userId, + ) + } + return toReturn == 1 + + } + + companion object { + const val TAG = "PressToAuthInteractor" + } +} diff --git a/src/com/android/settings/biometrics/fingerprint2/lib/domain/interactor/FingerprintManagerInteractor.kt b/src/com/android/settings/biometrics/fingerprint2/lib/domain/interactor/FingerprintManagerInteractor.kt index 6e6df23da4e..c0e1b4aeaf4 100644 --- a/src/com/android/settings/biometrics/fingerprint2/lib/domain/interactor/FingerprintManagerInteractor.kt +++ b/src/com/android/settings/biometrics/fingerprint2/lib/domain/interactor/FingerprintManagerInteractor.kt @@ -75,7 +75,4 @@ interface FingerprintManagerInteractor { /** Indicates if the device has side fingerprint */ suspend fun hasSideFps(): Boolean - - /** Indicates if the press to auth feature has been enabled */ - suspend fun pressToAuthEnabled(): Boolean } 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 f7e61356c88..9f3935bf070 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 @@ -30,16 +30,20 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope import com.android.internal.widget.LockPatternUtils import com.android.settings.R -import com.android.settings.SettingsApplication import com.android.settings.SetupWizardUtils import com.android.settings.Utils.SETTINGS_PACKAGE_NAME import com.android.settings.biometrics.BiometricEnrollBase 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.FingerprintSensorRepoImpl -import com.android.settings.biometrics.fingerprint2.data.repository.PressToAuthRepoImpl +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.lib.model.Default import com.android.settings.biometrics.fingerprint2.lib.model.SetupWizard import com.android.settings.biometrics.fingerprint2.ui.enrollment.fragment.FingerprintEnrollConfirmationV2Fragment @@ -48,7 +52,6 @@ import com.android.settings.biometrics.fingerprint2.ui.enrollment.fragment.Finge import com.android.settings.biometrics.fingerprint2.ui.enrollment.fragment.FingerprintEnrollIntroV2Fragment import com.android.settings.biometrics.fingerprint2.ui.enrollment.modules.enrolling.rfps.ui.fragment.RFPSEnrollFragment import com.android.settings.biometrics.fingerprint2.ui.enrollment.modules.enrolling.rfps.ui.viewmodel.RFPSViewModel -import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.AccessibilityViewModel 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.FingerprintEnrollEnrollingViewModel @@ -66,9 +69,7 @@ import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.Fing import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintNavigationStep.TransitionStep 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.FoldStateViewModel import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.GatekeeperInfo -import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.OrientationStateViewModel import com.android.settings.password.ChooseLockGeneric import com.android.settings.password.ChooseLockSettingsHelper import com.android.settings.password.ChooseLockSettingsHelper.EXTRA_KEY_GK_PW_HANDLE @@ -90,9 +91,8 @@ class FingerprintEnrollmentV2Activity : FragmentActivity() { private lateinit var navigationViewModel: FingerprintNavigationViewModel private lateinit var gatekeeperViewModel: FingerprintGatekeeperViewModel private lateinit var fingerprintEnrollViewModel: FingerprintEnrollViewModel - private lateinit var accessibilityViewModel: AccessibilityViewModel - private lateinit var foldStateViewModel: FoldStateViewModel - private lateinit var orientationStateViewModel: OrientationStateViewModel + private lateinit var foldStateInteractor: FoldStateInteractor + private lateinit var orientationInteractor: OrientationInteractor private lateinit var fingerprintScrollViewModel: FingerprintScrollViewModel private lateinit var backgroundViewModel: BackgroundViewModel private lateinit var fingerprintFlowViewModel: FingerprintFlowViewModel @@ -127,7 +127,7 @@ class FingerprintEnrollmentV2Activity : FragmentActivity() { override fun onConfigurationChanged(newConfig: Configuration) { super.onConfigurationChanged(newConfig) - foldStateViewModel.onConfigurationChange(newConfig) + foldStateInteractor.onConfigurationChange(newConfig) } private fun onConfirmDevice(resultCode: Int, data: Intent?) { @@ -179,7 +179,8 @@ class FingerprintEnrollmentV2Activity : FragmentActivity() { FingerprintFlowViewModel::class.java] val fingerprintSensorRepo = - FingerprintSensorRepoImpl(fingerprintManager, backgroundDispatcher, lifecycleScope) + FingerprintSensorRepositoryImpl(fingerprintManager, backgroundDispatcher, lifecycleScope) + val pressToAuthInteractor = PressToAuthInteractorImpl(context, backgroundDispatcher) val fingerprintManagerInteractor = FingerprintManagerInteractorImpl( @@ -188,7 +189,7 @@ class FingerprintEnrollmentV2Activity : FragmentActivity() { fingerprintManager, fingerprintSensorRepo, GatekeeperPasswordProvider(LockPatternUtils(context)), - PressToAuthRepoImpl(context), + pressToAuthInteractor, enrollType, ) @@ -198,6 +199,12 @@ class FingerprintEnrollmentV2Activity : FragmentActivity() { val hasConfirmedDeviceCredential = gatekeeperInfo is GatekeeperInfo.GatekeeperPasswordInfo + val accessibilityInteractor = + AccessibilityInteractorImpl( + getSystemService(AccessibilityManager::class.java)!!, + lifecycleScope, + ) + navigationViewModel = ViewModelProvider( this, @@ -228,10 +235,10 @@ class FingerprintEnrollmentV2Activity : FragmentActivity() { )[FingerprintGatekeeperViewModel::class.java] // Initialize FoldStateViewModel - foldStateViewModel = - ViewModelProvider(this, FoldStateViewModel.FoldStateViewModelFactory(context))[ - FoldStateViewModel::class.java] - foldStateViewModel.onConfigurationChange(resources.configuration) + foldStateInteractor = FoldStateInteractorImpl(context) + foldStateInteractor.onConfigurationChange(resources.configuration) + + orientationInteractor = OrientationInteractorImpl(context, lifecycleScope) // Initialize FingerprintViewModel fingerprintEnrollViewModel = @@ -249,20 +256,6 @@ class FingerprintEnrollmentV2Activity : FragmentActivity() { ViewModelProvider(this, FingerprintScrollViewModel.FingerprintScrollViewModelFactory())[ FingerprintScrollViewModel::class.java] - // Initialize AccessibilityViewModel - accessibilityViewModel = - ViewModelProvider( - this, - AccessibilityViewModel.AccessibilityViewModelFactory( - getSystemService(AccessibilityManager::class.java)!! - ), - )[AccessibilityViewModel::class.java] - - // Initialize OrientationViewModel - orientationStateViewModel = - ViewModelProvider(this, OrientationStateViewModel.OrientationViewModelFactory(context))[ - OrientationStateViewModel::class.java] - // Initialize FingerprintEnrollEnrollingViewModel fingerprintEnrollEnrollingViewModel = ViewModelProvider( @@ -281,18 +274,24 @@ class FingerprintEnrollmentV2Activity : FragmentActivity() { fingerprintEnrollViewModel, gatekeeperViewModel, backgroundViewModel, - accessibilityViewModel, - foldStateViewModel, - orientationStateViewModel, + accessibilityInteractor, + foldStateInteractor, + orientationInteractor, fingerprintFlowViewModel, + fingerprintManagerInteractor, ), )[FingerprintEnrollFindSensorViewModel::class.java] // Initialize RFPS View Model ViewModelProvider( this, - RFPSViewModel.RFPSViewModelFactory(fingerprintEnrollEnrollingViewModel, navigationViewModel), + RFPSViewModel.RFPSViewModelFactory( + fingerprintEnrollEnrollingViewModel, + navigationViewModel, + orientationInteractor, + ), )[RFPSViewModel::class.java] + lifecycleScope.launch { navigationViewModel.currentStep.collect { step -> if (step is Init) { diff --git a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/fragment/FingerprintEnrollFindSensorV2Fragment.kt b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/fragment/FingerprintEnrollFindSensorV2Fragment.kt index 9603e6b66ab..2b1ff9bf085 100644 --- a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/fragment/FingerprintEnrollFindSensorV2Fragment.kt +++ b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/fragment/FingerprintEnrollFindSensorV2Fragment.kt @@ -22,6 +22,7 @@ import android.view.LayoutInflater import android.view.Surface import android.view.View import android.view.ViewGroup +import androidx.annotation.VisibleForTesting import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope @@ -30,7 +31,6 @@ import com.android.settings.R import com.android.settings.biometrics.fingerprint.FingerprintErrorDialog import com.android.settings.biometrics.fingerprint.FingerprintFindSensorAnimation import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollFindSensorViewModel -import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollViewModel import com.android.systemui.biometrics.shared.model.FingerprintSensorType import com.google.android.setupcompat.template.FooterBarMixin import com.google.android.setupcompat.template.FooterButton @@ -51,12 +51,31 @@ private const val TAG = "FingerprintEnrollFindSensorV2Fragment" * will work. */ class FingerprintEnrollFindSensorV2Fragment(val sensorType: FingerprintSensorType) : Fragment() { + /** Used for testing purposes */ + private var factory: ViewModelProvider.Factory? = null + + @VisibleForTesting + constructor( + sensorType: FingerprintSensorType, + theFactory: ViewModelProvider.Factory, + ) : this(sensorType) { + factory = theFactory + } + + private val viewModelProvider: ViewModelProvider by lazy { + if (factory != null) { + ViewModelProvider(requireActivity(), factory!!) + } else { + ViewModelProvider(requireActivity()) + } + } + // This is only for non-udfps or non-sfps sensor. For udfps and sfps, we show lottie. private var animation: FingerprintFindSensorAnimation? = null private var contentLayoutId: Int = -1 private val viewModel: FingerprintEnrollFindSensorViewModel by lazy { - ViewModelProvider(requireActivity())[FingerprintEnrollFindSensorViewModel::class.java] + viewModelProvider[FingerprintEnrollFindSensorViewModel::class.java] } override fun onCreateView( @@ -65,9 +84,6 @@ class FingerprintEnrollFindSensorV2Fragment(val sensorType: FingerprintSensorTyp savedInstanceState: Bundle?, ): View? { - val sensorType = - ViewModelProvider(requireActivity())[FingerprintEnrollViewModel::class.java].sensorTypeCached - contentLayoutId = when (sensorType) { FingerprintSensorType.UDFPS_OPTICAL, @@ -76,46 +92,43 @@ class FingerprintEnrollFindSensorV2Fragment(val sensorType: FingerprintSensorTyp else -> R.layout.fingerprint_v2_enroll_find_sensor } - return inflater.inflate(contentLayoutId, container, false).also { it -> - val view = it!! as GlifLayout + val view = inflater.inflate(contentLayoutId, container, false)!! as GlifLayout + setTexts(sensorType, view) - // Set up header and description - lifecycleScope.launch { viewModel.sensorType.collect { setTexts(it, view) } } + // Set up footer bar + val footerBarMixin = view.getMixin(FooterBarMixin::class.java) + setupSecondaryButton(footerBarMixin) + lifecycleScope.launch { + viewModel.showPrimaryButton.collect { setupPrimaryButton(footerBarMixin) } + } - // Set up footer bar - val footerBarMixin = view.getMixin(FooterBarMixin::class.java) - setupSecondaryButton(footerBarMixin) - lifecycleScope.launch { - viewModel.showPrimaryButton.collect { setupPrimaryButton(footerBarMixin) } - } - - // Set up lottie or animation - lifecycleScope.launch { - viewModel.sfpsLottieInfo.collect { (isFolded, rotation) -> - setupLottie(view, getSfpsIllustrationLottieAnimation(isFolded, rotation)) - } - } - lifecycleScope.launch { - viewModel.udfpsLottieInfo.collect { isAccessibilityEnabled -> - val lottieAnimation = - if (isAccessibilityEnabled) R.raw.udfps_edu_a11y_lottie else R.raw.udfps_edu_lottie - setupLottie(view, lottieAnimation) { viewModel.proceedToEnrolling() } - } - } - lifecycleScope.launch { - viewModel.showRfpsAnimation.collect { - animation = view.findViewById(R.id.fingerprint_sensor_location_animation) - animation!!.startAnimation() - } - } - - lifecycleScope.launch { - viewModel.showErrorDialog.collect { (errMsgId, isSetup) -> - // TODO: Covert error dialog kotlin as well - FingerprintErrorDialog.showErrorDialog(requireActivity(), errMsgId, isSetup) - } + // Set up lottie or animation + lifecycleScope.launch { + viewModel.sfpsLottieInfo.collect { (isFolded, rotation) -> + setupLottie(view, getSfpsIllustrationLottieAnimation(isFolded, rotation)) } } + lifecycleScope.launch { + viewModel.udfpsLottieInfo.collect { isAccessibilityEnabled -> + val lottieAnimation = + if (isAccessibilityEnabled) R.raw.udfps_edu_a11y_lottie else R.raw.udfps_edu_lottie + setupLottie(view, lottieAnimation) { viewModel.proceedToEnrolling() } + } + } + lifecycleScope.launch { + viewModel.showRfpsAnimation.collect { + animation = view.findViewById(R.id.fingerprint_sensor_location_animation) + animation!!.startAnimation() + } + } + + lifecycleScope.launch { + viewModel.showErrorDialog.collect { (errMsgId, isSetup) -> + // TODO: Covert error dialog kotlin as well + FingerprintErrorDialog.showErrorDialog(requireActivity(), errMsgId, isSetup) + } + } + return view } override fun onDestroy() { @@ -158,7 +171,7 @@ class FingerprintEnrollFindSensorV2Fragment(val sensorType: FingerprintSensorTyp illustrationLottie?.visibility = View.VISIBLE } - private fun setTexts(sensorType: FingerprintSensorType, view: GlifLayout) { + private fun setTexts(sensorType: FingerprintSensorType?, view: GlifLayout) { when (sensorType) { FingerprintSensorType.UDFPS_OPTICAL, FingerprintSensorType.UDFPS_ULTRASONIC -> { diff --git a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/modules/enrolling/rfps/ui/fragment/RFPSEnrollFragment.kt b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/modules/enrolling/rfps/ui/fragment/RFPSEnrollFragment.kt index c6e284a4f00..a9cd16fef1e 100644 --- a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/modules/enrolling/rfps/ui/fragment/RFPSEnrollFragment.kt +++ b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/modules/enrolling/rfps/ui/fragment/RFPSEnrollFragment.kt @@ -26,12 +26,14 @@ import android.view.ViewGroup import android.view.animation.AnimationUtils import android.view.animation.Interpolator import android.widget.TextView +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.domain.interactor.OrientationInteractor import com.android.settings.biometrics.fingerprint2.lib.model.FingerEnrollState 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 @@ -41,18 +43,34 @@ import com.android.settings.biometrics.fingerprint2.ui.enrollment.modules.enroll import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.BackgroundViewModel import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintNavigationStep import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintNavigationViewModel -import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.OrientationStateViewModel import com.android.settings.core.instrumentation.InstrumentedDialogFragment import com.google.android.setupcompat.template.FooterBarMixin import com.google.android.setupcompat.template.FooterButton import com.google.android.setupdesign.GlifLayout +import kotlinx.coroutines.delay import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.launch /** This fragment is responsible for taking care of rear fingerprint enrollment. */ -class RFPSEnrollFragment : Fragment(R.layout.fingerprint_v2_rfps_enroll_enrolling) { +class RFPSEnrollFragment() : Fragment(R.layout.fingerprint_v2_rfps_enroll_enrolling) { + + /** 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 lateinit var linearOutSlowInInterpolator: Interpolator private lateinit var fastOutLinearInInterpolator: Interpolator @@ -60,24 +78,14 @@ class RFPSEnrollFragment : Fragment(R.layout.fingerprint_v2_rfps_enroll_enrollin private lateinit var progressBar: RFPSProgressBar private val iconTouchViewModel: RFPSIconTouchViewModel by lazy { - ViewModelProvider(requireActivity())[RFPSIconTouchViewModel::class.java] + viewModelProvider[RFPSIconTouchViewModel::class.java] } - private val orientationViewModel: OrientationStateViewModel by lazy { - ViewModelProvider(requireActivity())[OrientationStateViewModel::class.java] - } - - private val rfpsViewModel: RFPSViewModel by lazy { - ViewModelProvider(requireActivity())[RFPSViewModel::class.java] - } + private val rfpsViewModel: RFPSViewModel by lazy { viewModelProvider[RFPSViewModel::class.java] } private val backgroundViewModel: BackgroundViewModel by lazy { - ViewModelProvider(requireActivity())[BackgroundViewModel::class.java] + viewModelProvider[BackgroundViewModel::class.java] } - private val navigationViewModel: FingerprintNavigationViewModel by lazy { - ViewModelProvider(requireActivity())[FingerprintNavigationViewModel::class.java] - } - override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -115,9 +123,8 @@ class RFPSEnrollFragment : Fragment(R.layout.fingerprint_v2_rfps_enroll_enrollin true } - // On any orientation event, dismiss dialogs. viewLifecycleOwner.lifecycleScope.launch { - orientationViewModel.orientation.collect { dismissDialogs() } + rfpsViewModel.shouldDismissDialog.collect { dismissDialogs() } } // Signal we are ready for enrollment. @@ -127,6 +134,8 @@ class RFPSEnrollFragment : Fragment(R.layout.fingerprint_v2_rfps_enroll_enrollin repeatOnLifecycle(Lifecycle.State.RESUMED) { // Icon animation update viewLifecycleOwner.lifecycleScope.launch { + // TODO(b/324427704): Fix this delay + delay(100) rfpsViewModel.shouldAnimateIcon.collect { animate -> progressBar.updateIconAnimation(animate) } 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 99250e6de11..2408a8873a8 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 @@ -19,6 +19,7 @@ package com.android.settings.biometrics.fingerprint2.ui.enrollment.modules.enrol import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope +import com.android.settings.biometrics.fingerprint2.domain.interactor.OrientationInteractor import com.android.settings.biometrics.fingerprint2.lib.model.FingerEnrollState import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintAction import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollEnrollingViewModel @@ -39,10 +40,11 @@ import kotlinx.coroutines.flow.update class RFPSViewModel( private val fingerprintEnrollViewModel: FingerprintEnrollEnrollingViewModel, private val navigationViewModel: FingerprintNavigationViewModel, + orientationInteractor: OrientationInteractor, ) : ViewModel() { - /** Value to indicate if the text view is visible or not */ private val _textViewIsVisible = MutableStateFlow(false) + /** Value to indicate if the text view is visible or not */ val textViewIsVisible: Flow = _textViewIsVisible.asStateFlow() /** Indicates if the icon should be animating or not */ @@ -78,8 +80,12 @@ class RFPSViewModel( .filterIsInstance() .shareIn(viewModelScope, SharingStarted.Eagerly, 0) + /** Indicates that enrollment was completed. */ val didCompleteEnrollment: Flow = progress.filterNotNull().map { it.remainingSteps == 0 } + /** Indicates if the fragment should dismiss a dialog if one was shown. */ + val shouldDismissDialog = orientationInteractor.orientation.map { true } + /** Indicates if the consumer is ready for enrollment */ fun readyForEnrollment() { fingerprintEnrollViewModel.canEnroll() @@ -90,6 +96,7 @@ class RFPSViewModel( fingerprintEnrollViewModel.stopEnroll() } + /** Set the visibility of the text view */ fun setVisibility(isVisible: Boolean) { _textViewIsVisible.update { isVisible } } @@ -122,6 +129,7 @@ class RFPSViewModel( ) } + /** Indicates that enrollment has been finished and we can proceed to the next step. */ fun finishedSuccessfully() { navigationViewModel.update(FingerprintAction.NEXT, navStep, "${TAG}#progressFinished") } @@ -129,11 +137,17 @@ class RFPSViewModel( class RFPSViewModelFactory( private val fingerprintEnrollEnrollingViewModel: FingerprintEnrollEnrollingViewModel, private val navigationViewModel: FingerprintNavigationViewModel, + private val orientationInteractor: OrientationInteractor, ) : ViewModelProvider.Factory { @Suppress("UNCHECKED_CAST") override fun create(modelClass: Class): T { - return RFPSViewModel(fingerprintEnrollEnrollingViewModel, navigationViewModel) as T + return RFPSViewModel( + fingerprintEnrollEnrollingViewModel, + navigationViewModel, + orientationInteractor, + ) + as T } } diff --git a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/modules/enrolling/rfps/ui/widget/RFPSProgressBar.kt b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/modules/enrolling/rfps/ui/widget/RFPSProgressBar.kt index fe6268107d3..5a6fc149b3e 100644 --- a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/modules/enrolling/rfps/ui/widget/RFPSProgressBar.kt +++ b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/modules/enrolling/rfps/ui/widget/RFPSProgressBar.kt @@ -24,14 +24,14 @@ import android.graphics.drawable.AnimatedVectorDrawable import android.graphics.drawable.Drawable import android.graphics.drawable.LayerDrawable import android.util.AttributeSet +import android.util.Log import android.view.animation.AnimationUtils import android.view.animation.Interpolator import com.android.settings.R import com.android.settings.widget.RingProgressBar /** Progress bar for rear fingerprint enrollment. */ -class RFPSProgressBar(context: Context, attributeSet: AttributeSet) : - RingProgressBar(context, attributeSet) { +class RFPSProgressBar : RingProgressBar { private val fastOutSlowInInterpolator: Interpolator @@ -42,9 +42,9 @@ class RFPSProgressBar(context: Context, attributeSet: AttributeSet) : private var progressAnimation: ObjectAnimator? = null - private var shouldAnimateInternal: Boolean = true + private var shouldAnimateInternal: Boolean = false - init { + constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet) { val fingerprintDrawable = background as LayerDrawable iconAnimationDrawable = fingerprintDrawable.findDrawableByLayerId(R.id.fingerprint_animation) @@ -52,10 +52,8 @@ class RFPSProgressBar(context: Context, attributeSet: AttributeSet) : iconBackgroundBlinksDrawable = fingerprintDrawable.findDrawableByLayerId(R.id.fingerprint_background) as AnimatedVectorDrawable - fastOutSlowInInterpolator = AnimationUtils.loadInterpolator(context, android.R.interpolator.fast_out_slow_in) - iconAnimationDrawable.registerAnimationCallback( object : Animatable2.AnimationCallback() { override fun onAnimationEnd(drawable: Drawable?) { @@ -66,7 +64,6 @@ class RFPSProgressBar(context: Context, attributeSet: AttributeSet) : } } ) - animateIconAnimationInternal() progressBackgroundTintMode = PorterDuff.Mode.SRC @@ -85,8 +82,8 @@ class RFPSProgressBar(context: Context, attributeSet: AttributeSet) : } shouldAnimateInternal = shouldAnimate - } + } /** This function should only be called when actual progress has been made. */ fun updateProgress(percentComplete: Float) { val progress = maxProgress - (percentComplete.coerceIn(0.0f, 100.0f) * maxProgress).toInt() diff --git a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollFindSensorViewModel.kt b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollFindSensorViewModel.kt index 92261b110e0..3bf806b7eaf 100644 --- a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollFindSensorViewModel.kt +++ b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollFindSensorViewModel.kt @@ -19,6 +19,10 @@ package com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope +import com.android.settings.biometrics.fingerprint2.domain.interactor.AccessibilityInteractor +import com.android.settings.biometrics.fingerprint2.domain.interactor.FoldStateInteractor +import com.android.settings.biometrics.fingerprint2.domain.interactor.OrientationInteractor +import com.android.settings.biometrics.fingerprint2.lib.domain.interactor.FingerprintManagerInteractor import com.android.settings.biometrics.fingerprint2.lib.model.FingerEnrollState import com.android.settings.biometrics.fingerprint2.lib.model.SetupWizard import com.android.settings.biometrics.fingerprint2.ui.enrollment.fragment.FingerprintEnrollFindSensorV2Fragment @@ -26,13 +30,11 @@ import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.Fing import com.android.systemui.biometrics.shared.model.FingerprintSensorType import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow -import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.combineTransform import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.filterNotNull import kotlinx.coroutines.flow.map -import kotlinx.coroutines.flow.shareIn import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch @@ -42,19 +44,16 @@ class FingerprintEnrollFindSensorViewModel( private val fingerprintEnrollViewModel: FingerprintEnrollViewModel, private val gatekeeperViewModel: FingerprintGatekeeperViewModel, backgroundViewModel: BackgroundViewModel, - accessibilityViewModel: AccessibilityViewModel, - foldStateViewModel: FoldStateViewModel, - orientationStateViewModel: OrientationStateViewModel, + accessibilityInteractor: AccessibilityInteractor, + foldStateInteractor: FoldStateInteractor, + orientationInteractor: OrientationInteractor, fingerprintFlowViewModel: FingerprintFlowViewModel, + fingerprintManagerInteractor: FingerprintManagerInteractor, ) : ViewModel() { /** Represents the stream of sensor type. */ val sensorType: Flow = - fingerprintEnrollViewModel.sensorType.shareIn( - viewModelScope, - SharingStarted.WhileSubscribed(), - 1, - ) + fingerprintManagerInteractor.sensorPropertiesInternal.filterNotNull().map { it.sensorType } private val _isUdfps: Flow = sensorType.map { it == FingerprintSensorType.UDFPS_OPTICAL || it == FingerprintSensorType.UDFPS_ULTRASONIC @@ -70,8 +69,8 @@ class FingerprintEnrollFindSensorViewModel( val sfpsLottieInfo: Flow> = combineTransform( _showSfpsLottie, - foldStateViewModel.isFolded, - orientationStateViewModel.rotation, + foldStateInteractor.isFolded, + orientationInteractor.rotation, ) { _, isFolded, rotation -> emit(Pair(isFolded, rotation)) } @@ -79,7 +78,7 @@ class FingerprintEnrollFindSensorViewModel( private val _showUdfpsLottie = _isUdfps.filter { it } /** Represents the stream of showing udfps lottie and whether accessibility is enabled. */ val udfpsLottieInfo: Flow = - _showUdfpsLottie.combine(accessibilityViewModel.isAccessibilityEnabled) { + _showUdfpsLottie.combine(accessibilityInteractor.isAccessibilityEnabled) { _, isAccessibilityEnabled -> isAccessibilityEnabled @@ -104,7 +103,7 @@ class FingerprintEnrollFindSensorViewModel( // Start or end enroll flow viewModelScope.launch { combine( - fingerprintEnrollViewModel.sensorType, + sensorType, gatekeeperViewModel.hasValidGatekeeperInfo, gatekeeperViewModel.gatekeeperInfo, navigationViewModel.currentScreen, @@ -188,10 +187,11 @@ class FingerprintEnrollFindSensorViewModel( private val fingerprintEnrollViewModel: FingerprintEnrollViewModel, private val gatekeeperViewModel: FingerprintGatekeeperViewModel, private val backgroundViewModel: BackgroundViewModel, - private val accessibilityViewModel: AccessibilityViewModel, - private val foldStateViewModel: FoldStateViewModel, - private val orientationStateViewModel: OrientationStateViewModel, + private val accessibilityInteractor: AccessibilityInteractor, + private val foldStateInteractor: FoldStateInteractor, + private val orientationInteractor: OrientationInteractor, private val fingerprintFlowViewModel: FingerprintFlowViewModel, + private val fingerprintManagerInteractor: FingerprintManagerInteractor, ) : ViewModelProvider.Factory { @Suppress("UNCHECKED_CAST") override fun create(modelClass: Class): T { @@ -200,10 +200,11 @@ class FingerprintEnrollFindSensorViewModel( fingerprintEnrollViewModel, gatekeeperViewModel, backgroundViewModel, - accessibilityViewModel, - foldStateViewModel, - orientationStateViewModel, + accessibilityInteractor, + foldStateInteractor, + orientationInteractor, fingerprintFlowViewModel, + fingerprintManagerInteractor, ) as T } diff --git a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollViewModel.kt b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollViewModel.kt index c2cff5e5334..c27808db434 100644 --- a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollViewModel.kt +++ b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FingerprintEnrollViewModel.kt @@ -56,7 +56,7 @@ class FingerprintEnrollViewModel( } /** Represents the stream of [FingerprintSensorType] */ - val sensorType: Flow = + val sensorType: Flow = fingerprintManagerInteractor.sensorPropertiesInternal.filterNotNull().map { it.sensorType } /** diff --git a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FoldStateViewModel.kt b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FoldStateViewModel.kt deleted file mode 100644 index 94a70b057f4..00000000000 --- a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/viewmodel/FoldStateViewModel.kt +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (C) 2023 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 android.content.Context -import android.content.res.Configuration -import androidx.lifecycle.ViewModel -import androidx.lifecycle.ViewModelProvider -import com.android.systemui.unfold.compat.ScreenSizeFoldProvider -import com.android.systemui.unfold.updates.FoldProvider -import kotlinx.coroutines.channels.awaitClose -import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.callbackFlow - -/** Represents all of the information on fold state. */ -class FoldStateViewModel(context: Context) : ViewModel() { - - private val screenSizeFoldProvider = ScreenSizeFoldProvider(context) - - /** A flow that contains the fold state info */ - val isFolded: Flow = callbackFlow { - val foldStateListener = - object : FoldProvider.FoldCallback { - override fun onFoldUpdated(isFolded: Boolean) { - trySend(isFolded) - } - } - screenSizeFoldProvider.registerCallback(foldStateListener, context.mainExecutor) - awaitClose { screenSizeFoldProvider.unregisterCallback(foldStateListener) } - } - - fun onConfigurationChange(newConfig: Configuration) { - screenSizeFoldProvider.onConfigurationChange(newConfig) - } - - class FoldStateViewModelFactory(private val context: Context) : ViewModelProvider.Factory { - @Suppress("UNCHECKED_CAST") - override fun create(modelClass: Class): T { - return FoldStateViewModel(context) as T - } - } -} diff --git a/src/com/android/settings/biometrics/fingerprint2/ui/settings/fragment/FingerprintSettingsV2Fragment.kt b/src/com/android/settings/biometrics/fingerprint2/ui/settings/fragment/FingerprintSettingsV2Fragment.kt index 05bb3298907..a5f20212180 100644 --- a/src/com/android/settings/biometrics/fingerprint2/ui/settings/fragment/FingerprintSettingsV2Fragment.kt +++ b/src/com/android/settings/biometrics/fingerprint2/ui/settings/fragment/FingerprintSettingsV2Fragment.kt @@ -45,8 +45,8 @@ import com.android.settings.biometrics.BiometricEnrollBase.RESULT_FINISHED import com.android.settings.biometrics.GatekeeperPasswordProvider import com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling import com.android.settings.biometrics.fingerprint.FingerprintEnrollIntroductionInternal -import com.android.settings.biometrics.fingerprint2.data.repository.FingerprintSensorRepoImpl -import com.android.settings.biometrics.fingerprint2.data.repository.PressToAuthRepoImpl +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.FingerprintManagerInteractorImpl import com.android.settings.biometrics.fingerprint2.lib.model.FingerprintAuthAttemptModel import com.android.settings.biometrics.fingerprint2.lib.model.FingerprintData @@ -220,7 +220,8 @@ class FingerprintSettingsV2Fragment : toReturn == 1 } val fingerprintSensorProvider = - FingerprintSensorRepoImpl(fingerprintManager, backgroundDispatcher, lifecycleScope) + FingerprintSensorRepositoryImpl(fingerprintManager, backgroundDispatcher, lifecycleScope) + val pressToAuthInteractor = PressToAuthInteractorImpl(context, backgroundDispatcher) val interactor = FingerprintManagerInteractorImpl( @@ -229,7 +230,7 @@ class FingerprintSettingsV2Fragment : fingerprintManager, fingerprintSensorProvider, GatekeeperPasswordProvider(LockPatternUtils(context.applicationContext)), - PressToAuthRepoImpl(context), + pressToAuthInteractor, Settings, ) diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint2/fragment/OWNERS b/tests/robotests/src/com/android/settings/biometrics/fingerprint2/fragment/OWNERS new file mode 100644 index 00000000000..9f0a21aaaee --- /dev/null +++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint2/fragment/OWNERS @@ -0,0 +1 @@ +include /src/com/android/settings/biometrics/fingerprint2/OWNERS \ No newline at end of file diff --git a/tests/screenshot/AndroidManifest.xml b/tests/screenshot/AndroidManifest.xml index 6c8bb882104..9273270293c 100644 --- a/tests/screenshot/AndroidManifest.xml +++ b/tests/screenshot/AndroidManifest.xml @@ -23,6 +23,8 @@ + - \ No newline at end of file + diff --git a/tests/screenshot/assets/robolectric/fp_enroll_enrolling.png b/tests/screenshot/assets/robolectric/fp_enroll_enrolling.png new file mode 100644 index 0000000000000000000000000000000000000000..1299f2a39bf8f8ec2048df31597f8b5f0000cc7f GIT binary patch literal 84725 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%0Ahd_(%K-$L>v32#{+Rqu=@Nh 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 literal 0 HcmV?d00001 diff --git a/tests/screenshot/assets/robolectric/fp_enroll_find_sensor.png b/tests/screenshot/assets/robolectric/fp_enroll_find_sensor.png new file mode 100644 index 0000000000000000000000000000000000000000..a252e5ecb51bc6867415e49c9d7120bb4d45c80c GIT binary patch literal 46734 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

NCz+#_O}E;;WI6 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 Vp|XW<#3=Zut7WK}qi%ot{{YoCwXXmG diff --git a/tests/screenshot/src/com/android/settings/tests/screenshot/BasicScreenshotTest.kt b/tests/screenshot/src/com/android/settings/tests/screenshot/BasicScreenshotTest.kt deleted file mode 100644 index 493a669a1af..00000000000 --- a/tests/screenshot/src/com/android/settings/tests/screenshot/BasicScreenshotTest.kt +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright (C) 2023 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 - -import android.content.Context -import android.graphics.Bitmap -import android.graphics.Canvas -import android.graphics.Color -import android.os.Bundle -import android.view.View -import androidx.fragment.app.testing.FragmentScenario -import androidx.fragment.app.testing.launchFragmentInContainer -import androidx.lifecycle.ViewModel -import androidx.lifecycle.ViewModelProvider -import androidx.test.core.app.ApplicationProvider -import androidx.test.ext.junit.runners.AndroidJUnit4 -import androidx.test.platform.app.InstrumentationRegistry -import com.android.settings.R -import com.android.settings.biometrics.fingerprint2.lib.model.Default -import com.android.settings.biometrics.fingerprint2.ui.enrollment.fragment.FingerprintEnrollIntroV2Fragment -import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollIntroViewModel -import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintFlowViewModel -import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintGatekeeperViewModel -import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintNavigationStep -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.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 kotlinx.coroutines.test.StandardTestDispatcher -import org.junit.Before -import org.junit.Rule -import org.junit.Test -import org.junit.runner.RunWith -import platform.test.screenshot.GoldenImagePathManager -import platform.test.screenshot.ScreenshotTestRule -import platform.test.screenshot.matchers.MSSIMMatcher - -@RunWith(AndroidJUnit4::class) -class BasicScreenshotTest { - @Rule - @JvmField - var rule: ScreenshotTestRule = - ScreenshotTestRule( - GoldenImagePathManager( - InstrumentationRegistry.getInstrumentation().getContext(), - InstrumentationRegistry.getInstrumentation() - .getTargetContext() - .getFilesDir() - .getAbsolutePath() + "/settings_screenshots", - ) - ) - - private var context: Context = ApplicationProvider.getApplicationContext() - private var interactor = FakeFingerprintManagerInteractor() - - private val gatekeeperViewModel = - FingerprintGatekeeperViewModel( - GatekeeperInfo.GatekeeperPasswordInfo(byteArrayOf(1, 2, 3), 100L), - interactor, - ) - - private val backgroundDispatcher = StandardTestDispatcher() - private lateinit var fragmentScenario: FragmentScenario - private val fingerprintSensor = - FingerprintSensor(1, SensorStrength.STRONG, 5, FingerprintSensorType.POWER_BUTTON) - - var enrollFlow = Default - val flowViewModel = FingerprintFlowViewModel(enrollFlow) - - private val navigationViewModel = - FingerprintNavigationViewModel( - FingerprintNavigationStep.Introduction, - false, - flowViewModel, - interactor, - ) - - private var fingerprintViewModel = - FingerprintEnrollIntroViewModel(navigationViewModel, flowViewModel, interactor) - private var fingerprintScrollViewModel = FingerprintScrollViewModel() - - @Before - fun setup() { - val factory = - object : ViewModelProvider.Factory { - @Suppress("UNCHECKED_CAST") - override fun create(modelClass: Class): T { - return when (modelClass) { - FingerprintEnrollIntroViewModel::class.java -> fingerprintViewModel - FingerprintScrollViewModel::class.java -> fingerprintScrollViewModel - FingerprintNavigationViewModel::class.java -> navigationViewModel - FingerprintGatekeeperViewModel::class.java -> gatekeeperViewModel - else -> null - } - as T - } - } - - fragmentScenario = - launchFragmentInContainer(Bundle(), R.style.SudThemeGlif) { - FingerprintEnrollIntroV2Fragment(factory) - } - } - - /** Renders a [view] into a [Bitmap]. */ - private fun viewToBitmap(view: View): Bitmap { - val bitmap = - Bitmap.createBitmap(view.measuredWidth, view.measuredHeight, Bitmap.Config.ARGB_8888) - val canvas = Canvas(bitmap) - view.draw(canvas) - return bitmap - } - - @Test - fun testEnrollIntro() { - fragmentScenario.onFragment { fragment -> - val view = fragment.requireView().findViewById(R.id.enroll_intro_content_view)!! - view.setBackgroundColor(Color.BLACK) - } - fragmentScenario.onFragment { fragment -> - val view = fragment.requireView().findViewById(R.id.enroll_intro_content_view)!! - rule.assertBitmapAgainstGolden(viewToBitmap(view), "fp_enroll_intro", MSSIMMatcher()) - } - } -} diff --git a/tests/screenshot/src/com/android/settings/tests/screenshot/README.md b/tests/screenshot/src/com/android/settings/tests/screenshot/README.md new file mode 100644 index 00000000000..299265a9a08 --- /dev/null +++ b/tests/screenshot/src/com/android/settings/tests/screenshot/README.md @@ -0,0 +1,12 @@ +# Background info about tests +1. This test is ran in postsubmits at andoid-settings/robo_tests.gcl +2. It is important that this module stays somewhat small, if the test size grows + too large, it will be likely that this suite breaks due to flakiness(which + tends to happen with screenshot tests). In this case investigate splitting + the module. + +# Running and updating screenshots. +1. For FingerprintEnrollIntroScreenshotTest.kt#testEnrollIntro +2. atest SettingsScreenshotRNGTests +3. There should be a file like com.android.settings.tests.screenshot.biometrics.fingerprint.fragment.FingerprintEnrollIntroScreenshotTest_testEnrollIntro_actual_robolectric_fp_enroll_intro.png_6245562387930305138.png +4. Place this screenshot in packages/apps/Settings/tests/screenshot/assets/robolectric/fp_enroll_intro.png 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 new file mode 100644 index 00000000000..84d76ff5501 --- /dev/null +++ b/tests/screenshot/src/com/android/settings/tests/screenshot/biometrics/fingerprint/Injector.kt @@ -0,0 +1,161 @@ +/* + * 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 + +import android.content.res.Configuration +import android.view.Surface +import androidx.lifecycle.ViewModel +import androidx.lifecycle.ViewModelProvider +import androidx.test.platform.app.InstrumentationRegistry +import com.android.settings.biometrics.fingerprint2.domain.interactor.AccessibilityInteractor +import com.android.settings.biometrics.fingerprint2.domain.interactor.FoldStateInteractor +import com.android.settings.biometrics.fingerprint2.domain.interactor.OrientationInteractor +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.FingerprintEnrollEnrollingViewModel +import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollFindSensorViewModel +import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollIntroViewModel +import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollViewModel +import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintFlowViewModel +import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintGatekeeperViewModel +import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintNavigationStep +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.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 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 platform.test.screenshot.DeviceEmulationSpec +import platform.test.screenshot.DisplaySpec +import platform.test.screenshot.FragmentScreenshotTestRule +import platform.test.screenshot.GoldenImagePathManager +import platform.test.screenshot.matchers.PixelPerfectMatcher + +class Injector(step: FingerprintNavigationStep.UiStep) { + + var enrollFlow = Default + var fingerprintSensor = FingerprintSensor(1, SensorStrength.STRONG, 5, FingerprintSensorType.REAR) + var accessibilityInteractor = + object : AccessibilityInteractor { + override val isAccessibilityEnabled: Flow = flowOf(true) + } + + var foldStateInteractor = + object : FoldStateInteractor { + private val _foldState = MutableStateFlow(false) + override val isFolded: Flow = _foldState.asStateFlow() + + override fun onConfigurationChange(newConfig: Configuration) { + _foldState.update { false } + } + } + + var orientationInteractor = + object : OrientationInteractor { + override val orientation: Flow = flowOf(Configuration.ORIENTATION_LANDSCAPE) + override val rotation: Flow = flowOf(Surface.ROTATION_0) + + override fun getRotationFromDefault(rotation: Int): Int = rotation + } + var gatekeeperViewModel = + FingerprintGatekeeperViewModel( + GatekeeperInfo.GatekeeperPasswordInfo(byteArrayOf(1, 2, 3), 100L), + interactor, + ) + + val flowViewModel = FingerprintFlowViewModel(enrollFlow) + + var navigationViewModel = FingerprintNavigationViewModel(step, true, flowViewModel, interactor) + var fingerprintViewModel = + FingerprintEnrollIntroViewModel(navigationViewModel, flowViewModel, interactor) + + var fingerprintScrollViewModel = FingerprintScrollViewModel() + var backgroundViewModel = BackgroundViewModel() + + var fingerprintEnrollViewModel = + FingerprintEnrollViewModel(interactor, gatekeeperViewModel, navigationViewModel) + + var fingerprintEnrollEnrollingViewModel = + FingerprintEnrollEnrollingViewModel(fingerprintEnrollViewModel, backgroundViewModel) + + var rfpsIconTouchViewModel = RFPSIconTouchViewModel() + var rfpsViewModel = + RFPSViewModel(fingerprintEnrollEnrollingViewModel, navigationViewModel, orientationInteractor) + + var fingerprintFindSensorViewModel = + FingerprintEnrollFindSensorViewModel( + navigationViewModel, + fingerprintEnrollViewModel, + gatekeeperViewModel, + backgroundViewModel, + accessibilityInteractor, + foldStateInteractor, + orientationInteractor, + flowViewModel, + interactor, + ) + + val factory = + object : ViewModelProvider.Factory { + @Suppress("UNCHECKED_CAST") + override fun create(modelClass: Class): T { + return when (modelClass) { + FingerprintEnrollIntroViewModel::class.java -> fingerprintViewModel + FingerprintScrollViewModel::class.java -> fingerprintScrollViewModel + FingerprintNavigationViewModel::class.java -> navigationViewModel + FingerprintGatekeeperViewModel::class.java -> gatekeeperViewModel + FingerprintEnrollFindSensorViewModel::class.java -> fingerprintFindSensorViewModel + FingerprintEnrollViewModel::class.java -> fingerprintEnrollViewModel + RFPSViewModel::class.java -> rfpsViewModel + BackgroundViewModel::class.java -> backgroundViewModel + RFPSIconTouchViewModel::class.java -> rfpsIconTouchViewModel + FingerprintEnrollEnrollingViewModel::class.java -> fingerprintEnrollEnrollingViewModel + else -> null + } + as T + } + } + + init { + fingerprintEnrollViewModel.sensorTypeCached = fingerprintSensor.sensorType + } + + companion object { + private val Phone = DisplaySpec("phone", width = 1080, height = 2340, densityDpi = 420) + private const val screenshotPath = "/settings_screenshots" + val interactor = FakeFingerprintManagerInteractor() + + fun BiometricFragmentScreenShotRule() = + FragmentScreenshotTestRule( + DeviceEmulationSpec.forDisplays(Phone).first(), + GoldenImagePathManager( + InstrumentationRegistry.getInstrumentation().context, + InstrumentationRegistry.getInstrumentation().targetContext.filesDir.absolutePath + + screenshotPath, + ), + PixelPerfectMatcher(), + true, + ) + } +} diff --git a/tests/screenshot/src/com/android/settings/tests/screenshot/biometrics/fingerprint/fragment/FingerprintEnrollEnrollingScreenshotTest.kt b/tests/screenshot/src/com/android/settings/tests/screenshot/biometrics/fingerprint/fragment/FingerprintEnrollEnrollingScreenshotTest.kt new file mode 100644 index 00000000000..215e76fc8c1 --- /dev/null +++ b/tests/screenshot/src/com/android/settings/tests/screenshot/biometrics/fingerprint/fragment/FingerprintEnrollEnrollingScreenshotTest.kt @@ -0,0 +1,40 @@ +/* + * 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 com.android.settings.biometrics.fingerprint2.ui.enrollment.modules.enrolling.rfps.ui.fragment.RFPSEnrollFragment +import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintNavigationStep +import com.android.settings.tests.screenshot.biometrics.fingerprint.Injector +import com.android.settings.tests.screenshot.biometrics.fingerprint.Injector.Companion.BiometricFragmentScreenShotRule +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 FingerprintEnrollEnrollingScreenshotTest { + private val injector: Injector = + Injector(FingerprintNavigationStep.Enrollment(Injector.interactor.sensorProp)) + + @Rule @JvmField var rule: FragmentScreenshotTestRule = BiometricFragmentScreenShotRule() + + @Test + fun testEnrollEnrolling() { + rule.screenshotTest("fp_enroll_enrolling", Mode.MatchSize, RFPSEnrollFragment(injector.factory)) + } +} diff --git a/tests/screenshot/src/com/android/settings/tests/screenshot/biometrics/fingerprint/fragment/FingerprintEnrollFindSensorScreenshotTest.kt b/tests/screenshot/src/com/android/settings/tests/screenshot/biometrics/fingerprint/fragment/FingerprintEnrollFindSensorScreenshotTest.kt new file mode 100644 index 00000000000..18257c2121b --- /dev/null +++ b/tests/screenshot/src/com/android/settings/tests/screenshot/biometrics/fingerprint/fragment/FingerprintEnrollFindSensorScreenshotTest.kt @@ -0,0 +1,45 @@ +package com.android.settings.tests.screenshot.biometrics.fingerprint.fragment + +/* + * 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. + */ + +import androidx.test.ext.junit.runners.AndroidJUnit4 +import com.android.settings.biometrics.fingerprint2.ui.enrollment.fragment.FingerprintEnrollFindSensorV2Fragment +import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintNavigationStep +import com.android.settings.tests.screenshot.biometrics.fingerprint.Injector +import com.android.settings.tests.screenshot.biometrics.fingerprint.Injector.Companion.BiometricFragmentScreenShotRule +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 FingerprintEnrollFindSensorScreenshotTest { + private val injector: Injector = + Injector(FingerprintNavigationStep.Education(Injector.interactor.sensorProp)) + + @Rule @JvmField var rule: FragmentScreenshotTestRule = BiometricFragmentScreenShotRule() + + @Test + fun testEnrollFindSensor() { + rule.screenshotTest( + "fp_enroll_find_sensor", + Mode.MatchSize, + FingerprintEnrollFindSensorV2Fragment(injector.fingerprintSensor.sensorType, injector.factory), + ) + } +} diff --git a/tests/screenshot/src/com/android/settings/tests/screenshot/biometrics/fingerprint/fragment/FingerprintEnrollIntroScreenshotTest.kt b/tests/screenshot/src/com/android/settings/tests/screenshot/biometrics/fingerprint/fragment/FingerprintEnrollIntroScreenshotTest.kt new file mode 100644 index 00000000000..40a23d7fd56 --- /dev/null +++ b/tests/screenshot/src/com/android/settings/tests/screenshot/biometrics/fingerprint/fragment/FingerprintEnrollIntroScreenshotTest.kt @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2023 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 com.android.settings.biometrics.fingerprint2.ui.enrollment.fragment.FingerprintEnrollIntroV2Fragment +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 FingerprintEnrollIntroScreenshotTest { + private val injector: Injector = Injector(FingerprintNavigationStep.Introduction) + + @Rule + @JvmField + var rule: FragmentScreenshotTestRule = Injector.BiometricFragmentScreenShotRule() + + @Test + fun testEnrollIntro() { + rule.screenshotTest( + "fp_enroll_intro", + Mode.MatchSize, + FingerprintEnrollIntroV2Fragment(injector.factory), + ) + } +} diff --git a/tests/shared/src/com/android/settings/testutils2/FakeFingerprintManagerInteractor.kt b/tests/shared/src/com/android/settings/testutils2/FakeFingerprintManagerInteractor.kt index 7991ff142c6..f571dad420b 100644 --- a/tests/shared/src/com/android/settings/testutils2/FakeFingerprintManagerInteractor.kt +++ b/tests/shared/src/com/android/settings/testutils2/FakeFingerprintManagerInteractor.kt @@ -37,7 +37,6 @@ class FakeFingerprintManagerInteractor : FingerprintManagerInteractor { var authenticateAttempt = FingerprintAuthAttemptModel.Success(1) var enrollStateViewModel: List = listOf(FingerEnrollState.EnrollProgress(5, 5)) - var pressToAuthEnabled = true var sensorProp = FingerprintSensor( @@ -86,7 +85,4 @@ class FakeFingerprintManagerInteractor : FingerprintManagerInteractor { return sensorProp.sensorType == FingerprintSensorType.POWER_BUTTON } - override suspend fun pressToAuthEnabled(): Boolean { - return pressToAuthEnabled - } } 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 f1808e38160..c284a6fee7f 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 @@ -26,9 +26,9 @@ 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.FingerprintSensorRepo +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.data.repository.PressToAuthRepo 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 @@ -77,17 +77,16 @@ class FingerprintManagerInteractorTest { @Mock private lateinit var gateKeeperPasswordProvider: GatekeeperPasswordProvider private var testScope = TestScope(backgroundDispatcher) - private var pressToAuthRepo = - object : PressToAuthRepo { - override val isEnabled: Boolean - get() = false + private var pressToAuthInteractor = + object : PressToAuthInteractor { + override val isEnabled = flowOf(false) } @Before fun setup() { val sensor = FingerprintSensor(1, SensorStrength.STRONG, 5, FingerprintSensorType.POWER_BUTTON) - val fingerprintSensorRepo = - object : FingerprintSensorRepo { + val fingerprintSensorRepository = + object : FingerprintSensorRepository { override val fingerprintSensor: Flow = flowOf(sensor) } @@ -96,9 +95,9 @@ class FingerprintManagerInteractorTest { context, backgroundDispatcher, fingerprintManager, - fingerprintSensorRepo, + fingerprintSensorRepository, gateKeeperPasswordProvider, - pressToAuthRepo, + pressToAuthInteractor, Default, ) } 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 3b02d49141b..f202c4fb7c3 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,27 +18,30 @@ package com.android.settings.fingerprint2.enrollment.viewmodel import android.content.Context import android.content.res.Configuration -import android.view.accessibility.AccessibilityManager +import android.view.Surface import androidx.arch.core.executor.testing.InstantTaskExecutorRule import androidx.test.core.app.ApplicationProvider +import com.android.settings.biometrics.fingerprint2.domain.interactor.AccessibilityInteractor +import com.android.settings.biometrics.fingerprint2.domain.interactor.FoldStateInteractor +import com.android.settings.biometrics.fingerprint2.domain.interactor.OrientationInteractor import com.android.settings.biometrics.fingerprint2.lib.model.Default -import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.AccessibilityViewModel import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.BackgroundViewModel import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollFindSensorViewModel import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollViewModel import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintFlowViewModel import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintGatekeeperViewModel -import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintNavigationStep.Education +import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintNavigationStep import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintNavigationViewModel -import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FoldStateViewModel -import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.NavigationState -import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.OrientationStateViewModel 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.Dispatchers +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.flowOf +import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch import kotlinx.coroutines.test.StandardTestDispatcher import kotlinx.coroutines.test.TestScope @@ -68,14 +71,13 @@ class FingerprintEnrollFindSensorViewModelV2Test { private lateinit var gatekeeperViewModel: FingerprintGatekeeperViewModel private lateinit var enrollViewModel: FingerprintEnrollViewModel private lateinit var navigationViewModel: FingerprintNavigationViewModel - private lateinit var accessibilityViewModel: AccessibilityViewModel - private lateinit var foldStateViewModel: FoldStateViewModel - private lateinit var orientationStateViewModel: OrientationStateViewModel + private lateinit var accessibilityInteractor: AccessibilityInteractor + private lateinit var foldStateInteractor: FoldStateInteractor + private lateinit var orientationInteractor: OrientationInteractor private lateinit var underTest: FingerprintEnrollFindSensorViewModel private lateinit var backgroundViewModel: BackgroundViewModel private val context: Context = ApplicationProvider.getApplicationContext() - private val accessibilityManager: AccessibilityManager = - context.getSystemService(AccessibilityManager::class.java)!! + private val foldState = MutableStateFlow(false) @Before fun setup() { @@ -95,7 +97,7 @@ class FingerprintEnrollFindSensorViewModelV2Test { val fingerprintFlowViewModel = FingerprintFlowViewModel(Default) navigationViewModel = FingerprintNavigationViewModel( - Education(sensor), + FingerprintNavigationStep.Education(sensor), false, fingerprintFlowViewModel, fakeFingerprintManagerInteractor, @@ -111,24 +113,39 @@ class FingerprintEnrollFindSensorViewModelV2Test { navigationViewModel, ) .create(FingerprintEnrollViewModel::class.java) - accessibilityViewModel = - AccessibilityViewModel.AccessibilityViewModelFactory(accessibilityManager) - .create(AccessibilityViewModel::class.java) - foldStateViewModel = - FoldStateViewModel.FoldStateViewModelFactory(context).create(FoldStateViewModel::class.java) - orientationStateViewModel = - OrientationStateViewModel.OrientationViewModelFactory(context) - .create(OrientationStateViewModel::class.java) + accessibilityInteractor = + object : AccessibilityInteractor { + override val isAccessibilityEnabled: Flow = flowOf(false) + } + foldStateInteractor = + object : FoldStateInteractor { + override val isFolded: Flow = foldState + override fun onConfigurationChange(newConfig: Configuration) { + TODO("Not yet implemented") + } + } + orientationInteractor = + object: OrientationInteractor { + override val orientation: Flow + get() = TODO("Not yet implemented") + override val rotation: Flow = flowOf(Surface.ROTATION_0) + + override fun getRotationFromDefault(rotation: Int): Int { + TODO("Not yet implemented") + } + + } underTest = FingerprintEnrollFindSensorViewModel.FingerprintEnrollFindSensorViewModelFactory( navigationViewModel, enrollViewModel, gatekeeperViewModel, backgroundViewModel, - accessibilityViewModel, - foldStateViewModel, - orientationStateViewModel, + accessibilityInteractor, + foldStateInteractor, + orientationInteractor, fingerprintFlowViewModel, + fakeFingerprintManagerInteractor, ) .create(FingerprintEnrollFindSensorViewModel::class.java) } @@ -171,8 +188,8 @@ class FingerprintEnrollFindSensorViewModelV2Test { } } - val config = createConfiguration(isFolded = true) - foldStateViewModel.onConfigurationChange(config) + foldState.update { true } + advanceUntilIdle() assertThat(isFolded).isTrue() assertThat(rotation).isEqualTo(context.display!!.rotation) @@ -191,8 +208,8 @@ class FingerprintEnrollFindSensorViewModelV2Test { } } - val config = createConfiguration(isFolded = false) - foldStateViewModel.onConfigurationChange(config) + foldState.update { false } + advanceUntilIdle() assertThat(isFolded).isFalse() assertThat(rotation).isEqualTo(context.display!!.rotation)