summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/CompanionDeviceManager/res/values/strings.xml12
-rw-r--r--packages/CompanionDeviceManager/src/com/android/companiondevicemanager/PermissionListAdapter.java25
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 &lt;strong&gt;<xliff:g id="companion_device_name" example="Galaxy Watch 5">%1$s</xliff:g>&lt;/strong&gt; the same permissions as on &lt;strong&gt;<xliff:g id="primary_device_name" example="Pixel 6">%2$s</xliff:g>&lt;/strong&gt;?</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;
}