summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Austin Delgado <austindelgado@google.com> 2024-08-28 19:48:04 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-08-28 19:48:04 +0000
commit30ea5285c3170792242e83d6efc389d7404ca8fa (patch)
treed3f9959012f875d5b90378aa00e7d5231bab9aff
parent160d3e44d7f7b5ef67f5443456504330d64b95fb (diff)
parent065eef0aac1382b0e2084c5bb31230b986b8886a (diff)
Merge "Update iconView in biometric prompt to act as a button" into main
-rw-r--r--packages/SystemUI/aconfig/biometrics_framework.aconfig9
-rw-r--r--packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/BiometricViewBinder.kt37
2 files changed, 36 insertions, 10 deletions
diff --git a/packages/SystemUI/aconfig/biometrics_framework.aconfig b/packages/SystemUI/aconfig/biometrics_framework.aconfig
index 95e4b593a72f..10d7352da7dc 100644
--- a/packages/SystemUI/aconfig/biometrics_framework.aconfig
+++ b/packages/SystemUI/aconfig/biometrics_framework.aconfig
@@ -3,3 +3,12 @@ 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
+ }
+}
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 cd9b9bc71f32..0b440ad81fb5 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
@@ -45,6 +45,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.systemui.biometrics.Utils.ellipsize
import com.android.systemui.biometrics.shared.model.BiometricModalities
import com.android.systemui.biometrics.shared.model.BiometricModality
@@ -54,6 +55,7 @@ import com.android.systemui.biometrics.ui.viewmodel.FingerprintStartMode
import com.android.systemui.biometrics.ui.viewmodel.PromptMessage
import com.android.systemui.biometrics.ui.viewmodel.PromptSize
import com.android.systemui.biometrics.ui.viewmodel.PromptViewModel
+import com.android.systemui.common.ui.view.onTouchListener
import com.android.systemui.lifecycle.repeatWhenAttached
import com.android.systemui.res.R
import com.android.systemui.statusbar.VibratorHelper
@@ -330,17 +332,31 @@ object BiometricViewBinder {
// reuse the icon as a confirm button
launch {
- viewModel.isIconConfirmButton
- .map { isPending ->
- when {
- isPending && modalities.hasFaceAndFingerprint ->
- View.OnTouchListener { _: View, event: MotionEvent ->
- viewModel.onOverlayTouch(event)
- }
- else -> null
+ 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)
}
}
- .collect { onTouch -> iconView.setOnTouchListener(onTouch) }
+ } else {
+ viewModel.isIconConfirmButton
+ .map { isPending ->
+ when {
+ isPending && modalities.hasFaceAndFingerprint ->
+ View.OnTouchListener { _: View, event: MotionEvent ->
+ viewModel.onOverlayTouch(event)
+ }
+ else -> null
+ }
+ }
+ .collect { onTouch -> iconView.setOnTouchListener(onTouch) }
+ }
}
// dismiss prompt when authenticated and confirmed
@@ -358,7 +374,8 @@ object BiometricViewBinder {
// Allow icon to be used as confirmation button with udfps and a11y
// enabled
if (
- accessibilityManager.isTouchExplorationEnabled &&
+ !bpIconA11y() &&
+ accessibilityManager.isTouchExplorationEnabled &&
modalities.hasUdfps
) {
iconView.setOnClickListener { viewModel.confirmAuthenticated() }