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

Commit dab593ce authored by Brad Hinegardner's avatar Brad Hinegardner
Browse files

All a11y actions on lock icon should go to the bouncer

Modify messaging to make it clear that the user is going to the device
entry screen. In Talkback, the user will now hear "device locked.
double tap to enter screen lock".

Any time the a11y user interacts with any udfps or non-udfps lock icon,
they should be taken to the bouncer.

Fixes: 344493721
Test: atest DeviceEntryIconViewModelTest
Flag: com.android.systemui.device_entry_udfps_refactor
Change-Id: I8bd268fc350326150c25fc4f9ef4f2672c16a30f
parent b86d3349
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -225,13 +225,13 @@ class DeviceEntryIconViewModelTest : SysuiTestCase() {
            setUpState(isUdfpsSupported = true)

            assertThat(accessibilityDelegateHint)
                .isEqualTo(DeviceEntryIconView.AccessibilityHintType.AUTHENTICATE)
                .isEqualTo(DeviceEntryIconView.AccessibilityHintType.BOUNCER)

            // interactive lock icon for non udfps as well so that user can navigate to bouncer
            // non-interactive lock icon
            fingerprintPropertyRepository.supportsRearFps()

            assertThat(accessibilityDelegateHint)
                .isEqualTo(DeviceEntryIconView.AccessibilityHintType.AUTHENTICATE)
                .isEqualTo(DeviceEntryIconView.AccessibilityHintType.BOUNCER)
        }

    @Test
+5 −5
Original line number Diff line number Diff line
@@ -63,10 +63,10 @@ constructor(
    private fun setupAccessibilityDelegate() {
        accessibilityDelegate =
            object : AccessibilityDelegate() {
                private val accessibilityAuthenticateHint =
                private val accessibilityBouncerHint =
                    AccessibilityNodeInfo.AccessibilityAction(
                        AccessibilityNodeInfoCompat.ACTION_CLICK,
                        resources.getString(R.string.accessibility_authenticate_hint)
                        resources.getString(R.string.accessibility_bouncer)
                    )
                private val accessibilityEnterHint =
                    AccessibilityNodeInfo.AccessibilityAction(
@@ -79,8 +79,8 @@ constructor(
                ) {
                    super.onInitializeAccessibilityNodeInfo(v, info)
                    when (accessibilityHintType) {
                        AccessibilityHintType.AUTHENTICATE ->
                            info.addAction(accessibilityAuthenticateHint)
                        AccessibilityHintType.BOUNCER ->
                            info.addAction(accessibilityBouncerHint)
                        AccessibilityHintType.ENTER -> info.addAction(accessibilityEnterHint)
                        AccessibilityHintType.NONE -> return
                    }
@@ -274,7 +274,7 @@ constructor(

    enum class AccessibilityHintType {
        NONE,
        AUTHENTICATE,
        BOUNCER,
        ENTER,
    }
}
+3 −9
Original line number Diff line number Diff line
@@ -162,6 +162,7 @@ constructor(
            KeyguardState.LOCKSCREEN, -> 1f
        }
    }

    val useBackgroundProtection: StateFlow<Boolean> = isUdfpsSupported
    val burnInOffsets: Flow<BurnInOffsets> =
        deviceEntryUdfpsInteractor.isUdfpsEnrolledAndEnabled
@@ -263,13 +264,7 @@ constructor(
    val accessibilityDelegateHint: Flow<DeviceEntryIconView.AccessibilityHintType> =
        accessibilityInteractor.isEnabled.flatMapLatest { touchExplorationEnabled ->
            if (touchExplorationEnabled) {
                combine(iconType, isInteractive) { iconType, isInteractive ->
                    if (isInteractive || iconType == DeviceEntryIconView.IconType.LOCK) {
                        iconType.toAccessibilityHintType()
                    } else {
                        DeviceEntryIconView.AccessibilityHintType.NONE
                    }
                }
                iconType.map { it.toAccessibilityHintType() }
            } else {
                flowOf(DeviceEntryIconView.AccessibilityHintType.NONE)
            }
@@ -289,8 +284,7 @@ constructor(
    private fun DeviceEntryIconView.IconType.toAccessibilityHintType():
        DeviceEntryIconView.AccessibilityHintType {
        return when (this) {
            DeviceEntryIconView.IconType.LOCK ->
                DeviceEntryIconView.AccessibilityHintType.AUTHENTICATE
            DeviceEntryIconView.IconType.LOCK -> DeviceEntryIconView.AccessibilityHintType.BOUNCER
            DeviceEntryIconView.IconType.UNLOCK -> DeviceEntryIconView.AccessibilityHintType.ENTER
            DeviceEntryIconView.IconType.FINGERPRINT,
            DeviceEntryIconView.IconType.NONE -> DeviceEntryIconView.AccessibilityHintType.NONE