Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9842425f authored by Joel Galenson's avatar Joel Galenson
Browse files

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
parent 6693dc93
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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
+9 −1
Original line number Diff line number Diff line
@@ -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;
    }
+6 −3
Original line number Diff line number Diff line
@@ -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)
+32 −26
Original line number Diff line number Diff line
@@ -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};