diff options
| author | 2019-03-05 14:14:14 -0800 | |
|---|---|---|
| committer | 2019-03-05 14:14:14 -0800 | |
| commit | 9842425fd8d4b4d703a8b209ebacee09481dd879 (patch) | |
| tree | 5dc6a186651bac454c516c31714247b9836e9c32 | |
| parent | 6693dc93759002b20c349ce8093eb7726315001a (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
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}; |