diff options
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); |