summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/aconfig/biometrics_framework.aconfig10
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelTest.kt80
-rw-r--r--packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/BiometricViewBinder.kt60
-rw-r--r--packages/SystemUI/src/com/android/systemui/biometrics/ui/viewmodel/PromptIconViewModel.kt66
4 files changed, 94 insertions, 122 deletions
diff --git a/packages/SystemUI/aconfig/biometrics_framework.aconfig b/packages/SystemUI/aconfig/biometrics_framework.aconfig
index e3f5378175d2..9692aa5d1a4c 100644
--- a/packages/SystemUI/aconfig/biometrics_framework.aconfig
+++ b/packages/SystemUI/aconfig/biometrics_framework.aconfig
@@ -4,16 +4,6 @@ container: "system"
# NOTE: Keep alphabetized to help limit merge conflicts from multiple simultaneous editors.
flag {
- name: "bp_icon_a11y"
- namespace: "biometrics_framework"
- description: "Fixes biometric prompt icon not working as button with a11y"
- bug: "359423579"
- metadata {
- purpose: PURPOSE_BUGFIX
- }
-}
-
-flag {
name: "cont_auth_plugin"
namespace: "biometrics_framework"
description: "Plugin and related API hooks for contextual auth plugins"
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelTest.kt
index ab936590de93..66f44babdf5f 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelTest.kt
@@ -158,6 +158,22 @@ internal class PromptViewModelTest(private val testCase: TestCase) : SysuiTestCa
private val mockFingerprintIconWidth = 300
private val mockFingerprintIconHeight = 300
+ private val faceIconAuthingDescription =
+ R.string.biometric_dialog_face_icon_description_authenticating
+ private val faceIconAuthedDescription =
+ R.string.biometric_dialog_face_icon_description_authenticated
+ private val faceIconConfirmedDescription =
+ R.string.biometric_dialog_face_icon_description_confirmed
+ private val faceIconIdleDescription = R.string.biometric_dialog_face_icon_description_idle
+ private val sfpsFindSensorDescription =
+ R.string.security_settings_sfps_enroll_find_sensor_message
+ private val udfpsIconDescription = R.string.accessibility_fingerprint_label
+ private val faceFailedDescription = R.string.keyguard_face_failed
+ private val bpTryAgainDescription = R.string.biometric_dialog_try_again
+ private val bpConfirmDescription = R.string.biometric_dialog_confirm
+ private val fingerprintIconAuthenticatedDescription =
+ R.string.fingerprint_dialog_authenticated_confirmation
+
/** Mock [UdfpsOverlayParams] for a test. */
private fun mockUdfpsOverlayParams(isLandscape: Boolean = false): UdfpsOverlayParams =
UdfpsOverlayParams(
@@ -337,21 +353,18 @@ internal class PromptViewModelTest(private val testCase: TestCase) : SysuiTestCa
if ((testCase.isCoex && !forceExplicitFlow) || testCase.isFaceOnly) {
// Face-only or implicit co-ex auth
assertThat(iconAsset).isEqualTo(R.raw.face_dialog_authenticating)
- assertThat(iconContentDescriptionId)
- .isEqualTo(R.string.biometric_dialog_face_icon_description_authenticating)
+ assertThat(iconContentDescriptionId).isEqualTo(faceIconAuthingDescription)
assertThat(shouldAnimateIconView).isEqualTo(true)
} else if ((testCase.isCoex && forceExplicitFlow) || testCase.isFingerprintOnly) {
// Fingerprint-only or explicit co-ex auth
if (testCase.sensorType == FingerprintSensorProperties.TYPE_POWER_BUTTON) {
assertThat(iconAsset).isEqualTo(getSfpsAsset_fingerprintAuthenticating())
- assertThat(iconContentDescriptionId)
- .isEqualTo(R.string.security_settings_sfps_enroll_find_sensor_message)
+ assertThat(iconContentDescriptionId).isEqualTo(sfpsFindSensorDescription)
assertThat(shouldAnimateIconView).isEqualTo(true)
} else {
assertThat(iconAsset)
.isEqualTo(R.raw.fingerprint_dialogue_fingerprint_to_error_lottie)
- assertThat(iconContentDescriptionId)
- .isEqualTo(R.string.fingerprint_dialog_touch_sensor)
+ assertThat(iconContentDescriptionId).isEqualTo(udfpsIconDescription)
assertThat(shouldAnimateIconView).isEqualTo(false)
}
}
@@ -397,26 +410,25 @@ internal class PromptViewModelTest(private val testCase: TestCase) : SysuiTestCa
if (testCase.isFaceOnly) {
// Face-only auth
assertThat(iconAsset).isEqualTo(R.raw.face_dialog_dark_to_error)
- assertThat(iconContentDescriptionId).isEqualTo(R.string.keyguard_face_failed)
+ assertThat(iconContentDescriptionId).isEqualTo(faceFailedDescription)
assertThat(shouldAnimateIconView).isEqualTo(true)
// Clear error, go to idle
errorJob.join()
assertThat(iconAsset).isEqualTo(R.raw.face_dialog_error_to_idle)
- assertThat(iconContentDescriptionId)
- .isEqualTo(R.string.biometric_dialog_face_icon_description_idle)
+ assertThat(iconContentDescriptionId).isEqualTo(faceIconIdleDescription)
assertThat(shouldAnimateIconView).isEqualTo(true)
} else if ((testCase.isCoex && forceExplicitFlow) || testCase.isFingerprintOnly) {
// Fingerprint-only or explicit co-ex auth
if (testCase.sensorType == FingerprintSensorProperties.TYPE_POWER_BUTTON) {
assertThat(iconAsset).isEqualTo(getSfpsAsset_fingerprintToError())
- assertThat(iconContentDescriptionId).isEqualTo(R.string.biometric_dialog_try_again)
+ assertThat(iconContentDescriptionId).isEqualTo(bpTryAgainDescription)
assertThat(shouldAnimateIconView).isEqualTo(true)
} else {
assertThat(iconAsset)
.isEqualTo(R.raw.fingerprint_dialogue_fingerprint_to_error_lottie)
- assertThat(iconContentDescriptionId).isEqualTo(R.string.biometric_dialog_try_again)
+ assertThat(iconContentDescriptionId).isEqualTo(bpTryAgainDescription)
assertThat(shouldAnimateIconView).isEqualTo(true)
}
@@ -425,14 +437,12 @@ internal class PromptViewModelTest(private val testCase: TestCase) : SysuiTestCa
if (testCase.sensorType == FingerprintSensorProperties.TYPE_POWER_BUTTON) {
assertThat(iconAsset).isEqualTo(getSfpsAsset_errorToFingerprint())
- assertThat(iconContentDescriptionId)
- .isEqualTo(R.string.security_settings_sfps_enroll_find_sensor_message)
+ assertThat(iconContentDescriptionId).isEqualTo(sfpsFindSensorDescription)
assertThat(shouldAnimateIconView).isEqualTo(true)
} else {
assertThat(iconAsset)
.isEqualTo(R.raw.fingerprint_dialogue_error_to_fingerprint_lottie)
- assertThat(iconContentDescriptionId)
- .isEqualTo(R.string.fingerprint_dialog_touch_sensor)
+ assertThat(iconContentDescriptionId).isEqualTo(udfpsIconDescription)
assertThat(shouldAnimateIconView).isEqualTo(true)
}
}
@@ -472,13 +482,12 @@ internal class PromptViewModelTest(private val testCase: TestCase) : SysuiTestCa
// Covers (1) fingerprint-only (2) co-ex, authenticated by fingerprint
if (testCase.authenticatedByFingerprint) {
assertThat(iconAsset).isEqualTo(R.raw.biometricprompt_sfps_error_to_success)
- assertThat(iconContentDescriptionId)
- .isEqualTo(R.string.security_settings_sfps_enroll_find_sensor_message)
+ assertThat(iconContentDescriptionId).isEqualTo(sfpsFindSensorDescription)
assertThat(shouldAnimateIconView).isEqualTo(true)
} else { // Covers co-ex, authenticated by face
assertThat(iconAsset).isEqualTo(R.raw.biometricprompt_sfps_error_to_unlock)
assertThat(iconContentDescriptionId)
- .isEqualTo(R.string.fingerprint_dialog_authenticated_confirmation)
+ .isEqualTo(fingerprintIconAuthenticatedDescription)
assertThat(shouldAnimateIconView).isEqualTo(true)
// Confirm authentication
@@ -486,8 +495,7 @@ internal class PromptViewModelTest(private val testCase: TestCase) : SysuiTestCa
assertThat(iconAsset)
.isEqualTo(R.raw.biometricprompt_sfps_unlock_to_success)
- assertThat(iconContentDescriptionId)
- .isEqualTo(R.string.fingerprint_dialog_touch_sensor)
+ assertThat(iconContentDescriptionId).isEqualTo(udfpsIconDescription)
assertThat(shouldAnimateIconView).isEqualTo(true)
}
} else { // Non-SFPS (UDFPS / rear-FPS) test cases
@@ -495,14 +503,12 @@ internal class PromptViewModelTest(private val testCase: TestCase) : SysuiTestCa
if (testCase.authenticatedByFingerprint) {
assertThat(iconAsset)
.isEqualTo(R.raw.fingerprint_dialogue_error_to_success_lottie)
- assertThat(iconContentDescriptionId)
- .isEqualTo(R.string.fingerprint_dialog_touch_sensor)
+ assertThat(iconContentDescriptionId).isEqualTo(udfpsIconDescription)
assertThat(shouldAnimateIconView).isEqualTo(true)
} else { // co-ex, authenticated by face
assertThat(iconAsset)
.isEqualTo(R.raw.fingerprint_dialogue_error_to_unlock_lottie)
- assertThat(iconContentDescriptionId)
- .isEqualTo(R.string.biometric_dialog_confirm)
+ assertThat(iconContentDescriptionId).isEqualTo(bpConfirmDescription)
assertThat(shouldAnimateIconView).isEqualTo(true)
// Confirm authentication
@@ -512,8 +518,7 @@ internal class PromptViewModelTest(private val testCase: TestCase) : SysuiTestCa
.isEqualTo(
R.raw.fingerprint_dialogue_unlocked_to_checkmark_success_lottie
)
- assertThat(iconContentDescriptionId)
- .isEqualTo(R.string.fingerprint_dialog_touch_sensor)
+ assertThat(iconContentDescriptionId).isEqualTo(udfpsIconDescription)
assertThat(shouldAnimateIconView).isEqualTo(true)
}
}
@@ -543,22 +548,19 @@ internal class PromptViewModelTest(private val testCase: TestCase) : SysuiTestCa
// Fingerprint icon asset assertions
if (testCase.sensorType == FingerprintSensorProperties.TYPE_POWER_BUTTON) {
assertThat(iconAsset).isEqualTo(getSfpsAsset_fingerprintToSuccess())
- assertThat(iconContentDescriptionId)
- .isEqualTo(R.string.security_settings_sfps_enroll_find_sensor_message)
+ assertThat(iconContentDescriptionId).isEqualTo(sfpsFindSensorDescription)
assertThat(shouldAnimateIconView).isEqualTo(true)
} else {
assertThat(iconAsset)
.isEqualTo(R.raw.fingerprint_dialogue_fingerprint_to_success_lottie)
- assertThat(iconContentDescriptionId)
- .isEqualTo(R.string.fingerprint_dialog_touch_sensor)
+ assertThat(iconContentDescriptionId).isEqualTo(udfpsIconDescription)
assertThat(shouldAnimateIconView).isEqualTo(true)
}
} else if (testCase.isFaceOnly || testCase.isCoex) {
// Face icon asset assertions
// If co-ex, use implicit flow (explicit flow always requires confirmation)
assertThat(iconAsset).isEqualTo(R.raw.face_dialog_dark_to_checkmark)
- assertThat(iconContentDescriptionId)
- .isEqualTo(R.string.biometric_dialog_face_icon_description_authenticated)
+ assertThat(iconContentDescriptionId).isEqualTo(faceIconAuthedDescription)
assertThat(shouldAnimateIconView).isEqualTo(true)
assertThat(message).isEqualTo(PromptMessage.Empty)
}
@@ -586,20 +588,18 @@ internal class PromptViewModelTest(private val testCase: TestCase) : SysuiTestCa
if (testCase.isFaceOnly) {
assertThat(iconAsset).isEqualTo(R.raw.face_dialog_wink_from_dark)
- assertThat(iconContentDescriptionId)
- .isEqualTo(R.string.biometric_dialog_face_icon_description_authenticated)
+ assertThat(iconContentDescriptionId).isEqualTo(faceIconAuthedDescription)
assertThat(shouldAnimateIconView).isEqualTo(true)
} else if (testCase.isCoex) { // explicit flow, confirmation requested
if (testCase.sensorType == FingerprintSensorProperties.TYPE_POWER_BUTTON) {
assertThat(iconAsset).isEqualTo(getSfpsAsset_fingerprintToUnlock())
assertThat(iconContentDescriptionId)
- .isEqualTo(R.string.fingerprint_dialog_authenticated_confirmation)
+ .isEqualTo(fingerprintIconAuthenticatedDescription)
assertThat(shouldAnimateIconView).isEqualTo(true)
} else {
assertThat(iconAsset)
.isEqualTo(R.raw.fingerprint_dialogue_fingerprint_to_unlock_lottie)
- assertThat(iconContentDescriptionId)
- .isEqualTo(R.string.biometric_dialog_confirm)
+ assertThat(iconContentDescriptionId).isEqualTo(bpConfirmDescription)
assertThat(shouldAnimateIconView).isEqualTo(true)
}
}
@@ -628,8 +628,7 @@ internal class PromptViewModelTest(private val testCase: TestCase) : SysuiTestCa
if (testCase.isFaceOnly) {
assertThat(iconAsset).isEqualTo(R.raw.face_dialog_dark_to_checkmark)
- assertThat(iconContentDescriptionId)
- .isEqualTo(R.string.biometric_dialog_face_icon_description_confirmed)
+ assertThat(iconContentDescriptionId).isEqualTo(faceIconConfirmedDescription)
assertThat(shouldAnimateIconView).isEqualTo(true)
}
@@ -644,8 +643,7 @@ internal class PromptViewModelTest(private val testCase: TestCase) : SysuiTestCa
.isEqualTo(
R.raw.fingerprint_dialogue_unlocked_to_checkmark_success_lottie
)
- assertThat(iconContentDescriptionId)
- .isEqualTo(R.string.fingerprint_dialog_touch_sensor)
+ assertThat(iconContentDescriptionId).isEqualTo(udfpsIconDescription)
assertThat(shouldAnimateIconView).isEqualTo(true)
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/BiometricViewBinder.kt b/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/BiometricViewBinder.kt
index db4b0f2522ed..54c52b533da4 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/BiometricViewBinder.kt
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/BiometricViewBinder.kt
@@ -43,7 +43,7 @@ import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import com.airbnb.lottie.LottieAnimationView
import com.airbnb.lottie.LottieCompositionFactory
-import com.android.systemui.Flags.bpIconA11y
+import com.android.app.tracing.coroutines.launchTraced as launch
import com.android.systemui.biometrics.Utils.ellipsize
import com.android.systemui.biometrics.shared.model.BiometricModalities
import com.android.systemui.biometrics.shared.model.BiometricModality
@@ -63,7 +63,6 @@ import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.flow.map
-import com.android.app.tracing.coroutines.launchTraced as launch
private const val TAG = "BiometricViewBinder"
@@ -327,33 +326,32 @@ object BiometricViewBinder {
// reuse the icon as a confirm button
launch {
- if (bpIconA11y()) {
- viewModel.isIconConfirmButton.collect { isButton ->
- if (isButton) {
- iconView.onTouchListener { _: View, event: MotionEvent ->
- viewModel.onOverlayTouch(event)
- }
- iconView.setOnClickListener { viewModel.confirmAuthenticated() }
- } else {
- iconView.setOnTouchListener(null)
- iconView.setOnClickListener(null)
+ viewModel.isIconConfirmButton.collect { isButton ->
+ if (isButton && !accessibilityManager.isEnabled) {
+ iconView.onTouchListener { _: View, event: MotionEvent ->
+ viewModel.onOverlayTouch(event)
}
+ } else {
+ iconView.setOnTouchListener(null)
}
- } else {
- viewModel.isIconConfirmButton
- .map { isPending ->
- when {
- isPending && modalities.hasFaceAndFingerprint ->
- View.OnTouchListener { _: View, event: MotionEvent ->
- viewModel.onOverlayTouch(event)
- }
- else -> null
- }
- }
- .collect { onTouch -> iconView.setOnTouchListener(onTouch) }
}
}
+ launch {
+ combine(viewModel.isIconConfirmButton, viewModel.isAuthenticated, ::Pair)
+ .collect { (isIconConfirmButton, authState) ->
+ // Only use the icon as a button for talkback when coex and pending
+ // confirmation
+ if (
+ accessibilityManager.isEnabled &&
+ isIconConfirmButton &&
+ authState.isAuthenticated
+ ) {
+ iconView.setOnClickListener { viewModel.confirmAuthenticated() }
+ }
+ }
+ }
+
// dismiss prompt when authenticated and confirmed
launch {
viewModel.isAuthenticated.collect { authState ->
@@ -365,22 +363,8 @@ object BiometricViewBinder {
backgroundView.setOnClickListener(null)
backgroundView.importantForAccessibility =
IMPORTANT_FOR_ACCESSIBILITY_NO
-
- // Allow icon to be used as confirmation button with udfps and a11y
- // enabled
- if (
- !bpIconA11y() &&
- accessibilityManager.isTouchExplorationEnabled &&
- modalities.hasUdfps
- ) {
- iconView.setOnClickListener { viewModel.confirmAuthenticated() }
- }
}
if (authState.isAuthenticatedAndConfirmed) {
- view.announceForAccessibility(
- view.resources.getString(R.string.biometric_dialog_authenticated)
- )
-
launch {
delay(authState.delay)
if (authState.isAuthenticatedAndExplicitlyConfirmed) {
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/ui/viewmodel/PromptIconViewModel.kt b/packages/SystemUI/src/com/android/systemui/biometrics/ui/viewmodel/PromptIconViewModel.kt
index 574c40da226f..788c792fdd91 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/ui/viewmodel/PromptIconViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/ui/viewmodel/PromptIconViewModel.kt
@@ -43,7 +43,7 @@ class PromptIconViewModel(
enum class AuthType {
Fingerprint,
Face,
- Coex
+ Coex,
}
/**
@@ -53,7 +53,7 @@ class PromptIconViewModel(
val activeAuthType: Flow<AuthType> =
combine(
promptViewModel.modalities.distinctUntilChanged(),
- promptViewModel.faceMode.distinctUntilChanged()
+ promptViewModel.faceMode.distinctUntilChanged(),
) { modalities, faceMode ->
if (modalities.hasFaceAndFingerprint && !faceMode) {
AuthType.Coex
@@ -102,7 +102,7 @@ class PromptIconViewModel(
promptSelectorInteractor.fingerprintSensorType,
promptViewModel.isAuthenticated,
promptViewModel.isAuthenticating,
- promptViewModel.showingError
+ promptViewModel.showingError,
) {
rotation: DisplayRotation,
isInRearDisplayMode: Boolean,
@@ -117,13 +117,13 @@ class PromptIconViewModel(
isInRearDisplayMode,
authState.isAuthenticated,
isAuthenticating,
- showingError
+ showingError,
)
else ->
getFingerprintIconViewAsset(
authState.isAuthenticated,
isAuthenticating,
- showingError
+ showingError,
)
}
}
@@ -132,7 +132,7 @@ class PromptIconViewModel(
promptViewModel.isAuthenticated.distinctUntilChanged(),
promptViewModel.isAuthenticating.distinctUntilChanged(),
promptViewModel.isPendingConfirmation.distinctUntilChanged(),
- promptViewModel.showingError.distinctUntilChanged()
+ promptViewModel.showingError.distinctUntilChanged(),
) {
authState: PromptAuthState,
isAuthenticating: Boolean,
@@ -142,7 +142,7 @@ class PromptIconViewModel(
authState,
isAuthenticating,
isPendingConfirmation,
- showingError
+ showingError,
)
}
AuthType.Coex ->
@@ -170,14 +170,14 @@ class PromptIconViewModel(
authState,
isAuthenticating,
isPendingConfirmation,
- showingError
+ showingError,
)
else ->
getCoexIconViewAsset(
authState,
isAuthenticating,
isPendingConfirmation,
- showingError
+ showingError,
)
}
}
@@ -187,7 +187,7 @@ class PromptIconViewModel(
private fun getFingerprintIconViewAsset(
isAuthenticated: Boolean,
isAuthenticating: Boolean,
- showingError: Boolean
+ showingError: Boolean,
): Int {
return if (isAuthenticated) {
if (_previousIconWasError.value) {
@@ -214,7 +214,7 @@ class PromptIconViewModel(
isInRearDisplayMode: Boolean,
isAuthenticated: Boolean,
isAuthenticating: Boolean,
- showingError: Boolean
+ showingError: Boolean,
): Int {
return if (isAuthenticated) {
if (_previousIconWasError.value) {
@@ -240,7 +240,7 @@ class PromptIconViewModel(
authState: PromptAuthState,
isAuthenticating: Boolean,
isPendingConfirmation: Boolean,
- showingError: Boolean
+ showingError: Boolean,
): Int {
return if (authState.isAuthenticated && isPendingConfirmation) {
R.raw.face_dialog_wink_from_dark
@@ -262,7 +262,7 @@ class PromptIconViewModel(
authState: PromptAuthState,
isAuthenticating: Boolean,
isPendingConfirmation: Boolean,
- showingError: Boolean
+ showingError: Boolean,
): Int {
return if (authState.isAuthenticatedAndExplicitlyConfirmed) {
R.raw.fingerprint_dialogue_unlocked_to_checkmark_success_lottie
@@ -298,7 +298,7 @@ class PromptIconViewModel(
authState: PromptAuthState,
isAuthenticating: Boolean,
isPendingConfirmation: Boolean,
- showingError: Boolean
+ showingError: Boolean,
): Int {
return if (authState.isAuthenticatedAndExplicitlyConfirmed) {
R.raw.biometricprompt_sfps_unlock_to_success
@@ -338,7 +338,7 @@ class PromptIconViewModel(
promptViewModel.isAuthenticated,
promptViewModel.isAuthenticating,
promptViewModel.isPendingConfirmation,
- promptViewModel.showingError
+ promptViewModel.showingError,
) {
sensorType: FingerprintSensorType,
authState: PromptAuthState,
@@ -350,7 +350,7 @@ class PromptIconViewModel(
authState.isAuthenticated,
isAuthenticating,
isPendingConfirmation,
- showingError
+ showingError,
)
}
AuthType.Face ->
@@ -370,7 +370,7 @@ class PromptIconViewModel(
isAuthenticated: Boolean,
isAuthenticating: Boolean,
isPendingConfirmation: Boolean,
- showingError: Boolean
+ showingError: Boolean,
): Int =
if (isPendingConfirmation) {
when (sensorType) {
@@ -381,7 +381,7 @@ class PromptIconViewModel(
when (sensorType) {
FingerprintSensorType.POWER_BUTTON ->
R.string.security_settings_sfps_enroll_find_sensor_message
- else -> R.string.fingerprint_dialog_touch_sensor
+ else -> R.string.accessibility_fingerprint_label
}
} else if (showingError) {
R.string.biometric_dialog_try_again
@@ -392,7 +392,7 @@ class PromptIconViewModel(
private fun getFaceIconContentDescriptionId(
authState: PromptAuthState,
isAuthenticating: Boolean,
- showingError: Boolean
+ showingError: Boolean,
): Int =
if (authState.isAuthenticatedAndExplicitlyConfirmed) {
R.string.biometric_dialog_face_icon_description_confirmed
@@ -415,7 +415,7 @@ class PromptIconViewModel(
promptSelectorInteractor.fingerprintSensorType,
promptViewModel.isAuthenticated,
promptViewModel.isAuthenticating,
- promptViewModel.showingError
+ promptViewModel.showingError,
) {
sensorType: FingerprintSensorType,
authState: PromptAuthState,
@@ -427,7 +427,7 @@ class PromptIconViewModel(
shouldAnimateFingerprintIconView(
authState.isAuthenticated,
isAuthenticating,
- showingError
+ showingError,
)
}
}
@@ -435,7 +435,7 @@ class PromptIconViewModel(
combine(
promptViewModel.isAuthenticated,
promptViewModel.isAuthenticating,
- promptViewModel.showingError
+ promptViewModel.showingError,
) { authState: PromptAuthState, isAuthenticating: Boolean, showingError: Boolean
->
isAuthenticating ||
@@ -463,7 +463,7 @@ class PromptIconViewModel(
authState.isAuthenticated,
isAuthenticating,
isPendingConfirmation,
- showingError
+ showingError,
)
}
}
@@ -483,14 +483,14 @@ class PromptIconViewModel(
private fun shouldAnimateFingerprintIconView(
isAuthenticated: Boolean,
isAuthenticating: Boolean,
- showingError: Boolean
+ showingError: Boolean,
) = (isAuthenticating && _previousIconWasError.value) || isAuthenticated || showingError
private fun shouldAnimateCoexIconView(
isAuthenticated: Boolean,
isAuthenticating: Boolean,
isPendingConfirmation: Boolean,
- showingError: Boolean
+ showingError: Boolean,
) =
(isAuthenticating && _previousIconWasError.value) ||
isPendingConfirmation ||
@@ -522,7 +522,7 @@ class PromptIconViewModel(
listOf(
R.raw.biometricprompt_sfps_fingerprint_authenticating,
R.raw.biometricprompt_sfps_rear_display_fingerprint_authenticating,
- R.raw.biometricprompt_sfps_rear_display_fingerprint_authenticating
+ R.raw.biometricprompt_sfps_rear_display_fingerprint_authenticating,
)
/** Called on configuration changes */
@@ -579,7 +579,7 @@ class PromptIconViewModel(
R.raw.fingerprint_dialogue_error_to_success_lottie,
R.raw.fingerprint_dialogue_fingerprint_to_success_lottie,
R.raw.fingerprint_dialogue_error_to_fingerprint_lottie,
- R.raw.fingerprint_dialogue_fingerprint_to_error_lottie
+ R.raw.fingerprint_dialogue_fingerprint_to_error_lottie,
)
}
@@ -620,7 +620,7 @@ class PromptIconViewModel(
R.raw.fingerprint_dialogue_error_to_fingerprint_lottie,
R.raw.fingerprint_dialogue_error_to_success_lottie,
R.raw.fingerprint_dialogue_fingerprint_to_error_lottie,
- R.raw.fingerprint_dialogue_fingerprint_to_success_lottie
+ R.raw.fingerprint_dialogue_fingerprint_to_success_lottie,
)
}
@@ -632,7 +632,7 @@ class PromptIconViewModel(
R.raw.face_dialog_dark_to_error,
R.raw.face_dialog_error_to_idle,
R.raw.face_dialog_idle_static,
- R.raw.face_dialog_authenticating
+ R.raw.face_dialog_authenticating,
)
private fun getSfpsAsset_fingerprintAuthenticating(isInRearDisplayMode: Boolean): Int =
@@ -644,7 +644,7 @@ class PromptIconViewModel(
private fun getSfpsAsset_fingerprintToError(
rotation: DisplayRotation,
- isInRearDisplayMode: Boolean
+ isInRearDisplayMode: Boolean,
): Int =
if (isInRearDisplayMode) {
when (rotation) {
@@ -668,7 +668,7 @@ class PromptIconViewModel(
private fun getSfpsAsset_errorToFingerprint(
rotation: DisplayRotation,
- isInRearDisplayMode: Boolean
+ isInRearDisplayMode: Boolean,
): Int =
if (isInRearDisplayMode) {
when (rotation) {
@@ -692,7 +692,7 @@ class PromptIconViewModel(
private fun getSfpsAsset_fingerprintToUnlock(
rotation: DisplayRotation,
- isInRearDisplayMode: Boolean
+ isInRearDisplayMode: Boolean,
): Int =
if (isInRearDisplayMode) {
when (rotation) {
@@ -716,7 +716,7 @@ class PromptIconViewModel(
private fun getSfpsAsset_fingerprintToSuccess(
rotation: DisplayRotation,
- isInRearDisplayMode: Boolean
+ isInRearDisplayMode: Boolean,
): Int =
if (isInRearDisplayMode) {
when (rotation) {