diff options
-rw-r--r-- | packages/CompanionDeviceManager/res/values/strings.xml | 12 | ||||
-rw-r--r-- | packages/CompanionDeviceManager/src/com/android/companiondevicemanager/PermissionListAdapter.java | 25 |
2 files changed, 37 insertions, 0 deletions
diff --git a/packages/CompanionDeviceManager/res/values/strings.xml b/packages/CompanionDeviceManager/res/values/strings.xml index ebfb86d4d6ba..256e0eb9c847 100644 --- a/packages/CompanionDeviceManager/res/values/strings.xml +++ b/packages/CompanionDeviceManager/res/values/strings.xml @@ -113,6 +113,18 @@ <!-- 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 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> + <!-- ================== System data transfer ==================== --> <!-- Title of the permission sync confirmation dialog. [CHAR LIMIT=NONE] --> <string name="permission_sync_confirmation_title">Give apps on <strong><xliff:g id="companion_device_name" example="Galaxy Watch 5">%1$s</xliff:g></strong> the same permissions as on <strong><xliff:g id="primary_device_name" example="Pixel 6">%2$s</xliff:g></strong>?</string> 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; } |