Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b7985fba authored by Evan Chen's avatar Evan Chen Committed by Android (Google) Code Review
Browse files

Merge "Fix talkback when expand and collapse the permission list" into udc-dev

parents 497d09ac 0e782cb5
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -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>
+25 −0
Original line number Diff line number Diff line
@@ -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;
    }