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
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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};
|
||||
|
||||
Reference in New Issue
Block a user