summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SettingsLib/SelectorWithWidgetPreference/src/com/android/settingslib/widget/SelectorWithWidgetPreference.java18
-rw-r--r--packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/SelectorWithWidgetPreferenceTest.java20
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);