diff options
author | 2024-10-01 18:44:56 +0200 | |
---|---|---|
committer | 2024-10-01 18:46:52 +0200 | |
commit | 6ac7259f493c2b45f3ab10fec8d4335bd55b2ec5 (patch) | |
tree | 61d8c664829a17f4ad3a088bd160af4d67df4b7f | |
parent | 6f273d49d27074107a6984ddebba4c3186bac00f (diff) |
Support setting a specific content description for the widget in SelectorWithWidgetPreference
Bug: 368124250
Test: atest SelectorWithWidgetPreferenceTest
Flag: EXEMPT minor addition
Change-Id: Iff0f1f7df27c15fb1a1d48322b2694cc640a053b
2 files changed, 38 insertions, 0 deletions
diff --git a/packages/SettingsLib/SelectorWithWidgetPreference/src/com/android/settingslib/widget/SelectorWithWidgetPreference.java b/packages/SettingsLib/SelectorWithWidgetPreference/src/com/android/settingslib/widget/SelectorWithWidgetPreference.java index 34de5c4a5d75..e6726dcbb17a 100644 --- a/packages/SettingsLib/SelectorWithWidgetPreference/src/com/android/settingslib/widget/SelectorWithWidgetPreference.java +++ b/packages/SettingsLib/SelectorWithWidgetPreference/src/com/android/settingslib/widget/SelectorWithWidgetPreference.java @@ -68,6 +68,7 @@ public class SelectorWithWidgetPreference extends CheckBoxPreference { private View mExtraWidgetContainer; private ImageView mExtraWidget; + @Nullable private String mExtraWidgetContentDescription; private boolean mIsCheckBox = false; // whether to display this button as a checkbox private View.OnClickListener mExtraWidgetOnClickListener; @@ -173,6 +174,12 @@ public class SelectorWithWidgetPreference extends CheckBoxPreference { setExtraWidgetOnClickListener(mExtraWidgetOnClickListener); + if (mExtraWidget != null) { + mExtraWidget.setContentDescription(mExtraWidgetContentDescription != null + ? mExtraWidgetContentDescription + : getContext().getString(R.string.settings_label)); + } + if (Flags.allowSetTitleMaxLines()) { TextView title = (TextView) holder.findViewById(android.R.id.title); title.setMaxLines(mTitleMaxLines); @@ -210,6 +217,17 @@ public class SelectorWithWidgetPreference extends CheckBoxPreference { } /** + * Sets the content description of the extra widget. If {@code null}, a default content + * description will be used ("Settings"). + */ + public void setExtraWidgetContentDescription(@Nullable String contentDescription) { + if (!TextUtils.equals(mExtraWidgetContentDescription, contentDescription)) { + mExtraWidgetContentDescription = contentDescription; + notifyChanged(); + } + } + + /** * Returns whether this preference is a checkbox. */ public boolean isCheckBox() { diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/SelectorWithWidgetPreferenceTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/SelectorWithWidgetPreferenceTest.java index 243ce85bd579..826d6a919de1 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/SelectorWithWidgetPreferenceTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/SelectorWithWidgetPreferenceTest.java @@ -184,6 +184,26 @@ public class SelectorWithWidgetPreferenceTest { } @Test + public void onBindViewHolder_appliesWidgetContentDescription() { + mPreference = new SelectorWithWidgetPreference(mContext); + View view = LayoutInflater.from(mContext) + .inflate(mPreference.getLayoutResource(), /* root= */ null); + PreferenceViewHolder preferenceViewHolder = + PreferenceViewHolder.createInstanceForTests(view); + + mPreference.setExtraWidgetContentDescription("this is clearer"); + mPreference.onBindViewHolder(preferenceViewHolder); + + View widget = preferenceViewHolder.findViewById(R.id.selector_extra_widget); + assertThat(widget.getContentDescription().toString()).isEqualTo("this is clearer"); + + mPreference.setExtraWidgetContentDescription(null); + mPreference.onBindViewHolder(preferenceViewHolder); + + assertThat(widget.getContentDescription().toString()).isEqualTo("Settings"); + } + + @Test public void nullSummary_containerShouldBeGone() { mPreference.setSummary(null); View summaryContainer = new View(mContext); |