From ae289cf1a2aa502d3e2029c6a674decddd0db1ac Mon Sep 17 00:00:00 2001 From: Hao Dong Date: Thu, 31 Aug 2023 23:37:04 +0000 Subject: [PATCH] Use FingerprintSensorType in shared lib. This CL uses FingerprintSensorType so that we don't need to expose server to view models. Test: atest FingerprintSettingsViewModelTest Bug: 295206773 Change-Id: I93010d833c256c789b64cfa98bb75d2c5d02e96e --- .../FingerprintEnrollmentIntroV2Fragment.kt | 6 +++--- .../viewmodel/FingerprintEnrollViewModel.kt | 14 +++++++++----- .../viewmodel/FingerprintSettingsViewModel.kt | 16 ++++++++-------- 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/fragment/FingerprintEnrollmentIntroV2Fragment.kt b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/fragment/FingerprintEnrollmentIntroV2Fragment.kt index ebbdef854fd..f2f925b2107 100644 --- a/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/fragment/FingerprintEnrollmentIntroV2Fragment.kt +++ b/src/com/android/settings/biometrics/fingerprint2/ui/enrollment/fragment/FingerprintEnrollmentIntroV2Fragment.kt @@ -21,7 +21,6 @@ import android.annotation.StringRes import android.graphics.Color import android.graphics.PorterDuff import android.graphics.PorterDuffColorFilter -import android.hardware.fingerprint.FingerprintSensorProperties import android.os.Bundle import android.text.Html import android.text.method.LinkMovementMethod @@ -39,6 +38,7 @@ import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.Fing import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintGatekeeperViewModel import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintScrollViewModel import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.Unicorn +import com.android.systemui.biometrics.shared.model.FingerprintSensorType import com.google.android.setupcompat.template.FooterBarMixin import com.google.android.setupcompat.template.FooterButton import com.google.android.setupdesign.GlifLayout @@ -144,8 +144,8 @@ class FingerprintEnrollmentIntroV2Fragment : Fragment(R.layout.fingerprint_v2_en val iconShield: ImageView = view.requireViewById(R.id.icon_shield) val footerMessage6: TextView = view.requireViewById(R.id.footer_message_6) when (sensorType) { - FingerprintSensorProperties.TYPE_UDFPS_ULTRASONIC, - FingerprintSensorProperties.TYPE_UDFPS_OPTICAL -> { + FingerprintSensorType.UDFPS_ULTRASONIC, + FingerprintSensorType.UDFPS_OPTICAL -> { footerMessage6.visibility = View.VISIBLE iconShield.visibility = View.VISIBLE } 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 879f425eb7c..31fa03d044b 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 @@ -16,20 +16,24 @@ package com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel -import android.hardware.fingerprint.FingerprintSensorProperties import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import com.android.settings.biometrics.fingerprint2.domain.interactor.FingerprintManagerInteractor +import com.android.systemui.biometrics.shared.model.FingerprintSensorType +import com.android.systemui.biometrics.shared.model.toSensorType import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.transform +import kotlinx.coroutines.flow.filterNotNull +import kotlinx.coroutines.flow.map /** Represents all of the fingerprint information needed for fingerprint enrollment. */ class FingerprintEnrollViewModel(fingerprintManagerInteractor: FingerprintManagerInteractor) : ViewModel() { - /** Represents the stream of [FingerprintSensorProperties.SensorType] */ - val sensorType: Flow = - fingerprintManagerInteractor.sensorPropertiesInternal.transform { it?.sensorType } + /** Represents the stream of [FingerprintSensorType] */ + val sensorType: Flow = + fingerprintManagerInteractor.sensorPropertiesInternal.filterNotNull().map { + it.sensorType.toSensorType() + } class FingerprintEnrollViewModelFactory(val interactor: FingerprintManagerInteractor) : ViewModelProvider.Factory { diff --git a/src/com/android/settings/biometrics/fingerprint2/ui/settings/viewmodel/FingerprintSettingsViewModel.kt b/src/com/android/settings/biometrics/fingerprint2/ui/settings/viewmodel/FingerprintSettingsViewModel.kt index 64d8a12958e..5770d09e4d9 100644 --- a/src/com/android/settings/biometrics/fingerprint2/ui/settings/viewmodel/FingerprintSettingsViewModel.kt +++ b/src/com/android/settings/biometrics/fingerprint2/ui/settings/viewmodel/FingerprintSettingsViewModel.kt @@ -17,7 +17,6 @@ package com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel import android.hardware.fingerprint.FingerprintManager -import android.hardware.fingerprint.FingerprintSensorProperties import android.util.Log import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider @@ -25,6 +24,8 @@ import androidx.lifecycle.viewModelScope import com.android.settings.biometrics.fingerprint2.domain.interactor.FingerprintManagerInteractor import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintAuthAttemptViewModel import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintViewModel +import com.android.systemui.biometrics.shared.model.FingerprintSensorType +import com.android.systemui.biometrics.shared.model.toSensorType import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableSharedFlow @@ -89,11 +90,13 @@ class FingerprintSettingsViewModel( private val _consumerShouldAuthenticate: MutableStateFlow = MutableStateFlow(false) - private val _fingerprintSensorType: Flow = - fingerprintManagerInteractor.sensorPropertiesInternal.transform { it?.sensorType } + private val _fingerprintSensorType: Flow = + fingerprintManagerInteractor.sensorPropertiesInternal.filterNotNull().map { + it.sensorType.toSensorType() + } private val _sensorNullOrEmpty: Flow = - fingerprintManagerInteractor.sensorPropertiesInternal.map{it ==null} + fingerprintManagerInteractor.sensorPropertiesInternal.map { it == null } private val _isLockedOut: MutableStateFlow = MutableStateFlow(null) @@ -147,10 +150,7 @@ class FingerprintSettingsViewModel( return@combine false } if ( - listOf( - FingerprintSensorProperties.TYPE_UDFPS_OPTICAL, - FingerprintSensorProperties.TYPE_UDFPS_ULTRASONIC - ) + listOf(FingerprintSensorType.UDFPS_ULTRASONIC, FingerprintSensorType.UDFPS_OPTICAL) .contains(sensorType) ) { return@combine false