TalkBack announce Expand/Collapse permission

1. Make sure to announce expand/collapse permissions
2. Announce the stats of current view(Exapnded/collapsed + permission)

Test: CTS
Fix: 278638141
Change-Id: I9634f6b757d6d8e41a6c051b5060cc8c6c8316d7
This commit is contained in:
Evan Chen
2023-04-25 19:07:43 +00:00
parent a235daba42
commit 59c0b7bceb
3 changed files with 19 additions and 20 deletions

View File

@@ -58,6 +58,7 @@
android:textSize="14sp"
android:layout_marginTop="2dp"
style="@style/TextAppearance"
android:focusable="true"
android:textColor="?android:attr/textColorSecondary"/>
</LinearLayout>

View File

@@ -113,17 +113,11 @@
<!-- Back button for the helper consent dialog [CHAR LIMIT=30] -->
<string name="consent_back">Back</string>
<!-- Action when permission list view is expanded CHAR LIMIT=30] -->
<string name="permission_expanded">Expanded</string>
<!-- Expand permission in the list CHAR LIMIT=30] -->
<string name="permission_expand">Expand <xliff:g id="permission_type" example="Notification">%1$s</xliff:g></string>
<!-- Expand action permission list CHAR LIMIT=30] -->
<string name="permission_expand">Expand</string>
<!-- Action when permission list view is collapsed CHAR LIMIT=30] -->
<string name="permission_collapsed">Collapsed</string>
<!-- Collapse action permission list CHAR LIMIT=30] -->
<string name="permission_collapse">Collapse</string>
<!-- Collapse permission int the list CHAR LIMIT=30] -->
<string name="permission_collapse">Collapse <xliff:g id="permission_type" example="Notification">%1$s</xliff:g></string>
<!-- ================== System data transfer ==================== -->
<!-- Title of the permission sync confirmation dialog. [CHAR LIMIT=NONE] -->

View File

@@ -124,7 +124,7 @@ class PermissionListAdapter extends RecyclerView.Adapter<PermissionListAdapter.V
}
setAccessibility(view, viewType,
AccessibilityNodeInfo.ACTION_CLICK, R.string.permission_expand);
AccessibilityNodeInfo.ACTION_CLICK, R.string.permission_expand, 0);
// Add expand buttons if the permissions are more than PERMISSION_SIZE in this list also
// make the summary invisible by default.
@@ -137,18 +137,16 @@ 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);
AccessibilityNodeInfo.ACTION_CLICK,
R.string.permission_collapse, R.string.permission_expand);
} 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);
AccessibilityNodeInfo.ACTION_CLICK,
R.string.permission_expand, R.string.permission_collapse);
}
});
} else {
@@ -200,14 +198,20 @@ class PermissionListAdapter extends RecyclerView.Adapter<PermissionListAdapter.V
}
}
private void setAccessibility(View view, int viewType, int action, int resourceId) {
final String actionString = mContext.getString(resourceId);
private void setAccessibility(View view, int viewType, int action, int statusResourceId,
int actionResourceId) {
final String permission = mContext.getString(sTitleMap.get(viewType));
if (actionResourceId != 0) {
view.announceForAccessibility(
getHtmlFromResources(mContext, actionResourceId, permission));
}
view.setAccessibilityDelegate(new View.AccessibilityDelegate() {
public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) {
super.onInitializeAccessibilityNodeInfo(host, info);
info.addAction(new AccessibilityNodeInfo.AccessibilityAction(action,
actionString + permission));
getHtmlFromResources(mContext, statusResourceId, permission)));
}
});
}