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

Commit 919f6ea4 authored by Joel Galenson's avatar Joel Galenson Committed by tmfang
Browse files

Hide the bar chart details text when no string is provided.

Currently the bar chart crashes when no detail text is passed.  This
instead hides the text in that case.

Bug: 117623686
Test: View chart with and without detail string.
Change-Id: I227201af9615b6ec190c8688151cd93cfe058bfb
parent 891c39ba
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -165,9 +165,13 @@ public class BarChartPreference extends Preference {

    private void bindChartDetailsView(PreferenceViewHolder holder) {
        final Button detailsView = (Button) holder.findViewById(R.id.bar_chart_details);
        if (mDetailsId == 0) {
            detailsView.setVisibility(View.GONE);
        } else {
            detailsView.setText(mDetailsId);
            detailsView.setOnClickListener(mDetailsOnClickListener);
        }
    }

    private void updateBarChart(PreferenceViewHolder holder) {
        for (int index = 0; index < MAXIMUM_BAR_VIEWS; index++) {
+15 −10
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ public class BarChartPreferenceTest {
    private BarView mBarView2;
    private BarView mBarView3;
    private BarView mBarView4;
    private TextView mDetailsView;
    private PreferenceViewHolder mHolder;
    private BarChartPreference mPreference;

@@ -51,14 +52,13 @@ public class BarChartPreferenceTest {
        mHolder = PreferenceViewHolder.createInstanceForTests(mBarChartView);
        mPreference = new BarChartPreference(mContext, null /* attrs */);
        mPreference.setBarChartTitle(R.string.debug_app);
        mPreference.setBarChartDetails(R.string.debug_app);


        mIcon = mContext.getDrawable(R.drawable.ic_menu);
        mBarView1 = (BarView) mBarChartView.findViewById(R.id.bar_view1);
        mBarView2 = (BarView) mBarChartView.findViewById(R.id.bar_view2);
        mBarView3 = (BarView) mBarChartView.findViewById(R.id.bar_view3);
        mBarView4 = (BarView) mBarChartView.findViewById(R.id.bar_view4);
        mDetailsView = (TextView) mBarChartView.findViewById(R.id.bar_chart_details);
    }

    @Test
@@ -73,26 +73,31 @@ public class BarChartPreferenceTest {
    }

    @Test
    public void setBarChartDetailsRes_setDetailsRes_showInBarChartDetails() {
        final TextView detailsView = (TextView) mBarChartView.findViewById(R.id.bar_chart_details);
    public void onBindViewHolder_notSetDetailsRes_barChartDetailsViewIsGone() {
        // We don't call BarChartPreference#setBarChartDetails
        mPreference.onBindViewHolder(mHolder);

        assertThat(mDetailsView.getVisibility()).isEqualTo(View.GONE);
    }

    @Test
    public void setBarChartDetailsRes_setDetailsRes_showInBarChartDetails() {
        mPreference.setBarChartDetails(R.string.debug_app);
        mPreference.onBindViewHolder(mHolder);

        assertThat(detailsView.getVisibility()).isEqualTo(View.VISIBLE);
        assertThat(detailsView.getText()).isEqualTo(mContext.getText(R.string.debug_app));
        assertThat(mDetailsView.getVisibility()).isEqualTo(View.VISIBLE);
        assertThat(mDetailsView.getText()).isEqualTo(mContext.getText(R.string.debug_app));
    }

    @Test
    public void setBarChartDetailsClickListener_setClickListener_detailsViewAttachClickListener() {
        final TextView detailsView = (TextView) mBarChartView.findViewById(R.id.bar_chart_details);

        mPreference.setBarChartDetails(R.string.debug_app);
        mPreference.setBarChartDetailsClickListener(v -> {
        });
        mPreference.onBindViewHolder(mHolder);

        assertThat(detailsView.getVisibility()).isEqualTo(View.VISIBLE);
        assertThat(detailsView.hasOnClickListeners()).isTrue();
        assertThat(mDetailsView.getVisibility()).isEqualTo(View.VISIBLE);
        assertThat(mDetailsView.hasOnClickListeners()).isTrue();
    }

    @Test