Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ae289cf1 authored by Hao Dong's avatar Hao Dong
Browse files

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
parent 09782711
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -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
              }
+9 −5
Original line number Diff line number Diff line
@@ -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<Int> =
    fingerprintManagerInteractor.sensorPropertiesInternal.transform { it?.sensorType }
  /** Represents the stream of [FingerprintSensorType] */
  val sensorType: Flow<FingerprintSensorType> =
    fingerprintManagerInteractor.sensorPropertiesInternal.filterNotNull().map {
      it.sensorType.toSensorType()
    }

  class FingerprintEnrollViewModelFactory(val interactor: FingerprintManagerInteractor) :
    ViewModelProvider.Factory {
+8 −8
Original line number Diff line number Diff line
@@ -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,8 +90,10 @@ class FingerprintSettingsViewModel(

  private val _consumerShouldAuthenticate: MutableStateFlow<Boolean> = MutableStateFlow(false)

  private val _fingerprintSensorType: Flow<Int> =
    fingerprintManagerInteractor.sensorPropertiesInternal.transform { it?.sensorType }
  private val _fingerprintSensorType: Flow<FingerprintSensorType> =
    fingerprintManagerInteractor.sensorPropertiesInternal.filterNotNull().map {
      it.sensorType.toSensorType()
    }

  private val _sensorNullOrEmpty: Flow<Boolean> =
    fingerprintManagerInteractor.sensorPropertiesInternal.map { it == 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