diff options
author | Tyler Dewey <deweytyl@google.com> | 2023-04-13 09:59:45 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2023-04-13 09:59:45 +0000 |
commit | 3f2f0c948bf999e69cdb2a293b43dcede78ae088 (patch) | |
tree | a7364425ddc35687aa0d407609c1dbd151756036 /PermissionController/src/com/android/permissioncontroller/safetycenter | |
parent | 1ce83af7689755795a613c63cb2c9cb7a17d1ffc (diff) | |
parent | 53bf94c8770c54bf4c1a62ce46474a2170fd2999 (diff) | |
download | Permission-3f2f0c948bf999e69cdb2a293b43dcede78ae088.tar.gz |
Merge "Only override content description for first view in issue cards." into udc-dev
Diffstat (limited to 'PermissionController/src/com/android/permissioncontroller/safetycenter')
-rw-r--r-- | PermissionController/src/com/android/permissioncontroller/safetycenter/ui/IssueCardPreference.java | 74 |
1 files changed, 41 insertions, 33 deletions
diff --git a/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/IssueCardPreference.java b/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/IssueCardPreference.java index f11b912fb..16cd05dac 100644 --- a/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/IssueCardPreference.java +++ b/PermissionController/src/com/android/permissioncontroller/safetycenter/ui/IssueCardPreference.java @@ -114,46 +114,22 @@ public class IssueCardPreference extends Preference implements ComparablePrefere configureDismissButton(holder.findViewById(R.id.issue_card_dismiss_btn)); - ((TextView) holder.findViewById(R.id.issue_card_title)).setText(mIssue.getTitle()); + TextView titleTextView = (TextView) holder.findViewById(R.id.issue_card_title); + titleTextView.setText(mIssue.getTitle()); ((TextView) holder.findViewById(R.id.issue_card_summary)).setText(mIssue.getSummary()); - CharSequence attributionTitle = SdkLevel.isAtLeastU() ? mIssue.getAttributionTitle() : null; TextView attributionTitleTextView = (TextView) holder.findViewById(R.id.issue_card_attribution_title); - if (TextUtils.isEmpty(attributionTitle)) { - attributionTitleTextView.setVisibility(View.GONE); - } else { - attributionTitleTextView.setText(attributionTitle); - attributionTitleTextView.setVisibility(View.VISIBLE); - } - CharSequence subtitle = mIssue.getSubtitle(); + maybeDisplayText( + SdkLevel.isAtLeastU() ? mIssue.getAttributionTitle() : null, + attributionTitleTextView); + TextView subtitleTextView = (TextView) holder.findViewById(R.id.issue_card_subtitle); - CharSequence contentDescription; - // TODO(b/257972736): Add a11y support for attribution title. - if (TextUtils.isEmpty(subtitle)) { - subtitleTextView.setVisibility(View.GONE); - contentDescription = - getContext() - .getString( - R.string.safety_center_issue_card_content_description, - mIssue.getTitle(), - mIssue.getSummary()); - } else { - subtitleTextView.setText(subtitle); - subtitleTextView.setVisibility(View.VISIBLE); - int contentDescriptionResId = - R.string.safety_center_issue_card_content_description_with_subtitle; - contentDescription = - getContext() - .getString( - contentDescriptionResId, - mIssue.getTitle(), - mIssue.getSubtitle(), - mIssue.getSummary()); - } - holder.itemView.setContentDescription(contentDescription); + maybeDisplayText(mIssue.getSubtitle(), subtitleTextView); + holder.itemView.setClickable(false); + configureContentDescription(attributionTitleTextView, titleTextView); configureButtonList(holder); configureSafetyProtectionView(holder); maybeStartResolutionAnimation(holder); @@ -163,6 +139,38 @@ public class IssueCardPreference extends Preference implements ComparablePrefere .recordForIssue(Action.SAFETY_ISSUE_VIEWED, mIssue, mIsDismissed); } + private void maybeDisplayText(@Nullable CharSequence maybeText, TextView textView) { + if (TextUtils.isEmpty(maybeText)) { + textView.setVisibility(View.GONE); + } else { + textView.setText(maybeText); + textView.setVisibility(View.VISIBLE); + } + } + + private void configureContentDescription( + TextView attributionTitleTextView, TextView titleTextView) { + TextView firstVisibleTextView; + if (attributionTitleTextView.getVisibility() == View.VISIBLE) { + // Attribution title might not be present for an issue, title always is. + firstVisibleTextView = attributionTitleTextView; + + // Clear the modified title description in case this view is reused. + titleTextView.setContentDescription(null); + } else { + firstVisibleTextView = titleTextView; + } + + // We would like to say "alert" before reading the content of the issue card. Best way to + // do that is by modifying the content description of the first view that would be read + // in the issue card. + firstVisibleTextView.setContentDescription( + getContext() + .getString( + R.string.safety_center_issue_card_prefix_content_description, + firstVisibleTextView.getText())); + } + private void configureButtonList(PreferenceViewHolder holder) { LinearLayout buttonList = ((LinearLayout) holder.findViewById(R.id.issue_card_action_button_list)); |