Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 30ea5285 authored by Austin Delgado's avatar Austin Delgado Committed by Android (Google) Code Review
Browse files

Merge "Update iconView in biometric prompt to act as a button" into main

parents 160d3e44 065eef0a
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -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
  }
}
+27 −10
Original line number Diff line number Diff line
@@ -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,6 +332,19 @@ 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)
                            }
                        }
                    } else {
                        viewModel.isIconConfirmButton
                            .map { isPending ->
                                when {
@@ -342,6 +357,7 @@ object BiometricViewBinder {
                            }
                            .collect { onTouch -> iconView.setOnTouchListener(onTouch) }
                    }
                }

                // dismiss prompt when authenticated and confirmed
                launch {
@@ -358,6 +374,7 @@ object BiometricViewBinder {
                            // Allow icon to be used as confirmation button with udfps and a11y
                            // enabled
                            if (
                                !bpIconA11y() &&
                                    accessibilityManager.isTouchExplorationEnabled &&
                                    modalities.hasUdfps
                            ) {