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

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

Merge "Extend timeout for Biometric Prompt messages when talkback enabled" into main

parents 7b5a72a3 3fbafb11
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import android.testing.ViewUtils
import android.view.View
import android.view.WindowInsets
import android.view.WindowManager
import android.view.accessibility.AccessibilityManager
import android.widget.ScrollView
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -114,6 +115,7 @@ open class AuthContainerViewTest : SysuiTestCase() {
    @Mock lateinit var selectedUserInteractor: SelectedUserInteractor
    @Mock private lateinit var packageManager: PackageManager
    @Mock private lateinit var activityTaskManager: ActivityTaskManager
    @Mock private lateinit var accessibilityManager: AccessibilityManager
    @Mock private lateinit var lazyViewCapture: Lazy<ViewCapture>

    private lateinit var displayRepository: FakeDisplayRepository
@@ -678,6 +680,7 @@ open class AuthContainerViewTest : SysuiTestCase() {
                udfpsUtils,
                iconProvider,
                activityTaskManager,
                accessibilityManager,
            ),
            { credentialViewModel },
            fakeExecutor,
+13 −2
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ import android.util.Log
import android.util.RotationUtils
import android.view.HapticFeedbackConstants
import android.view.MotionEvent
import android.view.accessibility.AccessibilityManager
import com.android.app.tracing.coroutines.launchTraced as launch
import com.android.keyguard.AuthInteractionProperties
import com.android.launcher3.icons.IconProvider
@@ -85,7 +86,17 @@ constructor(
    private val udfpsUtils: UdfpsUtils,
    private val iconProvider: IconProvider,
    private val activityTaskManager: ActivityTaskManager,
    private val accessibilityManager: AccessibilityManager,
) {
    // When a11y enabled, increase message delay to ensure messages get read
    private val messageDelay =
        accessibilityManager
            .getRecommendedTimeoutMillis(
                BiometricPrompt.HIDE_DIALOG_DELAY,
                AccessibilityManager.FLAG_CONTENT_CONTROLS or AccessibilityManager.FLAG_CONTENT_TEXT,
            )
            .toLong()

    /** The set of modalities available for this prompt */
    val modalities: Flow<BiometricModalities> =
        promptSelectorInteractor.prompt
@@ -692,7 +703,7 @@ constructor(

        messageJob?.cancel()
        messageJob = launch {
            delay(BiometricPrompt.HIDE_DIALOG_DELAY.toLong())
            delay(messageDelay)
            if (authenticateAfterError) {
                showAuthenticating(messageAfterError)
            } else {
@@ -754,7 +765,7 @@ constructor(

        messageJob?.cancel()
        messageJob = launch {
            delay(BiometricPrompt.HIDE_DIALOG_DELAY.toLong())
            delay(messageDelay)
            showAuthenticating(messageAfterHelp)
        }
    }
+4 −0
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import android.graphics.Point
import android.graphics.Rect
import android.graphics.drawable.BitmapDrawable
import android.hardware.biometrics.BiometricFingerprintConstants
import android.hardware.biometrics.BiometricPrompt
import android.hardware.biometrics.PromptContentItemBulletedText
import android.hardware.biometrics.PromptContentView
import android.hardware.biometrics.PromptContentViewWithMoreOptionsButton
@@ -42,6 +43,7 @@ import android.platform.test.annotations.EnableFlags
import android.view.HapticFeedbackConstants
import android.view.MotionEvent
import android.view.Surface
import android.view.accessibility.accessibilityManager
import androidx.test.filters.SmallTest
import com.android.app.activityTaskManager
import com.android.keyguard.AuthInteractionProperties
@@ -200,6 +202,8 @@ internal class PromptViewModelTest(private val testCase: TestCase) : SysuiTestCa
        overrideResource(R.dimen.biometric_dialog_face_icon_size, mockFaceIconSize)

        kosmos.applicationContext = context
        whenever(kosmos.accessibilityManager.getRecommendedTimeoutMillis(anyInt(), anyInt()))
            .thenReturn(BiometricPrompt.HIDE_DIALOG_DELAY)

        if (testCase.fingerprint?.isAnyUdfpsType == true) {
            kosmos.authController = authController
+2 −1
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.systemui.biometrics.ui.viewmodel

import android.content.applicationContext
import android.view.accessibility.accessibilityManager
import com.android.app.activityTaskManager
import com.android.launcher3.icons.IconProvider
import com.android.systemui.biometrics.domain.interactor.biometricStatusInteractor
@@ -27,7 +28,6 @@ import com.android.systemui.biometrics.udfpsUtils
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.Kosmos.Fixture
import com.android.systemui.util.mockito.mock
import org.mockito.Mockito.mock

val Kosmos.promptViewModel by Fixture {
    PromptViewModel(
@@ -39,6 +39,7 @@ val Kosmos.promptViewModel by Fixture {
        udfpsUtils = udfpsUtils,
        iconProvider = iconProvider,
        activityTaskManager = activityTaskManager,
        accessibilityManager = accessibilityManager,
    )
}