summaryrefslogtreecommitdiff
path: root/packages/CompanionDeviceManager/src
diff options
context:
space:
mode:
author Evan Chen <evanxinchen@google.com> 2023-04-19 19:25:47 +0000
committer Evan Chen <evanxinchen@google.com> 2023-04-19 19:25:47 +0000
commit0e782cb56afb9df8873e51c27facbd2ab8c10009 (patch)
tree7f6b4e812e14b9bc5cf0d38b7ca14c432d30d2e4 /packages/CompanionDeviceManager/src
parentfce104fd70e26aab30714cd684a9e1ea6f6c2cdf (diff)
Fix talkback when expand and collapse the permission list
1. Announce expand/collapse when double tap the permission item 2. Announce expanded/collapsed when single tap the permission item Test: cts Fix: 278486577, 278638141 Change-Id: Ia9b00a555a543aae6746bf12cf8b2d131f0c5aea
Diffstat (limited to 'packages/CompanionDeviceManager/src')
-rw-r--r--packages/CompanionDeviceManager/src/com/android/companiondevicemanager/PermissionListAdapter.java25
1 files changed, 25 insertions, 0 deletions
diff --git a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/PermissionListAdapter.java b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/PermissionListAdapter.java
index d2fd78012193..b86ef649331a 100644
--- a/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/PermissionListAdapter.java
+++ b/packages/CompanionDeviceManager/src/com/android/companiondevicemanager/PermissionListAdapter.java
@@ -27,6 +27,7 @@ import android.util.ArrayMap;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.view.accessibility.AccessibilityNodeInfo;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
@@ -121,6 +122,10 @@ class PermissionListAdapter extends RecyclerView.Adapter<PermissionListAdapter.V
if (viewHolder.mExpandButton.getTag() == null) {
viewHolder.mExpandButton.setTag(R.drawable.btn_expand_more);
}
+
+ setAccessibility(view, viewType,
+ AccessibilityNodeInfo.ACTION_CLICK, R.string.permission_expand);
+
// Add expand buttons if the permissions are more than PERMISSION_SIZE in this list also
// make the summary invisible by default.
if (mPermissions.size() > PERMISSION_SIZE) {
@@ -132,10 +137,18 @@ class PermissionListAdapter extends RecyclerView.Adapter<PermissionListAdapter.V
viewHolder.mExpandButton.setImageResource(R.drawable.btn_expand_less);
viewHolder.mPermissionSummary.setVisibility(View.VISIBLE);
viewHolder.mExpandButton.setTag(R.drawable.btn_expand_less);
+ view.setContentDescription(mContext.getString(R.string.permission_expanded));
+ setAccessibility(view, viewType,
+ AccessibilityNodeInfo.ACTION_CLICK, R.string.permission_collapse);
+ viewHolder.mPermissionSummary.setFocusable(true);
} else {
viewHolder.mExpandButton.setImageResource(R.drawable.btn_expand_more);
viewHolder.mPermissionSummary.setVisibility(View.GONE);
viewHolder.mExpandButton.setTag(R.drawable.btn_expand_more);
+ view.setContentDescription(mContext.getString(R.string.permission_collapsed));
+ setAccessibility(view, viewType,
+ AccessibilityNodeInfo.ACTION_CLICK, R.string.permission_expanded);
+ viewHolder.mPermissionSummary.setFocusable(false);
}
});
} else {
@@ -187,6 +200,18 @@ class PermissionListAdapter extends RecyclerView.Adapter<PermissionListAdapter.V
}
}
+ private void setAccessibility(View view, int viewType, int action, int resourceId) {
+ final String actionString = mContext.getString(resourceId);
+ final String permission = mContext.getString(sTitleMap.get(viewType));
+ view.setAccessibilityDelegate(new View.AccessibilityDelegate() {
+ public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) {
+ super.onInitializeAccessibilityNodeInfo(host, info);
+ info.addAction(new AccessibilityNodeInfo.AccessibilityAction(action,
+ actionString + permission));
+ }
+ });
+ }
+
void setPermissionType(List<Integer> permissions) {
mPermissions = permissions;
}