From 065eef0aac1382b0e2084c5bb31230b986b8886a Mon Sep 17 00:00:00 2001 From: Austin Delgado Date: Tue, 13 Aug 2024 15:05:45 -0700 Subject: Update iconView in biometric prompt to act as a button When face succeeds during biometric prompt coex, the icon button should act as a button to support switch and voice access. Test: verified button works with switch access Bug: 359394944 Bug: 359423579 Flag: com.android.systemui.bp_icon_a11y Change-Id: Ifad01107922ac22e78185f17e4aa3203776566f8 --- .../SystemUI/aconfig/biometrics_framework.aconfig | 9 ++++++ .../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() } -- cgit v1.2.3-59-g8ed1b