Merge "Modifying FingerprintSettingsV2 structure" into main

This commit is contained in:
Joshua Mccloskey
2023-08-17 22:01:58 +00:00
committed by Android (Google) Code Review
30 changed files with 164 additions and 111 deletions

View File

@@ -2567,7 +2567,8 @@
</intent-filter> </intent-filter>
</activity> </activity>
<activity android:name=".biometrics.fingerprint2.enrollment.ui.activity.FingerprintEnrollmentV2Activity"
<activity android:name=".biometrics.fingerprint2.ui.enrollment.activity.FingerprintEnrollmentV2Activity"
android:exported="true" android:exported="true"
android:permission="android.permission.MANAGE_FINGERPRINT" android:permission="android.permission.MANAGE_FINGERPRINT"
android:theme="@style/GlifTheme.Light"> android:theme="@style/GlifTheme.Light">
@@ -4942,7 +4943,7 @@
<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DEFAULT" />
</intent-filter> </intent-filter>
<meta-data android:name="com.android.settings.FRAGMENT_CLASS" <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
android:value="com.android.settings.biometrics.fingerprint2.ui.fragment.FingerprintSettingsV2Fragment" /> android:value="com.android.settings.biometrics.fingerprint2.ui.settings.fragment.FingerprintSettingsV2Fragment" />
<meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY" <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY"
android:value="@string/menu_key_security"/> android:value="@string/menu_key_security"/>
</activity> </activity>

View File

