From 7b3a7c04be3f662ef6e9bea764d8e8ad2a93f983 Mon Sep 17 00:00:00 2001 From: Fabián Kozynski Date: Wed, 17 Jan 2024 11:12:36 -0500 Subject: Remove clickable from tiles that cannot be clicked There's an open issue in a11y, where removing the action is not enough to make a node not clickable. Make sure that we mark it as not clickable when needed. Test: atest TileAdapterDelegateTest Fixes: 319784882 Flag: NONE Change-Id: I4d7d7ee1ea9c3a66b9175ee241db8b8561876c0d --- .../src/com/android/systemui/qs/customize/TileAdapterDelegate.java | 3 +++ .../com/android/systemui/qs/customize/TileAdapterDelegateTest.java | 7 +++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapterDelegate.java b/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapterDelegate.java index 92f17f9db0f4..e098929c1b1d 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapterDelegate.java +++ b/packages/SystemUI/src/com/android/systemui/qs/customize/TileAdapterDelegate.java @@ -119,6 +119,8 @@ class TileAdapterDelegate extends AccessibilityDelegateCompat { info.removeAction(listOfActions.get(i)); } } + // We really don't want it to be clickable in this case. + info.setClickable(false); return; } @@ -126,6 +128,7 @@ class TileAdapterDelegate extends AccessibilityDelegateCompat { new AccessibilityNodeInfoCompat.AccessibilityActionCompat( AccessibilityNodeInfo.ACTION_CLICK, clickActionString); info.addAction(action); + info.setClickable(true); } private void maybeAddActionMoveToPosition( diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/customize/TileAdapterDelegateTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/customize/TileAdapterDelegateTest.java index 6cad985c7b57..6e2f5db2eeda 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/customize/TileAdapterDelegateTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/customize/TileAdapterDelegateTest.java @@ -31,8 +31,8 @@ import android.view.accessibility.AccessibilityNodeInfo; import androidx.core.view.accessibility.AccessibilityNodeInfoCompat; import androidx.test.filters.SmallTest; -import com.android.systemui.res.R; import com.android.systemui.SysuiTestCase; +import com.android.systemui.res.R; import org.junit.Before; import org.junit.Test; @@ -136,6 +136,7 @@ public class TileAdapterDelegateTest extends SysuiTestCase { AccessibilityNodeInfoCompat.AccessibilityActionCompat action = getActionForId(mInfo, AccessibilityNodeInfo.ACTION_CLICK); assertThat(action.getLabel().toString()).contains(expectedString); + assertThat(mInfo.isClickable()).isTrue(); } @Test @@ -152,10 +153,11 @@ public class TileAdapterDelegateTest extends SysuiTestCase { AccessibilityNodeInfoCompat.AccessibilityActionCompat action = getActionForId(mInfo, AccessibilityNodeInfo.ACTION_CLICK); assertThat(action.getLabel().toString()).contains(expectedString); + assertThat(mInfo.isClickable()).isTrue(); } @Test - public void testNoClickAction() { + public void testNoClickActionAndNotClickable() { mView.setTag(mHolder); when(mHolder.canTakeAccessibleAction()).thenReturn(true); when(mHolder.canAdd()).thenReturn(false); @@ -167,6 +169,7 @@ public class TileAdapterDelegateTest extends SysuiTestCase { AccessibilityNodeInfoCompat.AccessibilityActionCompat action = getActionForId(mInfo, AccessibilityNodeInfo.ACTION_CLICK); assertThat(action).isNull(); + assertThat(mInfo.isClickable()).isFalse(); } @Test -- cgit v1.2.3-59-g8ed1b