From 1ac99118ac8478b85870b995cf091335e6dcf047 Mon Sep 17 00:00:00 2001 From: Edgar Wang Date: Fri, 29 Apr 2022 19:15:42 +0800 Subject: [PATCH] Ensure the learn more string meet Accessibility requirement. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In Google Accessibility Rating, All links, controls, and buttons should also have comprehensible text or tooltip text, so users can identify its purpose, independent of context, such as when using the URL list from TalkBack’s local context menu. It's not enough clear for users that only show "Learn more", in previous design we provided setLearnMoreContentDescription() let TalkBack speak more information about "Learn more". But the requirement including the text of the accessibility label and the visible link text match. So we should only set learnMore string that can ensure accessibility label and text match, also show a relevant context in TalkBack's context menu. Bug: 215045903 Test: manual Change-Id: Id734733bb4272327bcfcc04db38c88fb5cd3131c --- .../settingslib/widget/FooterPreference.java | 48 +++++-------------- .../widget/FooterPreferenceTest.java | 7 --- 2 files changed, 11 insertions(+), 44 deletions(-) diff --git a/packages/SettingsLib/FooterPreference/src/com/android/settingslib/widget/FooterPreference.java b/packages/SettingsLib/FooterPreference/src/com/android/settingslib/widget/FooterPreference.java index 6766cdd0beb69..8cda37665035d 100644 --- a/packages/SettingsLib/FooterPreference/src/com/android/settingslib/widget/FooterPreference.java +++ b/packages/SettingsLib/FooterPreference/src/com/android/settingslib/widget/FooterPreference.java @@ -44,7 +44,6 @@ public class FooterPreference extends Preference { int mIconVisibility = View.VISIBLE; private CharSequence mContentDescription; private CharSequence mLearnMoreText; - private CharSequence mLearnMoreContentDescription; private FooterLearnMoreSpan mLearnMoreSpan; public FooterPreference(Context context, AttributeSet attrs) { @@ -80,9 +79,6 @@ public class FooterPreference extends Preference { learnMoreText.setSpan(mLearnMoreSpan, 0, learnMoreText.length(), 0); learnMore.setText(learnMoreText); - if (!TextUtils.isEmpty(mLearnMoreContentDescription)) { - learnMore.setContentDescription(mLearnMoreContentDescription); - } } else { learnMore.setVisibility(View.GONE); } @@ -139,27 +135,6 @@ public class FooterPreference extends Preference { } } - /** - * To set content description of the learn more text. This can use for talkback - * environment if developer wants to have a customization content. - * - * @param learnMoreContentDescription The resource id of the content description. - */ - public void setLearnMoreContentDescription(CharSequence learnMoreContentDescription) { - if (!TextUtils.equals(mContentDescription, learnMoreContentDescription)) { - mLearnMoreContentDescription = learnMoreContentDescription; - notifyChanged(); - } - } - - /** - * Return the content description of learn more link. - */ - @VisibleForTesting - CharSequence getLearnMoreContentDescription() { - return mLearnMoreContentDescription; - } - /** * Assign an action for the learn more link. */ @@ -201,7 +176,7 @@ public class FooterPreference extends Preference { private String mKey; private CharSequence mTitle; private CharSequence mContentDescription; - private CharSequence mLearnMoreContentDescription; + private CharSequence mLearnMoreText; public Builder(@NonNull Context context) { mContext = context; @@ -260,25 +235,24 @@ public class FooterPreference extends Preference { } /** - * To set content description of the learn more text. This can use for talkback + * To set learn more string of the learn more text. This can use for talkback * environment if developer wants to have a customization content. * - * @param learnMoreContentDescription The resource id of the content description. + * @param learnMoreText The resource id of the learn more string. */ - public Builder setLearnMoreContentDescription(CharSequence learnMoreContentDescription) { - mLearnMoreContentDescription = learnMoreContentDescription; + public Builder setLearnMoreText(CharSequence learnMoreText) { + mLearnMoreText = learnMoreText; return this; } /** - * To set content description of the {@link FooterPreference}. This can use for talkback + * To set learn more string of the {@link FooterPreference}. This can use for talkback * environment if developer wants to have a customization content. * - * @param learnMoreContentDescriptionResId The resource id of the content description. + * @param learnMoreTextResId The resource id of the learn more string. */ - public Builder setLearnMoreContentDescription( - @StringRes int learnMoreContentDescriptionResId) { - mLearnMoreContentDescription = mContext.getText(learnMoreContentDescriptionResId); + public Builder setLearnMoreText(@StringRes int learnMoreTextResId) { + mLearnMoreText = mContext.getText(learnMoreTextResId); return this; } @@ -301,8 +275,8 @@ public class FooterPreference extends Preference { footerPreference.setContentDescription(mContentDescription); } - if (!TextUtils.isEmpty(mLearnMoreContentDescription)) { - footerPreference.setLearnMoreContentDescription(mLearnMoreContentDescription); + if (!TextUtils.isEmpty(mLearnMoreText)) { + footerPreference.setLearnMoreText(mLearnMoreText); } return footerPreference; } diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/FooterPreferenceTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/FooterPreferenceTest.java index 9abb27e683983..55125c53b4c95 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/FooterPreferenceTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/FooterPreferenceTest.java @@ -73,13 +73,6 @@ public class FooterPreferenceTest { assertThat(mFooterPreference.getContentDescription()).isEqualTo("test"); } - @Test - public void setLearnMoreContentDescription_contentSet_shouldGetSameContentDescription() { - mFooterPreference.setLearnMoreContentDescription("test"); - - assertThat(mFooterPreference.getLearnMoreContentDescription()).isEqualTo("test"); - } - @Test public void setLearnMoreAction_actionSet_shouldGetAction() { mFooterPreference.setLearnMoreAction(v -> {