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

Commit 87db9ff7 authored by Automerger Merge Worker's avatar Automerger Merge Worker
Browse files

Merge "Merge "Use announceForAccessibility to workaround Talkback...

Merge "Merge "Use announceForAccessibility to workaround Talkback rate-limitation" into udc-d1-dev am: cb7d38e2 am: baf56acd" into udc-qpr-dev-plus-aosp am: 18cda114

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/24305681



Change-Id: Ic2d2e996daf4547c72b6e1cbfb5f221088f097c0
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 27e3038c 18cda114
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -60,6 +60,13 @@ object Utils {
        return dp * (density / DisplayMetrics.DENSITY_DEFAULT)
    }

    /**
     * Note: Talkback 14.0 has new rate-limitation design to reduce frequency
     * of TYPE_WINDOW_CONTENT_CHANGED events to once every 30 seconds.
     * (context: b/281765653#comment18)
     * Using {@link View#announceForAccessibility} instead as workaround when sending events
     * exceeding this frequency is required.
     */
    @JvmStatic
    fun notifyAccessibilityContentChanged(am: AccessibilityManager, view: ViewGroup) {
        if (!am.isEnabled) {
+14 −15
Original line number Diff line number Diff line
@@ -45,7 +45,6 @@ import com.android.systemui.biometrics.AuthBiometricView.Callback
import com.android.systemui.biometrics.AuthBiometricViewAdapter
import com.android.systemui.biometrics.AuthIconController
import com.android.systemui.biometrics.AuthPanelController
import com.android.systemui.biometrics.Utils
import com.android.systemui.biometrics.domain.model.BiometricModalities
import com.android.systemui.biometrics.shared.model.BiometricModality
import com.android.systemui.biometrics.shared.model.PromptKind
@@ -80,9 +79,6 @@ object BiometricViewBinder {
        applicationScope: CoroutineScope,
    ): AuthBiometricViewAdapter {
        val accessibilityManager = view.context.getSystemService(AccessibilityManager::class.java)!!
        fun notifyAccessibilityChanged() {
            Utils.notifyAccessibilityContentChanged(accessibilityManager, view)
        }

        val textColorError =
            view.resources.getColor(R.color.biometric_dialog_error, view.context.theme)
@@ -326,21 +322,14 @@ object BiometricViewBinder {
                    }
                }

                // not sure why this is here, but the legacy code did it probably needed?
                launch {
                    viewModel.isAuthenticating.collect { isAuthenticating ->
                        if (isAuthenticating) {
                            notifyAccessibilityChanged()
                        }
                    }
                }

                // dismiss prompt when authenticated and confirmed
                launch {
                    viewModel.isAuthenticated.collect { authState ->
                        // Disable background view for cancelling authentication once authenticated,
                        // and remove from talkback
                        if (authState.isAuthenticated) {
                            // Prevents Talkback from speaking subtitle after already authenticated
                            subtitleView.importantForAccessibility = IMPORTANT_FOR_ACCESSIBILITY_NO
                            backgroundView.setOnClickListener(null)
                            backgroundView.importantForAccessibility =
                                IMPORTANT_FOR_ACCESSIBILITY_NO
@@ -349,7 +338,6 @@ object BiometricViewBinder {
                            view.announceForAccessibility(
                                view.resources.getString(R.string.biometric_dialog_authenticated)
                            )
                            notifyAccessibilityChanged()

                            launch {
                                delay(authState.delay)
@@ -381,7 +369,18 @@ object BiometricViewBinder {
                            !accessibilityManager.isEnabled ||
                                !accessibilityManager.isTouchExplorationEnabled

                        notifyAccessibilityChanged()
                        /**
                         * Note: Talkback 14.0 has new rate-limitation design to reduce frequency of
                         * TYPE_WINDOW_CONTENT_CHANGED events to once every 30 seconds. (context:
                         * b/281765653#comment18) Using {@link View#announceForAccessibility}
                         * instead as workaround since sending events exceeding this frequency is
                         * required.
                         */
                        indicatorMessageView?.text?.let {
                            if (it.isNotBlank()) {
                                view.announceForAccessibility(it)
                            }
                        }
                    }
                }
            }