@@ -0,0 +1,10 @@
### Fingerprint Settings Enrollment
#### Flows
* FingerprintSettings (ui.settings.fragment.FingerprintSettingsV2Fragment)
* FingerprintEnrollment (ui.enrollment.activity.FingerprintEnrollmentV2Activity)
#### Style
* Please use [kfmt](https://plugins.jetbrains.com/plugin/14912-ktfmt)

View File

@@ -25,8 +25,8 @@ import android.hardware.fingerprint.FingerprintSensorPropertiesInternal
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.ui.viewmodel.FingerprintAuthAttemptViewModel import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintAuthAttemptViewModel
import com.android.settings.biometrics.fingerprint2.ui.viewmodel.FingerprintViewModel import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintViewModel
import com.android.settings.password.ChooseLockSettingsHelper import com.android.settings.password.ChooseLockSettingsHelper
import kotlin.coroutines.resume import kotlin.coroutines.resume
import kotlin.coroutines.suspendCoroutine import kotlin.coroutines.suspendCoroutine

View File

@@ -14,7 +14,9 @@
* limitations under the License. * limitations under the License.
*/ */
package com.android.settings.biometrics.fingerprint2.ui.viewmodel package com.android.settings.biometrics.fingerprint2.shared.model
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal
/** Represents the fingerprint data nad the relevant state. */ /** Represents the fingerprint data nad the relevant state. */
data class FingerprintStateViewModel( data class FingerprintStateViewModel(
@@ -23,6 +25,7 @@ data class FingerprintStateViewModel(
val maxFingerprints: Int, val maxFingerprints: Int,
val hasSideFps: Boolean, val hasSideFps: Boolean,
val pressToAuth: Boolean, val pressToAuth: Boolean,
val sensorProps: FingerprintSensorPropertiesInternal,
) )
data class FingerprintViewModel( data class FingerprintViewModel(

View File

@@ -0,0 +1,23 @@
### Fingerprint Settings Enrollment
#### Entry Points (To FingerprintEnrollment)
* FingerprintSettings (which launches the below intent)
* Intent -> ".biometrics.fingerprint2.ui.enrollment.activity.FingerprintEnrollmentV2Activity")
#### General Architecture
The code should follow the MVVM architecture.
**In addition, one activity (FingerprintEnrollmentV2Activity) should**
* Control a list of fragments which correspond to enrollment steps
* Be responsible for navigation events between fragments
* Be responsible for navigation events to other activities if need be (
ConfirmDeviceCredentialActivity)
* Be the controller of the viewmodels
#### Style
* Please use [kfmt](https://plugins.jetbrains.com/plugin/14912-ktfmt)

View File

@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.android.settings.biometrics.fingerprint2.enrollment.ui.activity package com.android.settings.biometrics.fingerprint2.ui.enrollment.activity
import android.annotation.ColorInt import android.annotation.ColorInt
import android.app.Activity import android.app.Activity
@@ -40,21 +40,21 @@ import com.android.settings.biometrics.BiometricEnrollBase.CONFIRM_REQUEST
import com.android.settings.biometrics.BiometricEnrollBase.RESULT_FINISHED import com.android.settings.biometrics.BiometricEnrollBase.RESULT_FINISHED
import com.android.settings.biometrics.GatekeeperPasswordProvider import com.android.settings.biometrics.GatekeeperPasswordProvider
import com.android.settings.biometrics.fingerprint2.domain.interactor.FingerprintManagerInteractorImpl import com.android.settings.biometrics.fingerprint2.domain.interactor.FingerprintManagerInteractorImpl
import com.android.settings.biometrics.fingerprint2.enrollment.ui.fragment.FingerprintEnrollConfirmationV2Fragment import com.android.settings.biometrics.fingerprint2.ui.enrollment.fragment.FingerprintEnrollConfirmationV2Fragment
import com.android.settings.biometrics.fingerprint2.enrollment.ui.fragment.FingerprintEnrollEnrollingV2Fragment import com.android.settings.biometrics.fingerprint2.ui.enrollment.fragment.FingerprintEnrollEnrollingV2Fragment
import com.android.settings.biometrics.fingerprint2.enrollment.ui.fragment.FingerprintEnrollFindSensorV2Fragment import com.android.settings.biometrics.fingerprint2.ui.enrollment.fragment.FingerprintEnrollFindSensorV2Fragment
import com.android.settings.biometrics.fingerprint2.enrollment.ui.fragment.FingerprintEnrollmentIntroV2Fragment import com.android.settings.biometrics.fingerprint2.ui.enrollment.fragment.FingerprintEnrollmentIntroV2Fragment
import com.android.settings.biometrics.fingerprint2.enrollment.ui.viewmodel.Confirmation import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.Confirmation
import com.android.settings.biometrics.fingerprint2.enrollment.ui.viewmodel.Education import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.Education
import com.android.settings.biometrics.fingerprint2.enrollment.ui.viewmodel.Enrollment import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.Enrollment
import com.android.settings.biometrics.fingerprint2.enrollment.ui.viewmodel.FingerprintEnrollmentNavigationViewModel import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollmentNavigationViewModel
import com.android.settings.biometrics.fingerprint2.enrollment.ui.viewmodel.FingerprintGatekeeperViewModel import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintGatekeeperViewModel
import com.android.settings.biometrics.fingerprint2.enrollment.ui.viewmodel.FingerprintScrollViewModel import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintScrollViewModel
import com.android.settings.biometrics.fingerprint2.enrollment.ui.viewmodel.FingerprintViewModel import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintViewModel
import com.android.settings.biometrics.fingerprint2.enrollment.ui.viewmodel.Finish import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.Finish
import com.android.settings.biometrics.fingerprint2.enrollment.ui.viewmodel.GatekeeperInfo import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.GatekeeperInfo
import com.android.settings.biometrics.fingerprint2.enrollment.ui.viewmodel.Intro import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.Intro
import com.android.settings.biometrics.fingerprint2.enrollment.ui.viewmodel.LaunchConfirmDeviceCredential import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.LaunchConfirmDeviceCredential
import com.android.settings.password.ChooseLockGeneric import com.android.settings.password.ChooseLockGeneric
import com.android.settings.password.ChooseLockSettingsHelper import com.android.settings.password.ChooseLockSettingsHelper
import com.android.settings.password.ChooseLockSettingsHelper.EXTRA_KEY_GK_PW_HANDLE import com.android.settings.password.ChooseLockSettingsHelper.EXTRA_KEY_GK_PW_HANDLE

View File

@@ -14,12 +14,12 @@
* limitations under the License. * limitations under the License.
*/ */
package com.android.settings.biometrics.fingerprint2.enrollment.ui.fragment package com.android.settings.biometrics.fingerprint2.ui.enrollment.fragment
import android.os.Bundle import android.os.Bundle
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import com.android.settings.biometrics.fingerprint2.enrollment.ui.viewmodel.FingerprintEnrollmentNavigationViewModel import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollmentNavigationViewModel
/** /**
* A fragment to indicate that fingerprint enrollment has been completed. * A fragment to indicate that fingerprint enrollment has been completed.

View File

@@ -14,12 +14,12 @@
* limitations under the License. * limitations under the License.
*/ */
package com.android.settings.biometrics.fingerprint2.enrollment.ui.fragment package com.android.settings.biometrics.fingerprint2.ui.enrollment.fragment
import android.os.Bundle import android.os.Bundle
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import com.android.settings.biometrics.fingerprint2.enrollment.ui.viewmodel.FingerprintEnrollmentNavigationViewModel import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollmentNavigationViewModel
/** A fragment that is responsible for enrolling a users fingerprint. */ /** A fragment that is responsible for enrolling a users fingerprint. */
class FingerprintEnrollEnrollingV2Fragment : Fragment() { class FingerprintEnrollEnrollingV2Fragment : Fragment() {

View File

@@ -14,13 +14,13 @@
* limitations under the License. * limitations under the License.
*/ */
package com.android.settings.biometrics.fingerprint2.enrollment.ui.fragment package com.android.settings.biometrics.fingerprint2.ui.enrollment.fragment
import android.os.Bundle import android.os.Bundle
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import com.android.settings.R import com.android.settings.R
import com.android.settings.biometrics.fingerprint2.enrollment.ui.viewmodel.FingerprintEnrollmentNavigationViewModel import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollmentNavigationViewModel
/** /**
* A fragment that is used to educate the user about the fingerprint sensor on this device. * A fragment that is used to educate the user about the fingerprint sensor on this device.

View File

@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.android.settings.biometrics.fingerprint2.enrollment.ui.fragment package com.android.settings.biometrics.fingerprint2.ui.enrollment.fragment
import android.annotation.NonNull import android.annotation.NonNull
import android.annotation.StringRes import android.annotation.StringRes
@@ -34,11 +34,11 @@ import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.android.settings.R import com.android.settings.R
import com.android.settings.biometrics.fingerprint2.enrollment.ui.viewmodel.FingerprintEnrollmentNavigationViewModel import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintEnrollmentNavigationViewModel
import com.android.settings.biometrics.fingerprint2.enrollment.ui.viewmodel.FingerprintGatekeeperViewModel import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintGatekeeperViewModel
import com.android.settings.biometrics.fingerprint2.enrollment.ui.viewmodel.FingerprintScrollViewModel import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintScrollViewModel
import com.android.settings.biometrics.fingerprint2.enrollment.ui.viewmodel.FingerprintViewModel import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.FingerprintViewModel
import com.android.settings.biometrics.fingerprint2.enrollment.ui.viewmodel.Unicorn import com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel.Unicorn
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

View File

@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.android.settings.biometrics.fingerprint2.enrollment.ui.viewmodel package com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel
import android.util.Log import android.util.Log
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel

View File

@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.android.settings.biometrics.fingerprint2.enrollment.ui.viewmodel package com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel
import android.os.CountDownTimer import android.os.CountDownTimer
import android.util.Log import android.util.Log

View File

@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.android.settings.biometrics.fingerprint2.enrollment.ui.viewmodel package com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider

View File

@@ -14,13 +14,13 @@
* limitations under the License. * limitations under the License.
*/ */
package com.android.settings.biometrics.fingerprint2.enrollment.ui.viewmodel package com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import com.android.settings.biometrics.fingerprint2.domain.interactor.FingerprintManagerInteractor import com.android.settings.biometrics.fingerprint2.domain.interactor.FingerprintManagerInteractor
import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintStateViewModel
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.asStateFlow
@@ -28,21 +28,6 @@ import kotlinx.coroutines.flow.last
import kotlinx.coroutines.flow.update import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
/** Represents the fingerprint data nad the relevant state. */
data class FingerprintStateViewModel(
val fingerprintViewModels: List<FingerEnrollmentViewModel>,
val canEnroll: Boolean,
val maxFingerprints: Int,
val sensorProps: FingerprintSensorPropertiesInternal,
)
/** Represents a fingerprint enrollment. */
data class FingerEnrollmentViewModel(
val name: String,
val fingerId: Int,
val deviceId: Long,
)
/** Represents all of the fingerprint information needed for fingerprint enrollment. */ /** Represents all of the fingerprint information needed for fingerprint enrollment. */
class FingerprintViewModel(fingerprintManagerInteractor: FingerprintManagerInteractor) : class FingerprintViewModel(fingerprintManagerInteractor: FingerprintManagerInteractor) :
ViewModel() { ViewModel() {
@@ -61,7 +46,11 @@ class FingerprintViewModel(fingerprintManagerInteractor: FingerprintManagerInter
viewModelScope.launch { viewModelScope.launch {
val enrolledFingerprints = val enrolledFingerprints =
fingerprintManagerInteractor.enrolledFingerprints.last().map { fingerprintManagerInteractor.enrolledFingerprints.last().map {
FingerEnrollmentViewModel(it.name, it.fingerId, it.deviceId) com.android.settings.biometrics.fingerprint2.shared.model.FingerprintViewModel(
it.name,
it.fingerId,
it.deviceId
)
} }
val sensorProps = fingerprintManagerInteractor.sensorPropertiesInternal().first() val sensorProps = fingerprintManagerInteractor.sensorPropertiesInternal().first()
val maxFingerprints = 5 val maxFingerprints = 5
@@ -70,6 +59,8 @@ class FingerprintViewModel(fingerprintManagerInteractor: FingerprintManagerInter
enrolledFingerprints, enrolledFingerprints,
enrolledFingerprints.size < maxFingerprints, enrolledFingerprints.size < maxFingerprints,
maxFingerprints, maxFingerprints,
sensorProps.isAnySidefpsType,
false,
sensorProps, sensorProps,
) )
} }

View File

@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.android.settings.biometrics.fingerprint2.enrollment.ui.viewmodel package com.android.settings.biometrics.fingerprint2.ui.enrollment.viewmodel
/** /**
* A class that represents an action that the consumer should transition between lastStep and * A class that represents an action that the consumer should transition between lastStep and

View File

@@ -0,0 +1,17 @@
### Fingerprint Settings Enrollment
#### Entry Point (For Fingerprint Settings)
* [SecuritySettings] (https://cs.android.com/android/platform/superproject/+/master:packages/apps/Settings/src/com/android/settings/security/SecuritySettings.java;l=40?q=SecuritySettings)
#### General Architecture
The code should follow the MVVM architecture.
The FingerprintSettingsV2Fragment is responsible for most of the heavy lifting. It should coordinate
navigation events, maintain the viewmodels, and launch new activities if need be.
#### Style
* Please use [kfmt](https://plugins.jetbrains.com/plugin/14912-ktfmt)

View File

@@ -14,25 +14,25 @@
* limitations under the License. * limitations under the License.
*/ */
package com.android.settings.biometrics.fingerprint2.ui.binder package com.android.settings.biometrics.fingerprint2.ui.settings.binder
import android.hardware.fingerprint.FingerprintManager import android.hardware.fingerprint.FingerprintManager
import android.util.Log import android.util.Log
import androidx.lifecycle.LifecycleCoroutineScope import androidx.lifecycle.LifecycleCoroutineScope
import com.android.settings.biometrics.fingerprint2.ui.binder.FingerprintSettingsViewBinder.FingerprintView import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintAuthAttemptViewModel
import com.android.settings.biometrics.fingerprint2.ui.viewmodel.EnrollAdditionalFingerprint import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintStateViewModel
import com.android.settings.biometrics.fingerprint2.ui.viewmodel.EnrollFirstFingerprint import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintViewModel
import com.android.settings.biometrics.fingerprint2.ui.viewmodel.FingerprintAuthAttemptViewModel import com.android.settings.biometrics.fingerprint2.ui.settings.binder.FingerprintSettingsViewBinder.FingerprintView
import com.android.settings.biometrics.fingerprint2.ui.viewmodel.FingerprintSettingsNavigationViewModel import com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel.EnrollAdditionalFingerprint
import com.android.settings.biometrics.fingerprint2.ui.viewmodel.FingerprintSettingsViewModel import com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel.EnrollFirstFingerprint
import com.android.settings.biometrics.fingerprint2.ui.viewmodel.FingerprintStateViewModel import com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel.FingerprintSettingsNavigationViewModel
import com.android.settings.biometrics.fingerprint2.ui.viewmodel.FingerprintViewModel import com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel.FingerprintSettingsViewModel
import com.android.settings.biometrics.fingerprint2.ui.viewmodel.FinishSettings import com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel.FinishSettings
import com.android.settings.biometrics.fingerprint2.ui.viewmodel.FinishSettingsWithResult import com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel.FinishSettingsWithResult
import com.android.settings.biometrics.fingerprint2.ui.viewmodel.LaunchConfirmDeviceCredential import com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel.LaunchConfirmDeviceCredential
import com.android.settings.biometrics.fingerprint2.ui.viewmodel.LaunchedActivity import com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel.LaunchedActivity
import com.android.settings.biometrics.fingerprint2.ui.viewmodel.PreferenceViewModel import com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel.PreferenceViewModel
import com.android.settings.biometrics.fingerprint2.ui.viewmodel.ShowSettings import com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel.ShowSettings
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job import kotlinx.coroutines.Job
import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.collectLatest

View File

@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.android.settings.biometrics.fingerprint2.ui.fragment package com.android.settings.biometrics.fingerprint2.ui.settings.fragment
import android.app.Dialog import android.app.Dialog
import android.app.admin.DevicePolicyManager import android.app.admin.DevicePolicyManager
@@ -26,7 +26,7 @@ import android.os.Bundle
import android.os.UserManager import android.os.UserManager
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import com.android.settings.R import com.android.settings.R
import com.android.settings.biometrics.fingerprint2.ui.viewmodel.FingerprintViewModel import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintViewModel
import com.android.settings.core.instrumentation.InstrumentedDialogFragment import com.android.settings.core.instrumentation.InstrumentedDialogFragment
import kotlin.coroutines.resume import kotlin.coroutines.resume
import kotlinx.coroutines.suspendCancellableCoroutine import kotlinx.coroutines.suspendCancellableCoroutine

View File

@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.android.settings.biometrics.fingerprint2.ui.fragment package com.android.settings.biometrics.fingerprint2.ui.settings.fragment
import android.content.Context import android.content.Context
import android.util.Log import android.util.Log
@@ -22,7 +22,7 @@ import android.view.View
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.preference.PreferenceViewHolder import androidx.preference.PreferenceViewHolder
import com.android.settings.R import com.android.settings.R
import com.android.settings.biometrics.fingerprint2.ui.viewmodel.FingerprintViewModel import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintViewModel
import com.android.settingslib.widget.TwoTargetPreference import com.android.settingslib.widget.TwoTargetPreference
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch

View File

@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.android.settings.biometrics.fingerprint2.ui.fragment package com.android.settings.biometrics.fingerprint2.ui.settings.fragment
import android.app.Dialog import android.app.Dialog
import android.app.settings.SettingsEnums import android.app.settings.SettingsEnums
@@ -27,7 +27,7 @@ import android.util.Log
import android.widget.ImeAwareEditText import android.widget.ImeAwareEditText
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import com.android.settings.R import com.android.settings.R
import com.android.settings.biometrics.fingerprint2.ui.viewmodel.FingerprintViewModel import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintViewModel
import com.android.settings.core.instrumentation.InstrumentedDialogFragment import com.android.settings.core.instrumentation.InstrumentedDialogFragment
import kotlin.coroutines.resume import kotlin.coroutines.resume
import kotlinx.coroutines.suspendCancellableCoroutine import kotlinx.coroutines.suspendCancellableCoroutine
@@ -106,8 +106,8 @@ class FingerprintSettingsRenameDialog : InstrumentedDialogFragment() {
val dialog = FingerprintSettingsRenameDialog() val dialog = FingerprintSettingsRenameDialog()
val onClick = val onClick =
DialogInterface.OnClickListener { _, _ -> DialogInterface.OnClickListener { _, _ ->
val dialogTextField = dialog.requireDialog() val dialogTextField =
.requireViewById(R.id.fingerprint_rename_field) as ImeAwareEditText dialog.requireDialog().findViewById(R.id.fingerprint_rename_field) as ImeAwareEditText
val newName = dialogTextField.text.toString() val newName = dialogTextField.text.toString()
if (!TextUtils.equals(newName, fp.name)) { if (!TextUtils.equals(newName, fp.name)) {
Log.d(TAG, "rename $fp.name to $newName for $dialog") Log.d(TAG, "rename $fp.name to $newName for $dialog")

View File

@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.android.settings.biometrics.fingerprint2.ui.fragment package com.android.settings.biometrics.fingerprint2.ui.settings.fragment
import android.app.Activity import android.app.Activity
import android.app.admin.DevicePolicyManager import android.app.admin.DevicePolicyManager
@@ -26,7 +26,6 @@ import android.hardware.fingerprint.FingerprintManager
import android.os.Bundle import android.os.Bundle
import android.provider.Settings.Secure import android.provider.Settings.Secure
import android.text.TextUtils import android.text.TextUtils
import android.util.FeatureFlagUtils
import android.util.Log import android.util.Log
import android.view.View import android.view.View
import android.widget.Toast import android.widget.Toast
@@ -47,12 +46,12 @@ import com.android.settings.biometrics.GatekeeperPasswordProvider
import com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling import com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling
import com.android.settings.biometrics.fingerprint.FingerprintEnrollIntroductionInternal import com.android.settings.biometrics.fingerprint.FingerprintEnrollIntroductionInternal
import com.android.settings.biometrics.fingerprint2.domain.interactor.FingerprintManagerInteractorImpl import com.android.settings.biometrics.fingerprint2.domain.interactor.FingerprintManagerInteractorImpl
import com.android.settings.biometrics.fingerprint2.ui.binder.FingerprintSettingsViewBinder import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintAuthAttemptViewModel
import com.android.settings.biometrics.fingerprint2.ui.viewmodel.FingerprintAuthAttemptViewModel import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintStateViewModel
import com.android.settings.biometrics.fingerprint2.ui.viewmodel.FingerprintSettingsNavigationViewModel import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintViewModel
import com.android.settings.biometrics.fingerprint2.ui.viewmodel.FingerprintSettingsViewModel import com.android.settings.biometrics.fingerprint2.ui.settings.binder.FingerprintSettingsViewBinder
import com.android.settings.biometrics.fingerprint2.ui.viewmodel.FingerprintStateViewModel import com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel.FingerprintSettingsNavigationViewModel
import com.android.settings.biometrics.fingerprint2.ui.viewmodel.FingerprintViewModel import com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel.FingerprintSettingsViewModel
import com.android.settings.core.SettingsBaseActivity import com.android.settings.core.SettingsBaseActivity
import com.android.settings.core.instrumentation.InstrumentedDialogFragment import com.android.settings.core.instrumentation.InstrumentedDialogFragment
import com.android.settings.dashboard.DashboardFragment import com.android.settings.dashboard.DashboardFragment
@@ -164,6 +163,7 @@ class FingerprintSettingsV2Fragment :
Log.d(TAG, "onCreate()") Log.d(TAG, "onCreate()")
} }
/*
if ( if (
!FeatureFlagUtils.isEnabled( !FeatureFlagUtils.isEnabled(
context, context,
@@ -175,6 +175,8 @@ class FingerprintSettingsV2Fragment :
return return
} }
*/
val context = requireContext() val context = requireContext()
val userId = context.userId val userId = context.userId

View File

@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.android.settings.biometrics.fingerprint2.ui.viewmodel package com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel
import android.hardware.fingerprint.FingerprintManager import android.hardware.fingerprint.FingerprintManager
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel

View File

@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.android.settings.biometrics.fingerprint2.ui.viewmodel package com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel
import android.hardware.fingerprint.FingerprintManager import android.hardware.fingerprint.FingerprintManager
import android.hardware.fingerprint.FingerprintSensorProperties import android.hardware.fingerprint.FingerprintSensorProperties
@@ -24,6 +24,9 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import com.android.settings.biometrics.fingerprint2.domain.interactor.FingerprintManagerInteractor 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.FingerprintStateViewModel
import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintViewModel
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
@@ -270,7 +273,8 @@ class FingerprintSettingsViewModel(
canEnrollFingerprint, canEnrollFingerprint,
maxFingerprints, maxFingerprints,
hasSideFps, hasSideFps,
pressToAuthEnabled pressToAuthEnabled,
fingerprintManagerInteractor.sensorPropertiesInternal().first(),
) )
} }
} }

View File

@@ -14,7 +14,7 @@
* limitations under the License. * limitations under the License.
*/ */
package com.android.settings.biometrics.fingerprint2.ui.viewmodel package com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel
/** /**
* A class to represent a high level step for FingerprintSettings. This is typically to perform an * A class to represent a high level step for FingerprintSettings. This is typically to perform an

View File

@@ -14,7 +14,9 @@
* limitations under the License. * limitations under the License.
*/ */
package com.android.settings.biometrics.fingerprint2.ui.viewmodel package com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel
import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintViewModel
/** Classed use to represent a Dialogs state. */ /** Classed use to represent a Dialogs state. */
sealed class PreferenceViewModel { sealed class PreferenceViewModel {

View File

@@ -72,7 +72,7 @@ import com.android.settings.biometrics.combination.CombinedBiometricProfileSetti
import com.android.settings.biometrics.combination.CombinedBiometricSettings; import com.android.settings.biometrics.combination.CombinedBiometricSettings;
import com.android.settings.biometrics.face.FaceSettings; import com.android.settings.biometrics.face.FaceSettings;
import com.android.settings.biometrics.fingerprint.FingerprintSettings; import com.android.settings.biometrics.fingerprint.FingerprintSettings;
import com.android.settings.biometrics.fingerprint2.ui.fragment.FingerprintSettingsV2Fragment; import com.android.settings.biometrics.fingerprint2.ui.settings.fragment.FingerprintSettingsV2Fragment;
import com.android.settings.bluetooth.BluetoothBroadcastDialog; import com.android.settings.bluetooth.BluetoothBroadcastDialog;
import com.android.settings.bluetooth.BluetoothDeviceDetailsFragment; import com.android.settings.bluetooth.BluetoothDeviceDetailsFragment;
import com.android.settings.bluetooth.BluetoothFindBroadcastsFragment; import com.android.settings.bluetooth.BluetoothFindBroadcastsFragment;

View File

@@ -20,8 +20,8 @@ import android.hardware.biometrics.SensorProperties
import android.hardware.fingerprint.FingerprintSensorProperties.TYPE_POWER_BUTTON import android.hardware.fingerprint.FingerprintSensorProperties.TYPE_POWER_BUTTON
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal import android.hardware.fingerprint.FingerprintSensorPropertiesInternal
import com.android.settings.biometrics.fingerprint2.domain.interactor.FingerprintManagerInteractor import com.android.settings.biometrics.fingerprint2.domain.interactor.FingerprintManagerInteractor
import com.android.settings.biometrics.fingerprint2.ui.viewmodel.FingerprintAuthAttemptViewModel import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintAuthAttemptViewModel
import com.android.settings.biometrics.fingerprint2.ui.viewmodel.FingerprintViewModel import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintViewModel
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow import kotlinx.coroutines.flow.flow

View File

@@ -29,8 +29,8 @@ import androidx.test.core.app.ApplicationProvider
import com.android.settings.biometrics.GatekeeperPasswordProvider import com.android.settings.biometrics.GatekeeperPasswordProvider
import com.android.settings.biometrics.fingerprint2.domain.interactor.FingerprintManagerInteractor import com.android.settings.biometrics.fingerprint2.domain.interactor.FingerprintManagerInteractor
import com.android.settings.biometrics.fingerprint2.domain.interactor.FingerprintManagerInteractorImpl import com.android.settings.biometrics.fingerprint2.domain.interactor.FingerprintManagerInteractorImpl
import com.android.settings.biometrics.fingerprint2.ui.viewmodel.FingerprintAuthAttemptViewModel import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintAuthAttemptViewModel
import com.android.settings.biometrics.fingerprint2.ui.viewmodel.FingerprintViewModel import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintViewModel
import com.android.settings.password.ChooseLockSettingsHelper import com.android.settings.password.ChooseLockSettingsHelper
import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.cancelAndJoin import kotlinx.coroutines.cancelAndJoin

View File

@@ -14,18 +14,18 @@
* limitations under the License. * limitations under the License.
*/ */
package com.android.settings.fingerprint2.viewmodel package com.android.settings.fingerprint2.settings.viewmodel
import androidx.arch.core.executor.testing.InstantTaskExecutorRule import androidx.arch.core.executor.testing.InstantTaskExecutorRule
import com.android.settings.biometrics.BiometricEnrollBase import com.android.settings.biometrics.BiometricEnrollBase
import com.android.settings.biometrics.fingerprint2.ui.viewmodel.EnrollFirstFingerprint import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintViewModel
import com.android.settings.biometrics.fingerprint2.ui.viewmodel.FingerprintSettingsNavigationViewModel import com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel.EnrollFirstFingerprint
import com.android.settings.biometrics.fingerprint2.ui.viewmodel.FingerprintViewModel import com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel.FingerprintSettingsNavigationViewModel
import com.android.settings.biometrics.fingerprint2.ui.viewmodel.FinishSettings import com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel.FinishSettings
import com.android.settings.biometrics.fingerprint2.ui.viewmodel.FinishSettingsWithResult import com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel.FinishSettingsWithResult
import com.android.settings.biometrics.fingerprint2.ui.viewmodel.LaunchConfirmDeviceCredential import com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel.LaunchConfirmDeviceCredential
import com.android.settings.biometrics.fingerprint2.ui.viewmodel.NextStepViewModel import com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel.NextStepViewModel
import com.android.settings.biometrics.fingerprint2.ui.viewmodel.ShowSettings import com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel.ShowSettings
import com.android.settings.fingerprint2.domain.interactor.FakeFingerprintManagerInteractor import com.android.settings.fingerprint2.domain.interactor.FakeFingerprintManagerInteractor
import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers

View File

@@ -14,17 +14,17 @@
* limitations under the License. * limitations under the License.
*/ */
package com.android.settings.fingerprint2.viewmodel package com.android.settings.fingerprint2.settings.viewmodel
import android.hardware.biometrics.SensorProperties import android.hardware.biometrics.SensorProperties
import android.hardware.fingerprint.FingerprintSensorProperties import android.hardware.fingerprint.FingerprintSensorProperties
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal import android.hardware.fingerprint.FingerprintSensorPropertiesInternal
import androidx.arch.core.executor.testing.InstantTaskExecutorRule import androidx.arch.core.executor.testing.InstantTaskExecutorRule
import com.android.settings.biometrics.fingerprint2.ui.viewmodel.FingerprintAuthAttemptViewModel import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintAuthAttemptViewModel
import com.android.settings.biometrics.fingerprint2.ui.viewmodel.FingerprintSettingsNavigationViewModel import com.android.settings.biometrics.fingerprint2.shared.model.FingerprintViewModel
import com.android.settings.biometrics.fingerprint2.ui.viewmodel.FingerprintSettingsViewModel import com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel.FingerprintSettingsNavigationViewModel
import com.android.settings.biometrics.fingerprint2.ui.viewmodel.FingerprintViewModel import com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel.FingerprintSettingsViewModel
import com.android.settings.biometrics.fingerprint2.ui.viewmodel.PreferenceViewModel import com.android.settings.biometrics.fingerprint2.ui.settings.viewmodel.PreferenceViewModel
import com.android.settings.fingerprint2.domain.interactor.FakeFingerprintManagerInteractor import com.android.settings.fingerprint2.domain.interactor.FakeFingerprintManagerInteractor
import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers