diff options
| author | 2024-08-28 19:48:04 +0000 | |
|---|---|---|
| committer | 2024-08-28 19:48:04 +0000 | |
| commit | 30ea5285c3170792242e83d6efc389d7404ca8fa (patch) | |
| tree | d3f9959012f875d5b90378aa00e7d5231bab9aff | |
| parent | 160d3e44d7f7b5ef67f5443456504330d64b95fb (diff) | |
| parent | 065eef0aac1382b0e2084c5bb31230b986b8886a (diff) | |
Merge "Update iconView in biometric prompt to act as a button" into main
| -rw-r--r-- | packages/SystemUI/aconfig/biometrics_framework.aconfig | 9 | ||||
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/biometrics/ui/binder/BiometricViewBinder.kt | 37 |
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() } |