Merge "Use shared lib for settings v2." into main
This commit is contained in:
@@ -17,43 +17,10 @@
|
|||||||
package com.android.settings.biometrics.fingerprint2.conversion
|
package com.android.settings.biometrics.fingerprint2.conversion
|
||||||
|
|
||||||
import android.hardware.fingerprint.FingerprintManager
|
import android.hardware.fingerprint.FingerprintManager
|
||||||
import android.hardware.fingerprint.FingerprintSensorProperties
|
|
||||||
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal
|
|
||||||
import com.android.settings.biometrics.fingerprint2.shared.model.EnrollReason
|
import com.android.settings.biometrics.fingerprint2.shared.model.EnrollReason
|
||||||
import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintSensorPropertyViewModel
|
|
||||||
import com.android.settings.biometrics.fingerprint2.shared.model.SensorStrength
|
|
||||||
import com.android.settings.biometrics.fingerprint2.shared.model.SensorType
|
|
||||||
|
|
||||||
class Util {
|
class Util
|
||||||
companion object {
|
|
||||||
fun sensorPropsToViewModel(
|
|
||||||
props: FingerprintSensorPropertiesInternal
|
|
||||||
): FingerprintSensorPropertyViewModel {
|
|
||||||
val sensorStrength: SensorStrength =
|
|
||||||
when (props.sensorStrength) {
|
|
||||||
FingerprintSensorProperties.STRENGTH_CONVENIENCE -> SensorStrength.Convenient
|
|
||||||
FingerprintSensorProperties.STRENGTH_WEAK -> SensorStrength.Weak
|
|
||||||
FingerprintSensorProperties.STRENGTH_STRONG -> SensorStrength.Strong
|
|
||||||
else -> SensorStrength.Unknown
|
|
||||||
}
|
|
||||||
val sensorType: SensorType =
|
|
||||||
when (props.sensorType) {
|
|
||||||
FingerprintSensorProperties.TYPE_UDFPS_OPTICAL -> SensorType.Optical
|
|
||||||
FingerprintSensorProperties.TYPE_UDFPS_ULTRASONIC -> SensorType.Ultrasonic
|
|
||||||
FingerprintSensorProperties.TYPE_REAR -> SensorType.RFPS
|
|
||||||
FingerprintSensorProperties.TYPE_POWER_BUTTON -> SensorType.SFPS
|
|
||||||
else -> SensorType.Unknown
|
|
||||||
}
|
|
||||||
return FingerprintSensorPropertyViewModel(
|
|
||||||
props.sensorId,
|
|
||||||
sensorStrength,
|
|
||||||
props.maxEnrollmentsPerUser,
|
|
||||||
sensorType
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
fun EnrollReason.toOriginalReason(): Int {
|
fun EnrollReason.toOriginalReason(): Int {
|
||||||
return when (this) {
|
return when (this) {
|
||||||
EnrollReason.EnrollEnrolling -> FingerprintManager.ENROLL_ENROLL
|
EnrollReason.EnrollEnrolling -> FingerprintManager.ENROLL_ENROLL
|
||||||
|
@@ -24,14 +24,14 @@ import android.hardware.fingerprint.FingerprintManager.RemovalCallback
|
|||||||
import android.os.CancellationSignal
|
import android.os.CancellationSignal
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import com.android.settings.biometrics.GatekeeperPasswordProvider
|
import com.android.settings.biometrics.GatekeeperPasswordProvider
|
||||||
import com.android.settings.biometrics.fingerprint2.conversion.Util
|
|
||||||
import com.android.settings.biometrics.fingerprint2.conversion.toOriginalReason
|
import com.android.settings.biometrics.fingerprint2.conversion.toOriginalReason
|
||||||
import com.android.settings.biometrics.fingerprint2.shared.domain.interactor.FingerprintManagerInteractor
|
import com.android.settings.biometrics.fingerprint2.shared.domain.interactor.FingerprintManagerInteractor
|
||||||
import com.android.settings.biometrics.fingerprint2.shared.model.EnrollReason
|
import com.android.settings.biometrics.fingerprint2.shared.model.EnrollReason
|
||||||
|
import com.android.settings.biometrics.fingerprint2.shared.model.FingerEnrollStateViewModel
|
||||||
import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintAuthAttemptViewModel
|
import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintAuthAttemptViewModel
|
||||||
import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintViewModel
|
import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintViewModel
|
||||||
import com.android.settings.biometrics.fingerprint2.shared.model.FingerEnrollStateViewModel
|
|
||||||
import com.android.settings.password.ChooseLockSettingsHelper
|
import com.android.settings.password.ChooseLockSettingsHelper
|
||||||
|
import com.android.systemui.biometrics.shared.model.toFingerprintSensor
|
||||||
import kotlin.coroutines.resume
|
import kotlin.coroutines.resume
|
||||||
import kotlin.coroutines.suspendCoroutine
|
import kotlin.coroutines.suspendCoroutine
|
||||||
import kotlinx.coroutines.CancellableContinuation
|
import kotlinx.coroutines.CancellableContinuation
|
||||||
@@ -94,7 +94,7 @@ class FingerprintManagerInteractorImpl(
|
|||||||
val sensorPropertiesInternal = fingerprintManager.sensorPropertiesInternal
|
val sensorPropertiesInternal = fingerprintManager.sensorPropertiesInternal
|
||||||
emit(
|
emit(
|
||||||
if (sensorPropertiesInternal.isEmpty()) null
|
if (sensorPropertiesInternal.isEmpty()) null
|
||||||
else Util.sensorPropsToViewModel(sensorPropertiesInternal.first())
|
else sensorPropertiesInternal.first().toFingerprintSensor()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -8,6 +8,7 @@ android_library {
|
|||||||
"**/*.kt"
|
"**/*.kt"
|
||||||
],
|
],
|
||||||
static_libs: [
|
static_libs: [
|
||||||
|
"BiometricsSharedLib",
|
||||||
"kotlinx-coroutines-android",
|
"kotlinx-coroutines-android",
|
||||||
],
|
],
|
||||||
}
|
}
|
@@ -18,9 +18,9 @@ package com.android.settings.biometrics.fingerprint2.shared.domain.interactor
|
|||||||
|
|
||||||
import com.android.settings.biometrics.fingerprint2.shared.model.EnrollReason
|
import com.android.settings.biometrics.fingerprint2.shared.model.EnrollReason
|
||||||
import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintAuthAttemptViewModel
|
import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintAuthAttemptViewModel
|
||||||
import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintSensorPropertyViewModel
|
|
||||||
import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintViewModel
|
import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintViewModel
|
||||||
import com.android.settings.biometrics.fingerprint2.shared.model.FingerEnrollStateViewModel
|
import com.android.settings.biometrics.fingerprint2.shared.model.FingerEnrollStateViewModel
|
||||||
|
import com.android.systemui.biometrics.shared.model.FingerprintSensor
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -40,7 +40,7 @@ interface FingerprintManagerInteractor {
|
|||||||
val canEnrollFingerprints: Flow<Boolean>
|
val canEnrollFingerprints: Flow<Boolean>
|
||||||
|
|
||||||
/** Retrieves the sensor properties of a device */
|
/** Retrieves the sensor properties of a device */
|
||||||
val sensorPropertiesInternal: Flow<FingerprintSensorPropertyViewModel?>
|
val sensorPropertiesInternal: Flow<FingerprintSensor?>
|
||||||
|
|
||||||
/** Runs the authenticate flow */
|
/** Runs the authenticate flow */
|
||||||
suspend fun authenticate(): FingerprintAuthAttemptViewModel
|
suspend fun authenticate(): FingerprintAuthAttemptViewModel
|
||||||
|
@@ -32,36 +32,3 @@ sealed class FingerprintAuthAttemptViewModel {
|
|||||||
val message: String,
|
val message: String,
|
||||||
) : FingerprintAuthAttemptViewModel()
|
) : FingerprintAuthAttemptViewModel()
|
||||||
}
|
}
|
||||||
|
|
||||||
/** The various types of fingerprint sensors */
|
|
||||||
sealed class SensorType {
|
|
||||||
/** Rear fingerprint sensor */
|
|
||||||
data object RFPS : SensorType()
|
|
||||||
|
|
||||||
/** Optical under display sensor */
|
|
||||||
data object Optical : SensorType()
|
|
||||||
|
|
||||||
/** Ultrasonic under display sensor */
|
|
||||||
data object Ultrasonic : SensorType()
|
|
||||||
|
|
||||||
/** Side fingerprint sensor */
|
|
||||||
data object SFPS : SensorType()
|
|
||||||
|
|
||||||
/** Unkonwn fingerprint sensor */
|
|
||||||
data object Unknown : SensorType()
|
|
||||||
}
|
|
||||||
|
|
||||||
/** The strength of a given sensor */
|
|
||||||
sealed class SensorStrength {
|
|
||||||
data object Convenient : SensorStrength()
|
|
||||||
data object Weak : SensorStrength()
|
|
||||||
data object Strong : SensorStrength()
|
|
||||||
data object Unknown : SensorStrength()
|
|
||||||
}
|
|
||||||
|
|
||||||
data class FingerprintSensorPropertyViewModel(
|
|
||||||
val sensorId: Int,
|
|
||||||
val sensorStrength: SensorStrength,
|
|
||||||
val maxEnrollmentsPerUser: Int,
|
|
||||||
val sensorType: SensorType
|
|
||||||
)
|
|
||||||
|
@@ -29,7 +29,6 @@ import com.airbnb.lottie.LottieAnimationView
|
|||||||
import com.android.settings.R
|
import com.android.settings.R
|
||||||
import com.android.settings.biometrics.fingerprint.FingerprintErrorDialog
|
import com.android.settings.biometrics.fingerprint.FingerprintErrorDialog
|
||||||
import com.android.settings.biometrics.fingerprint.FingerprintFindSensorAnimation
|
import com.android.settings.biometrics.fingerprint.FingerprintFindSensorAnimation
|
||||||
import com.android.settings.biometrics.fingerprint2.shared.model.SensorType
|
|
||||||
import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollFindSensorViewModel
|
import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollFindSensorViewModel
|
||||||
import com.android.systemui.biometrics.shared.model.FingerprintSensorType
|
import com.android.systemui.biometrics.shared.model.FingerprintSensorType
|
||||||
import com.google.android.setupcompat.template.FooterBarMixin
|
import com.google.android.setupcompat.template.FooterBarMixin
|
||||||
@@ -66,9 +65,9 @@ class FingerprintEnrollFindSensorV2Fragment : Fragment() {
|
|||||||
viewModel.sensorType.collect {
|
viewModel.sensorType.collect {
|
||||||
contentLayoutId =
|
contentLayoutId =
|
||||||
when (it) {
|
when (it) {
|
||||||
SensorType.Optical,
|
FingerprintSensorType.UDFPS_OPTICAL,
|
||||||
SensorType.Ultrasonic -> R.layout.udfps_enroll_find_sensor_layout
|
FingerprintSensorType.UDFPS_ULTRASONIC -> R.layout.udfps_enroll_find_sensor_layout
|
||||||
SensorType.SFPS -> R.layout.sfps_enroll_find_sensor_layout
|
FingerprintSensorType.POWER_BUTTON -> R.layout.sfps_enroll_find_sensor_layout
|
||||||
else -> R.layout.fingerprint_v2_enroll_find_sensor
|
else -> R.layout.fingerprint_v2_enroll_find_sensor
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -171,14 +170,14 @@ class FingerprintEnrollFindSensorV2Fragment : Fragment() {
|
|||||||
illustrationLottie?.visibility = View.VISIBLE
|
illustrationLottie?.visibility = View.VISIBLE
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setTexts(sensorType: SensorType, view: GlifLayout) {
|
private fun setTexts(sensorType: FingerprintSensorType, view: GlifLayout) {
|
||||||
when (sensorType) {
|
when (sensorType) {
|
||||||
SensorType.Optical,
|
FingerprintSensorType.UDFPS_OPTICAL,
|
||||||
SensorType.Ultrasonic -> {
|
FingerprintSensorType.UDFPS_ULTRASONIC -> {
|
||||||
view.setHeaderText(R.string.security_settings_udfps_enroll_find_sensor_title)
|
view.setHeaderText(R.string.security_settings_udfps_enroll_find_sensor_title)
|
||||||
view.setDescriptionText(R.string.security_settings_udfps_enroll_find_sensor_message)
|
view.setDescriptionText(R.string.security_settings_udfps_enroll_find_sensor_message)
|
||||||
}
|
}
|
||||||
SensorType.SFPS -> {
|
FingerprintSensorType.POWER_BUTTON -> {
|
||||||
view.setHeaderText(R.string.security_settings_sfps_enroll_find_sensor_title)
|
view.setHeaderText(R.string.security_settings_sfps_enroll_find_sensor_title)
|
||||||
view.setDescriptionText(R.string.security_settings_sfps_enroll_find_sensor_message)
|
view.setDescriptionText(R.string.security_settings_sfps_enroll_find_sensor_message)
|
||||||
}
|
}
|
||||||
|
@@ -35,10 +35,10 @@ import androidx.lifecycle.lifecycleScope
|
|||||||
import com.android.settings.R
|
import com.android.settings.R
|
||||||
import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollNavigationViewModel
|
import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollNavigationViewModel
|
||||||
import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollViewModel
|
import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollViewModel
|
||||||
import com.android.settings.biometrics.fingerprint2.shared.model.SensorType
|
|
||||||
import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintGatekeeperViewModel
|
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.FingerprintScrollViewModel
|
||||||
import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.Unicorn
|
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.FooterBarMixin
|
||||||
import com.google.android.setupcompat.template.FooterButton
|
import com.google.android.setupcompat.template.FooterButton
|
||||||
import com.google.android.setupdesign.GlifLayout
|
import com.google.android.setupdesign.GlifLayout
|
||||||
@@ -144,8 +144,8 @@ class FingerprintEnrollIntroV2Fragment : Fragment(R.layout.fingerprint_v2_enroll
|
|||||||
val iconShield: ImageView = view.requireViewById(R.id.icon_shield)
|
val iconShield: ImageView = view.requireViewById(R.id.icon_shield)
|
||||||
val footerMessage6: TextView = view.requireViewById(R.id.footer_message_6)
|
val footerMessage6: TextView = view.requireViewById(R.id.footer_message_6)
|
||||||
when (sensorType) {
|
when (sensorType) {
|
||||||
SensorType.Ultrasonic,
|
FingerprintSensorType.UDFPS_ULTRASONIC,
|
||||||
SensorType.Optical -> {
|
FingerprintSensorType.UDFPS_OPTICAL -> {
|
||||||
footerMessage6.visibility = View.VISIBLE
|
footerMessage6.visibility = View.VISIBLE
|
||||||
iconShield.visibility = View.VISIBLE
|
iconShield.visibility = View.VISIBLE
|
||||||
}
|
}
|
||||||
|
@@ -22,7 +22,6 @@ import androidx.lifecycle.ViewModelProvider
|
|||||||
import androidx.lifecycle.viewModelScope
|
import androidx.lifecycle.viewModelScope
|
||||||
import com.android.settings.biometrics.fingerprint2.shared.model.EnrollReason
|
import com.android.settings.biometrics.fingerprint2.shared.model.EnrollReason
|
||||||
import com.android.settings.biometrics.fingerprint2.shared.model.FingerEnrollStateViewModel
|
import com.android.settings.biometrics.fingerprint2.shared.model.FingerEnrollStateViewModel
|
||||||
import com.android.settings.biometrics.fingerprint2.shared.model.SensorType
|
|
||||||
import com.android.systemui.biometrics.shared.model.FingerprintSensorType
|
import com.android.systemui.biometrics.shared.model.FingerprintSensorType
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
import kotlinx.coroutines.flow.MutableStateFlow
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
@@ -45,13 +44,13 @@ class FingerprintEnrollFindSensorViewModel(
|
|||||||
orientationStateViewModel: OrientationStateViewModel
|
orientationStateViewModel: OrientationStateViewModel
|
||||||
) : ViewModel() {
|
) : ViewModel() {
|
||||||
/** Represents the stream of sensor type. */
|
/** Represents the stream of sensor type. */
|
||||||
val sensorType: Flow<SensorType> =
|
val sensorType: Flow<FingerprintSensorType> =
|
||||||
fingerprintEnrollViewModel.sensorType.filterWhenEducationIsShown()
|
fingerprintEnrollViewModel.sensorType.filterWhenEducationIsShown()
|
||||||
private val _isUdfps: Flow<Boolean> =
|
private val _isUdfps: Flow<Boolean> =
|
||||||
sensorType.map {
|
sensorType.map {
|
||||||
it == SensorType.Optical || it == SensorType.Ultrasonic
|
it == FingerprintSensorType.UDFPS_OPTICAL || it == FingerprintSensorType.UDFPS_ULTRASONIC
|
||||||
}
|
}
|
||||||
private val _isSfps: Flow<Boolean> = sensorType.map { it == SensorType.RFPS }
|
private val _isSfps: Flow<Boolean> = sensorType.map { it == FingerprintSensorType.POWER_BUTTON }
|
||||||
private val _isRearSfps: Flow<Boolean> =
|
private val _isRearSfps: Flow<Boolean> =
|
||||||
combineTransform(_isSfps, _isUdfps) { v1, v2 -> !v1 && !v2 }
|
combineTransform(_isSfps, _isUdfps) { v1, v2 -> !v1 && !v2 }
|
||||||
|
|
||||||
@@ -95,8 +94,8 @@ class FingerprintEnrollFindSensorViewModel(
|
|||||||
) { sensorType, hasValidGatekeeperInfo, gatekeeperInfo, navigationViewModel ->
|
) { sensorType, hasValidGatekeeperInfo, gatekeeperInfo, navigationViewModel ->
|
||||||
val shouldStartEnroll =
|
val shouldStartEnroll =
|
||||||
navigationViewModel.currStep == Education &&
|
navigationViewModel.currStep == Education &&
|
||||||
sensorType != SensorType.Optical &&
|
sensorType != FingerprintSensorType.UDFPS_OPTICAL &&
|
||||||
sensorType != SensorType.Ultrasonic &&
|
sensorType != FingerprintSensorType.UDFPS_ULTRASONIC &&
|
||||||
hasValidGatekeeperInfo
|
hasValidGatekeeperInfo
|
||||||
if (shouldStartEnroll) (gatekeeperInfo as GatekeeperInfo.GatekeeperPasswordInfo).token
|
if (shouldStartEnroll) (gatekeeperInfo as GatekeeperInfo.GatekeeperPasswordInfo).token
|
||||||
else null
|
else null
|
||||||
|
@@ -20,7 +20,6 @@ import androidx.lifecycle.ViewModelProvider
|
|||||||
import com.android.settings.biometrics.fingerprint2.shared.domain.interactor.FingerprintManagerInteractor
|
import com.android.settings.biometrics.fingerprint2.shared.domain.interactor.FingerprintManagerInteractor
|
||||||
import com.android.settings.biometrics.fingerprint2.shared.model.EnrollReason
|
import com.android.settings.biometrics.fingerprint2.shared.model.EnrollReason
|
||||||
import com.android.settings.biometrics.fingerprint2.shared.model.FingerEnrollStateViewModel
|
import com.android.settings.biometrics.fingerprint2.shared.model.FingerEnrollStateViewModel
|
||||||
import com.android.settings.biometrics.fingerprint2.shared.model.SensorType
|
|
||||||
import com.android.systemui.biometrics.shared.model.FingerprintSensorType
|
import com.android.systemui.biometrics.shared.model.FingerprintSensorType
|
||||||
import kotlinx.coroutines.CoroutineDispatcher
|
import kotlinx.coroutines.CoroutineDispatcher
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
@@ -46,7 +45,7 @@ class FingerprintEnrollViewModel(
|
|||||||
private var _consumerShouldEnroll: MutableStateFlow<Boolean> = MutableStateFlow(false)
|
private var _consumerShouldEnroll: MutableStateFlow<Boolean> = MutableStateFlow(false)
|
||||||
|
|
||||||
/** Represents the stream of [FingerprintSensorType] */
|
/** Represents the stream of [FingerprintSensorType] */
|
||||||
val sensorType: Flow<SensorType> =
|
val sensorType: Flow<FingerprintSensorType> =
|
||||||
fingerprintManagerInteractor.sensorPropertiesInternal.filterNotNull().map { it.sensorType }
|
fingerprintManagerInteractor.sensorPropertiesInternal.filterNotNull().map { it.sensorType }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -24,7 +24,7 @@ import androidx.lifecycle.viewModelScope
|
|||||||
import com.android.settings.biometrics.fingerprint2.shared.domain.interactor.FingerprintManagerInteractor
|
import com.android.settings.biometrics.fingerprint2.shared.domain.interactor.FingerprintManagerInteractor
|
||||||
import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintAuthAttemptViewModel
|
import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintAuthAttemptViewModel
|
||||||
import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintViewModel
|
import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintViewModel
|
||||||
import com.android.settings.biometrics.fingerprint2.shared.model.SensorType
|
import com.android.systemui.biometrics.shared.model.FingerprintSensorType
|
||||||
import kotlinx.coroutines.CoroutineDispatcher
|
import kotlinx.coroutines.CoroutineDispatcher
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
import kotlinx.coroutines.flow.MutableSharedFlow
|
import kotlinx.coroutines.flow.MutableSharedFlow
|
||||||
@@ -89,7 +89,7 @@ class FingerprintSettingsViewModel(
|
|||||||
|
|
||||||
private val _consumerShouldAuthenticate: MutableStateFlow<Boolean> = MutableStateFlow(false)
|
private val _consumerShouldAuthenticate: MutableStateFlow<Boolean> = MutableStateFlow(false)
|
||||||
|
|
||||||
private val _fingerprintSensorType: Flow<SensorType> =
|
private val _fingerprintSensorType: Flow<FingerprintSensorType> =
|
||||||
fingerprintManagerInteractor.sensorPropertiesInternal.filterNotNull().map { it.sensorType }
|
fingerprintManagerInteractor.sensorPropertiesInternal.filterNotNull().map { it.sensorType }
|
||||||
|
|
||||||
private val _sensorNullOrEmpty: Flow<Boolean> =
|
private val _sensorNullOrEmpty: Flow<Boolean> =
|
||||||
@@ -146,7 +146,10 @@ class FingerprintSettingsViewModel(
|
|||||||
if (sensorNullOrEmpty) {
|
if (sensorNullOrEmpty) {
|
||||||
return@combine false
|
return@combine false
|
||||||
}
|
}
|
||||||
if (listOf(SensorType.Ultrasonic, SensorType.Optical).contains(sensorType)) {
|
if (
|
||||||
|
listOf(FingerprintSensorType.UDFPS_ULTRASONIC, FingerprintSensorType.UDFPS_OPTICAL)
|
||||||
|
.contains(sensorType)
|
||||||
|
) {
|
||||||
return@combine false
|
return@combine false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -4,6 +4,7 @@ android_library {
|
|||||||
"src/**/*.kt"
|
"src/**/*.kt"
|
||||||
],
|
],
|
||||||
libs: [
|
libs: [
|
||||||
|
"BiometricsSharedLib",
|
||||||
"FingerprintManagerInteractor",
|
"FingerprintManagerInteractor",
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
@@ -17,13 +17,13 @@
|
|||||||
package com.android.settings.testutils2
|
package com.android.settings.testutils2
|
||||||
|
|
||||||
import com.android.settings.biometrics.fingerprint2.shared.domain.interactor.FingerprintManagerInteractor
|
import com.android.settings.biometrics.fingerprint2.shared.domain.interactor.FingerprintManagerInteractor
|
||||||
import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintAuthAttemptViewModel
|
|
||||||
import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintSensorPropertyViewModel
|
|
||||||
import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintViewModel
|
|
||||||
import com.android.settings.biometrics.fingerprint2.shared.model.EnrollReason
|
import com.android.settings.biometrics.fingerprint2.shared.model.EnrollReason
|
||||||
import com.android.settings.biometrics.fingerprint2.shared.model.FingerEnrollStateViewModel
|
import com.android.settings.biometrics.fingerprint2.shared.model.FingerEnrollStateViewModel
|
||||||
import com.android.settings.biometrics.fingerprint2.shared.model.SensorStrength
|
import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintAuthAttemptViewModel
|
||||||
import com.android.settings.biometrics.fingerprint2.shared.model.SensorType
|
import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintViewModel
|
||||||
|
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.Flow
|
||||||
import kotlinx.coroutines.flow.flow
|
import kotlinx.coroutines.flow.flow
|
||||||
import kotlinx.coroutines.flow.flowOf
|
import kotlinx.coroutines.flow.flowOf
|
||||||
@@ -39,7 +39,12 @@ class FakeFingerprintManagerInteractor : FingerprintManagerInteractor {
|
|||||||
var pressToAuthEnabled = true
|
var pressToAuthEnabled = true
|
||||||
|
|
||||||
var sensorProp =
|
var sensorProp =
|
||||||
FingerprintSensorPropertyViewModel(0 /* sensorId */, SensorStrength.Strong, 5, SensorType.SFPS)
|
FingerprintSensor(
|
||||||
|
0 /* sensorId */,
|
||||||
|
SensorStrength.STRONG,
|
||||||
|
5,
|
||||||
|
FingerprintSensorType.POWER_BUTTON
|
||||||
|
)
|
||||||
|
|
||||||
override suspend fun authenticate(): FingerprintAuthAttemptViewModel {
|
override suspend fun authenticate(): FingerprintAuthAttemptViewModel {
|
||||||
return authenticateAttempt
|
return authenticateAttempt
|
||||||
@@ -57,7 +62,7 @@ class FakeFingerprintManagerInteractor : FingerprintManagerInteractor {
|
|||||||
emit(enrolledFingerprintsInternal.size < enrollableFingerprints)
|
emit(enrolledFingerprintsInternal.size < enrollableFingerprints)
|
||||||
}
|
}
|
||||||
|
|
||||||
override val sensorPropertiesInternal: Flow<FingerprintSensorPropertyViewModel?> = flow {
|
override val sensorPropertiesInternal: Flow<FingerprintSensor?> = flow {
|
||||||
emit(sensorProp)
|
emit(sensorProp)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -79,7 +84,7 @@ class FakeFingerprintManagerInteractor : FingerprintManagerInteractor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun hasSideFps(): Boolean {
|
override suspend fun hasSideFps(): Boolean {
|
||||||
return sensorProp.sensorType == SensorType.SFPS
|
return sensorProp.sensorType == FingerprintSensorType.POWER_BUTTON
|
||||||
}
|
}
|
||||||
|
|
||||||
override suspend fun pressToAuthEnabled(): Boolean {
|
override suspend fun pressToAuthEnabled(): Boolean {
|
||||||
|
@@ -18,14 +18,14 @@ package com.android.settings.fingerprint2.ui.settings
|
|||||||
|
|
||||||
import androidx.arch.core.executor.testing.InstantTaskExecutorRule
|
import androidx.arch.core.executor.testing.InstantTaskExecutorRule
|
||||||
import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintAuthAttemptViewModel
|
import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintAuthAttemptViewModel
|
||||||
import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintSensorPropertyViewModel
|
|
||||||
import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintViewModel
|
import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintViewModel
|
||||||
import com.android.settings.biometrics.fingerprint2.shared.model.SensorStrength
|
|
||||||
import com.android.settings.biometrics.fingerprint2.shared.model.SensorType
|
|
||||||
import com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel.FingerprintSettingsNavigationViewModel
|
import com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel.FingerprintSettingsNavigationViewModel
|
||||||
import com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel.FingerprintSettingsViewModel
|
import com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel.FingerprintSettingsViewModel
|
||||||
import com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel.PreferenceViewModel
|
import com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel.PreferenceViewModel
|
||||||
import com.android.settings.testutils2.FakeFingerprintManagerInteractor
|
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 com.google.common.truth.Truth.assertThat
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.flow.collectLatest
|
import kotlinx.coroutines.flow.collectLatest
|
||||||
@@ -96,11 +96,11 @@ class FingerprintSettingsViewModelTest {
|
|||||||
fun authenticate_DoesNotRun_ifOptical() =
|
fun authenticate_DoesNotRun_ifOptical() =
|
||||||
testScope.runTest {
|
testScope.runTest {
|
||||||
fakeFingerprintManagerInteractor.sensorProp =
|
fakeFingerprintManagerInteractor.sensorProp =
|
||||||
FingerprintSensorPropertyViewModel(
|
FingerprintSensor(
|
||||||
0 /* sensorId */,
|
0 /* sensorId */,
|
||||||
SensorStrength.Strong,
|
SensorStrength.STRONG,
|
||||||
5 /* maxEnrollmentsPerUser */,
|
5 /* maxEnrollmentsPerUser */,
|
||||||
SensorType.Optical,
|
FingerprintSensorType.UDFPS_OPTICAL,
|
||||||
)
|
)
|
||||||
fakeFingerprintManagerInteractor.enrolledFingerprintsInternal =
|
fakeFingerprintManagerInteractor.enrolledFingerprintsInternal =
|
||||||
mutableListOf(FingerprintViewModel("a", 1, 3L))
|
mutableListOf(FingerprintViewModel("a", 1, 3L))
|
||||||
@@ -132,11 +132,11 @@ class FingerprintSettingsViewModelTest {
|
|||||||
fun authenticate_DoesNotRun_ifUltrasonic() =
|
fun authenticate_DoesNotRun_ifUltrasonic() =
|
||||||
testScope.runTest {
|
testScope.runTest {
|
||||||
fakeFingerprintManagerInteractor.sensorProp =
|
fakeFingerprintManagerInteractor.sensorProp =
|
||||||
FingerprintSensorPropertyViewModel(
|
FingerprintSensor(
|
||||||
0 /* sensorId */,
|
0 /* sensorId */,
|
||||||
SensorStrength.Strong,
|
SensorStrength.STRONG,
|
||||||
5 /* maxEnrollmentsPerUser */,
|
5 /* maxEnrollmentsPerUser */,
|
||||||
SensorType.Ultrasonic,
|
FingerprintSensorType.UDFPS_ULTRASONIC,
|
||||||
)
|
)
|
||||||
fakeFingerprintManagerInteractor.enrolledFingerprintsInternal =
|
fakeFingerprintManagerInteractor.enrolledFingerprintsInternal =
|
||||||
mutableListOf(FingerprintViewModel("a", 1, 3L))
|
mutableListOf(FingerprintViewModel("a", 1, 3L))
|
||||||
@@ -166,11 +166,11 @@ class FingerprintSettingsViewModelTest {
|
|||||||
fun authenticate_DoesRun_ifNotUdfps() =
|
fun authenticate_DoesRun_ifNotUdfps() =
|
||||||
testScope.runTest {
|
testScope.runTest {
|
||||||
fakeFingerprintManagerInteractor.sensorProp =
|
fakeFingerprintManagerInteractor.sensorProp =
|
||||||
FingerprintSensorPropertyViewModel(
|
FingerprintSensor(
|
||||||
0 /* sensorId */,
|
0 /* sensorId */,
|
||||||
SensorStrength.Strong,
|
SensorStrength.STRONG,
|
||||||
5 /* maxEnrollmentsPerUser */,
|
5 /* maxEnrollmentsPerUser */,
|
||||||
SensorType.SFPS
|
FingerprintSensorType.POWER_BUTTON
|
||||||
)
|
)
|
||||||
fakeFingerprintManagerInteractor.enrolledFingerprintsInternal =
|
fakeFingerprintManagerInteractor.enrolledFingerprintsInternal =
|
||||||
mutableListOf(FingerprintViewModel("a", 1, 3L))
|
mutableListOf(FingerprintViewModel("a", 1, 3L))
|
||||||
@@ -372,11 +372,11 @@ class FingerprintSettingsViewModelTest {
|
|||||||
|
|
||||||
private fun setupAuth(): MutableList<FingerprintViewModel> {
|
private fun setupAuth(): MutableList<FingerprintViewModel> {
|
||||||
fakeFingerprintManagerInteractor.sensorProp =
|
fakeFingerprintManagerInteractor.sensorProp =
|
||||||
FingerprintSensorPropertyViewModel(
|
FingerprintSensor(
|
||||||
0 /* sensorId */,
|
0 /* sensorId */,
|
||||||
SensorStrength.Strong,
|
SensorStrength.STRONG,
|
||||||
5 /* maxEnrollmentsPerUser */,
|
5 /* maxEnrollmentsPerUser */,
|
||||||
SensorType.SFPS
|
FingerprintSensorType.POWER_BUTTON
|
||||||
)
|
)
|
||||||
val fingerprints =
|
val fingerprints =
|
||||||
mutableListOf(FingerprintViewModel("a", 1, 3L), FingerprintViewModel("b", 2, 5L))
|
mutableListOf(FingerprintViewModel("a", 1, 3L), FingerprintViewModel("b", 2, 5L))
|
||||||
|
Reference in New Issue
Block a user