summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Joel Galenson <jgalenson@google.com> 2019-03-05 14:14:14 -0800
committer Joel Galenson <jgalenson@google.com> 2019-03-05 14:14:14 -0800
commit9842425fd8d4b4d703a8b209ebacee09481dd879 (patch)
tree5dc6a186651bac454c516c31714247b9836e9c32
parent6693dc93759002b20c349ce8093eb7726315001a (diff)
Add content description to bar chart icons.
Allow setting a content description on the bar chart icons so screen readers can speak information about them. Bug: 127237805 Test: Use new API. Test: atest the two modified tests Change-Id: I97c3693459bd1d916a66d834434be6ef3ab405d7
-rw-r--r--packages/SettingsLib/BarChartPreference/src/com/android/settingslib/widget/BarView.java1
-rw-r--r--packages/SettingsLib/BarChartPreference/src/com/android/settingslib/widget/BarViewInfo.java10
-rw-r--r--packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/BarChartInfoTest.java9
-rw-r--r--packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/BarChartPreferenceTest.java58
4 files changed, 48 insertions, 30 deletions
diff --git a/packages/SettingsLib/BarChartPreference/src/com/android/settingslib/widget/BarView.java b/packages/SettingsLib/BarChartPreference/src/com/android/settingslib/widget/BarView.java
index 3ef0235940b1..03dfd3ee6080 100644
--- a/packages/SettingsLib/BarChartPreference/src/com/android/settingslib/widget/BarView.java
+++ b/packages/SettingsLib/BarChartPreference/src/com/android/settingslib/widget/BarView.java
@@ -74,6 +74,7 @@ public class BarView extends LinearLayout {
// For now, we use the bar number as title.
mBarTitle.setText(Integer.toString(barViewInfo.getHeight()));
mBarSummary.setText(barViewInfo.getSummary());
+ mIcon.setContentDescription(barViewInfo.getContentDescription());
}
@VisibleForTesting
diff --git a/packages/SettingsLib/BarChartPreference/src/com/android/settingslib/widget/BarViewInfo.java b/packages/SettingsLib/BarChartPreference/src/com/android/settingslib/widget/BarViewInfo.java
index 409f9ea05889..1ef36a2a75b7 100644
--- a/packages/SettingsLib/BarChartPreference/src/com/android/settingslib/widget/BarViewInfo.java
+++ b/packages/SettingsLib/BarChartPreference/src/com/android/settingslib/widget/BarViewInfo.java
@@ -34,6 +34,7 @@ public class BarViewInfo implements Comparable<BarViewInfo> {
private View.OnClickListener mClickListener;
@StringRes
private int mSummary;
+ private @Nullable CharSequence mContentDescription;
// A number indicates this bar's height. The larger number shows a higher bar view.
private int mHeight;
// A real height of bar view.
@@ -45,11 +46,14 @@ public class BarViewInfo implements Comparable<BarViewInfo> {
* @param icon The icon of bar view.
* @param barHeight The height of bar view. Larger number shows a higher bar view.
* @param summary The string resource id for summary.
+ * @param contentDescription Optional text that briefly describes the contents of the icon.
*/
- public BarViewInfo(Drawable icon, @IntRange(from = 0) int barHeight, @StringRes int summary) {
+ public BarViewInfo(Drawable icon, @IntRange(from = 0) int barHeight, @StringRes int summary,
+ @Nullable CharSequence contentDescription) {
mIcon = icon;
mHeight = barHeight;
mSummary = summary;
+ mContentDescription = contentDescription;
}
/**
@@ -91,6 +95,10 @@ public class BarViewInfo implements Comparable<BarViewInfo> {
return mSummary;
}
+ public @Nullable CharSequence getContentDescription() {
+ return mContentDescription;
+ }
+
void setNormalizedHeight(@IntRange(from = 0) int barHeight) {
mNormalizedHeight = barHeight;
}
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/BarChartInfoTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/BarChartInfoTest.java
index 29d57b7bbeef..2b272485dff3 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/BarChartInfoTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/BarChartInfoTest.java
@@ -72,7 +72,8 @@ public class BarChartInfoTest {
final BarViewInfo barViewInfo = new BarViewInfo(
null /* icon */,
50,
- mTitle);
+ mTitle,
+ null);
final BarChartInfo mBarChartInfo = new BarChartInfo.Builder()
.setTitle(mTitle)
@@ -91,7 +92,8 @@ public class BarChartInfoTest {
final BarViewInfo barViewInfo = new BarViewInfo(
null /* icon */,
50,
- mTitle);
+ mTitle,
+ null);
final BarChartInfo mBarChartInfo = new BarChartInfo.Builder()
.setTitle(mTitle)
.setDetails(mDetails)
@@ -113,7 +115,8 @@ public class BarChartInfoTest {
final BarViewInfo barViewInfo = new BarViewInfo(
null /* icon */,
50,
- mTitle);
+ mTitle,
+ null);
new BarChartInfo.Builder()
.setTitle(mTitle)
.setDetails(mDetails)
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/BarChartPreferenceTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/BarChartPreferenceTest.java
index 3acca2a7ef75..266554be57d3 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/BarChartPreferenceTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/BarChartPreferenceTest.java
@@ -113,7 +113,8 @@ public class BarChartPreferenceTest {
final BarChartInfo barChartInfo = new BarChartInfo.Builder()
.setTitle(R.string.debug_app)
.setDetails(R.string.debug_app)
- .addBarViewInfo(new BarViewInfo(mIcon, 10 /* barNumber */, R.string.debug_app))
+ .addBarViewInfo(
+ new BarViewInfo(mIcon, 10 /* barNumber */, R.string.debug_app, null))
.build();
mPreference.initializeBarChart(barChartInfo);
@@ -128,7 +129,8 @@ public class BarChartPreferenceTest {
// We don't call BarChartInfo.Builder#setDetails yet.
final BarChartInfo barChartInfo = new BarChartInfo.Builder()
.setTitle(R.string.debug_app)
- .addBarViewInfo(new BarViewInfo(mIcon, 10 /* barNumber */, R.string.debug_app))
+ .addBarViewInfo(
+ new BarViewInfo(mIcon, 10 /* barNumber */, R.string.debug_app, null))
.build();
mPreference.initializeBarChart(barChartInfo);
@@ -144,7 +146,8 @@ public class BarChartPreferenceTest {
.setDetails(R.string.debug_app)
.setDetailsOnClickListener(v -> {
})
- .addBarViewInfo(new BarViewInfo(mIcon, 10 /* barNumber */, R.string.debug_app))
+ .addBarViewInfo(
+ new BarViewInfo(mIcon, 10 /* barNumber */, R.string.debug_app, null))
.build();
mPreference.initializeBarChart(barChartInfo);
@@ -157,7 +160,7 @@ public class BarChartPreferenceTest {
@Test
public void setBarViewInfos_oneBarViewInfoSet_shouldShowOneBarView() {
final BarViewInfo[] barViewsInfo = new BarViewInfo[]{
- new BarViewInfo(mIcon, 10 /* barNumber */, R.string.debug_app)
+ new BarViewInfo(mIcon, 10 /* barNumber */, R.string.debug_app, null)
};
mPreference.initializeBarChart(mBarChartInfo);
@@ -175,8 +178,8 @@ public class BarChartPreferenceTest {
@Test
public void setBarViewInfos_twoBarViewInfosSet_shouldShowTwoBarViews() {
final BarViewInfo[] barViewsInfo = new BarViewInfo[]{
- new BarViewInfo(mIcon, 20 /* barNumber */, R.string.debug_app),
- new BarViewInfo(mIcon, 10 /* barNumber */, R.string.debug_app)
+ new BarViewInfo(mIcon, 20 /* barNumber */, R.string.debug_app, null),
+ new BarViewInfo(mIcon, 10 /* barNumber */, R.string.debug_app, null)
};
mPreference.initializeBarChart(mBarChartInfo);
@@ -195,9 +198,9 @@ public class BarChartPreferenceTest {
@Test
public void setBarViewInfos_threeBarViewInfosSet_shouldShowThreeBarViews() {
final BarViewInfo[] barViewsInfo = new BarViewInfo[]{
- new BarViewInfo(mIcon, 20 /* barNumber */, R.string.debug_app),
- new BarViewInfo(mIcon, 10 /* barNumber */, R.string.debug_app),
- new BarViewInfo(mIcon, 5 /* barNumber */, R.string.debug_app)
+ new BarViewInfo(mIcon, 20 /* barNumber */, R.string.debug_app, null),
+ new BarViewInfo(mIcon, 10 /* barNumber */, R.string.debug_app, null),
+ new BarViewInfo(mIcon, 5 /* barNumber */, R.string.debug_app, null)
};
mPreference.initializeBarChart(mBarChartInfo);
@@ -217,10 +220,10 @@ public class BarChartPreferenceTest {
@Test
public void setBarViewInfos_fourBarViewInfosSet_shouldShowFourBarViews() {
final BarViewInfo[] barViewsInfo = new BarViewInfo[]{
- new BarViewInfo(mIcon, 20 /* barNumber */, R.string.debug_app),
- new BarViewInfo(mIcon, 10 /* barNumber */, R.string.debug_app),
- new BarViewInfo(mIcon, 5 /* barNumber */, R.string.debug_app),
- new BarViewInfo(mIcon, 2 /* barNumber */, R.string.debug_app),
+ new BarViewInfo(mIcon, 20 /* barNumber */, R.string.debug_app, null),
+ new BarViewInfo(mIcon, 10 /* barNumber */, R.string.debug_app, null),
+ new BarViewInfo(mIcon, 5 /* barNumber */, R.string.debug_app, null),
+ new BarViewInfo(mIcon, 2 /* barNumber */, R.string.debug_app, null),
};
mPreference.initializeBarChart(mBarChartInfo);
@@ -242,11 +245,11 @@ public class BarChartPreferenceTest {
thrown.expect(IllegalStateException.class);
final BarViewInfo[] barViewsInfo = new BarViewInfo[]{
- new BarViewInfo(mIcon, 30 /* barNumber */, R.string.debug_app),
- new BarViewInfo(mIcon, 50 /* barNumber */, R.string.debug_app),
- new BarViewInfo(mIcon, 5 /* barNumber */, R.string.debug_app),
- new BarViewInfo(mIcon, 10 /* barNumber */, R.string.debug_app),
- new BarViewInfo(mIcon, 70 /* barNumber */, R.string.debug_app),
+ new BarViewInfo(mIcon, 30 /* barNumber */, R.string.debug_app, null),
+ new BarViewInfo(mIcon, 50 /* barNumber */, R.string.debug_app, null),
+ new BarViewInfo(mIcon, 5 /* barNumber */, R.string.debug_app, null),
+ new BarViewInfo(mIcon, 10 /* barNumber */, R.string.debug_app, null),
+ new BarViewInfo(mIcon, 70 /* barNumber */, R.string.debug_app, null),
};
mPreference.setBarViewInfos(barViewsInfo);
@@ -255,10 +258,10 @@ public class BarChartPreferenceTest {
@Test
public void setBarViewInfos_barViewInfosSet_shouldBeSortedInDescending() {
final BarViewInfo[] barViewsInfo = new BarViewInfo[]{
- new BarViewInfo(mIcon, 30 /* barNumber */, R.string.debug_app),
- new BarViewInfo(mIcon, 50 /* barNumber */, R.string.debug_app),
- new BarViewInfo(mIcon, 5 /* barNumber */, R.string.debug_app),
- new BarViewInfo(mIcon, 10 /* barNumber */, R.string.debug_app),
+ new BarViewInfo(mIcon, 30 /* barNumber */, R.string.debug_app, null),
+ new BarViewInfo(mIcon, 50 /* barNumber */, R.string.debug_app, null),
+ new BarViewInfo(mIcon, 5 /* barNumber */, R.string.debug_app, null),
+ new BarViewInfo(mIcon, 10 /* barNumber */, R.string.debug_app, null),
};
mPreference.initializeBarChart(mBarChartInfo);
@@ -278,7 +281,7 @@ public class BarChartPreferenceTest {
@Test
public void setBarViewInfos_validBarViewSummarySet_barViewShouldShowSummary() {
final BarViewInfo[] barViewsInfo = new BarViewInfo[]{
- new BarViewInfo(mIcon, 10 /* barNumber */, R.string.debug_app),
+ new BarViewInfo(mIcon, 10 /* barNumber */, R.string.debug_app, null),
};
mPreference.initializeBarChart(mBarChartInfo);
@@ -291,7 +294,8 @@ public class BarChartPreferenceTest {
@Test
public void setBarViewInfos_clickListenerForBarViewSet_barViewShouldHaveClickListener() {
- final BarViewInfo viewInfo = new BarViewInfo(mIcon, 30 /* barNumber */, R.string.debug_app);
+ final BarViewInfo viewInfo = new BarViewInfo(mIcon, 30 /* barNumber */, R.string.debug_app,
+ null);
viewInfo.setClickListener(v -> {
});
final BarViewInfo[] barViewsInfo = new BarViewInfo[]{viewInfo};
@@ -306,7 +310,8 @@ public class BarChartPreferenceTest {
@Test
public void onBindViewHolder_loadingStateIsTrue_shouldHideAllViews() {
- final BarViewInfo viewInfo = new BarViewInfo(mIcon, 30 /* barNumber */, R.string.debug_app);
+ final BarViewInfo viewInfo = new BarViewInfo(mIcon, 30 /* barNumber */, R.string.debug_app,
+ null);
viewInfo.setClickListener(v -> {
});
final BarViewInfo[] barViewsInfo = new BarViewInfo[]{viewInfo};
@@ -322,7 +327,8 @@ public class BarChartPreferenceTest {
@Test
public void onBindViewHolder_loadingStateIsFalse_shouldInitAnyView() {
- final BarViewInfo viewInfo = new BarViewInfo(mIcon, 30 /* barNumber */, R.string.debug_app);
+ final BarViewInfo viewInfo = new BarViewInfo(mIcon, 30 /* barNumber */, R.string.debug_app,
+ null);
viewInfo.setClickListener(v -> {
});
final BarViewInfo[] barViewsInfo = new BarViewInfo[]{viewInfo};