diff options
| author | 2025-02-26 10:16:12 -0800 | |
|---|---|---|
| committer | 2025-02-26 10:16:12 -0800 | |
| commit | 82dd4dbeedb1a3eb2177af3d273bee2dcf34764f (patch) | |
| tree | a3974ed4c01ca66dd5db012c382304b0e73ffe43 | |
| parent | 7b5a72a3b89f15223a8d6ea4aff3aa1de4b57f87 (diff) | |
| parent | 3fbafb11a03dfea7f56caf89273017f036268344 (diff) | |
Merge "Extend timeout for Biometric Prompt messages when talkback enabled" into main
4 files changed, 22 insertions, 3 deletions
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/AuthContainerViewTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/AuthContainerViewTest.kt index 88c9e74551fd..0cfb36d58f89 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/AuthContainerViewTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/AuthContainerViewTest.kt @@ -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, diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModel.kt b/packages/SystemUI/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModel.kt index 4dcf26808a9e..0902d19b6787 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModel.kt +++ b/packages/SystemUI/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModel.kt @@ -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) } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelTest.kt index b6c63479990e..0e68fce679b0 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelTest.kt @@ -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 diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelKosmos.kt index 43b57de3df9f..d6b625b49fb2 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelKosmos.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/biometrics/ui/viewmodel/PromptViewModelKosmos.kt @@ -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, ) } |