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

Commit 56726ca0 authored by jackqdyulei's avatar jackqdyulei
Browse files

Remove divider line for battery card preference

Use CardPreference directly here instead of preference category
Also clean up code and test a little bit.

Bug: 119618813
Test: RunSettingsRoboTests
Change-Id: I3ee2313c10e6e2e34609137f3dcb0391104377d5
parent 6da5e32b
Loading
Loading
Loading
Loading
+2 −4
Original line number Diff line number Diff line
@@ -28,10 +28,9 @@
        android:layout="@layout/battery_header"
        settings:controller="com.android.settings.fuelgauge.BatteryHeaderPreferenceController" />

    <PreferenceCategory
    <com.android.settings.widget.CardPreference
        android:key="battery_tip"
        android:title="@string/summary_placeholder"
        android:layout="@layout/preference_category_no_label"
        settings:controller="com.android.settings.fuelgauge.batterytip.BatteryTipPreferenceController" />

    <Preference
@@ -39,8 +38,7 @@
        android:key="battery_saver_summary"
        android:title="@string/battery_saver"
        settings:controller="com.android.settings.fuelgauge.BatterySaverController"
        settings:platform_slice="true"
        settings:allowDividerAbove="true" />
        settings:platform_slice="true" />

    <Preference
        android:fragment="com.android.settings.fuelgauge.SmartBatterySettings"
+6 −8
Original line number Diff line number Diff line
@@ -21,7 +21,6 @@ import android.os.Bundle;

import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
import androidx.preference.PreferenceGroup;
import androidx.preference.PreferenceScreen;

import com.android.settings.SettingsActivity;
@@ -32,6 +31,7 @@ import com.android.settings.fuelgauge.batterytip.actions.BatteryTipAction;
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
import com.android.settings.fuelgauge.batterytip.tips.SummaryTip;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.widget.CardPreference;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;

import java.util.HashMap;
@@ -56,7 +56,7 @@ public class BatteryTipPreferenceController extends BasePreferenceController {
    private MetricsFeatureProvider mMetricsFeatureProvider;
    private boolean mNeedUpdate;
    @VisibleForTesting
    PreferenceGroup mPreferenceGroup;
    CardPreference mCardPreference;
    @VisibleForTesting
    Context mPrefContext;
    InstrumentedPreferenceFragment mFragment;
@@ -89,12 +89,12 @@ public class BatteryTipPreferenceController extends BasePreferenceController {
    public void displayPreference(PreferenceScreen screen) {
        super.displayPreference(screen);
        mPrefContext = screen.getContext();
        mPreferenceGroup = (PreferenceGroup) screen.findPreference(getPreferenceKey());
        mCardPreference = screen.findPreference(getPreferenceKey());

        // Add summary tip in advance to avoid UI flakiness
        final SummaryTip summaryTip = new SummaryTip(BatteryTip.StateType.NEW,
                Estimate.AVERAGE_TIME_TO_DISCHARGE_UNKNOWN);
        mPreferenceGroup.addPreference(summaryTip.buildPreference(mPrefContext));
        summaryTip.updatePreference(mCardPreference);
    }

    public void updateBatteryTips(List<BatteryTip> batteryTips) {
@@ -110,14 +110,12 @@ public class BatteryTipPreferenceController extends BasePreferenceController {
            }
        }

        mPreferenceGroup.removeAll();
        for (int i = 0, size = batteryTips.size(); i < size; i++) {
            final BatteryTip batteryTip = mBatteryTips.get(i);
            batteryTip.sanityCheck(mContext);
            if (batteryTip.getState() != BatteryTip.StateType.INVISIBLE) {
                final Preference preference = batteryTip.buildPreference(mPrefContext);
                mBatteryTipMap.put(preference.getKey(), batteryTip);
                mPreferenceGroup.addPreference(preference);
                batteryTip.updatePreference(mCardPreference);
                mBatteryTipMap.put(mCardPreference.getKey(), batteryTip);
                batteryTip.log(mContext, mMetricsFeatureProvider);
                mNeedUpdate = batteryTip.needUpdate();
                break;
+2 −5
Original line number Diff line number Diff line
@@ -147,14 +147,11 @@ public abstract class BatteryTip implements Comparable<BatteryTip>, Parcelable {
     */
    public abstract void log(Context context, MetricsFeatureProvider metricsFeatureProvider);

    public Preference buildPreference(Context context) {
        Preference preference = new CardPreference(context);

        preference.setKey(getKey());
    public void updatePreference(Preference preference) {
        final Context context = preference.getContext();
        preference.setTitle(getTitle(context));
        preference.setSummary(getSummary(context));
        preference.setIcon(getIconId());
        return preference;
    }

    public boolean shouldShowDialog() {
+10 −30
Original line number Diff line number Diff line
@@ -44,6 +44,7 @@ import com.android.settings.core.InstrumentedPreferenceFragment;
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
import com.android.settings.fuelgauge.batterytip.tips.SummaryTip;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.widget.CardPreference;

import org.junit.Before;
import org.junit.Test;
@@ -72,17 +73,14 @@ public class BatteryTipPreferenceControllerTest {
    private BatteryTip mBatteryTip;
    @Mock
    private SettingsActivity mSettingsActivity;
    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
    private PreferenceManager mPreferenceManager;
    @Mock
    private InstrumentedPreferenceFragment mFragment;

    private Context mContext;
    private PreferenceGroup mPreferenceGroup;
    private CardPreference mCardPreference;
    private BatteryTipPreferenceController mBatteryTipPreferenceController;
    private List<BatteryTip> mOldBatteryTips;
    private List<BatteryTip> mNewBatteryTips;
    private Preference mPreference;
    private FakeFeatureFactory mFeatureFactory;

    @Before
@@ -90,12 +88,9 @@ public class BatteryTipPreferenceControllerTest {
        MockitoAnnotations.initMocks(this);
        mContext = RuntimeEnvironment.application;

        mPreferenceGroup = spy(new PreferenceCategory(mContext));
        mCardPreference = spy(new CardPreference(mContext));
        when(mPreferenceScreen.getContext()).thenReturn(mContext);
        when(mPreferenceGroup.getPreferenceManager()).thenReturn(mPreferenceManager);
        doReturn(mPreferenceGroup).when(mPreferenceScreen).findPreference(KEY_PREF);
        mPreference = new Preference(mContext);
        mPreference.setKey(KEY_TIP);
        doReturn(mCardPreference).when(mPreferenceScreen).findPreference(KEY_PREF);
        mFeatureFactory = FakeFeatureFactory.setupForTest();

        mOldBatteryTips = new ArrayList<>();
@@ -104,7 +99,7 @@ public class BatteryTipPreferenceControllerTest {
        mNewBatteryTips.add(new SummaryTip(BatteryTip.StateType.INVISIBLE, AVERAGE_TIME_MS));

        mBatteryTipPreferenceController = buildBatteryTipPreferenceController();
        mBatteryTipPreferenceController.mPreferenceGroup = mPreferenceGroup;
        mBatteryTipPreferenceController.mCardPreference = mCardPreference;
        mBatteryTipPreferenceController.mPrefContext = mContext;
    }

@@ -112,18 +107,7 @@ public class BatteryTipPreferenceControllerTest {
    public void testDisplayPreference_addSummaryTip() {
        mBatteryTipPreferenceController.displayPreference(mPreferenceScreen);

        assertOnlyContainsSummaryTip(mPreferenceGroup);
    }

    @Test
    public void testUpdateBatteryTips_updateTwice_firstShowSummaryTipThenRemoveIt() {
        // Display summary tip because its state is new
        mBatteryTipPreferenceController.updateBatteryTips(mOldBatteryTips);
        assertOnlyContainsSummaryTip(mPreferenceGroup);

        // Remove summary tip because its new state is invisible
        mBatteryTipPreferenceController.updateBatteryTips(mNewBatteryTips);
        assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(0);
        assertOnlyContainsSummaryTip(mCardPreference);
    }

    @Test
@@ -142,11 +126,11 @@ public class BatteryTipPreferenceControllerTest {
        mBatteryTipPreferenceController.saveInstanceState(bundle);

        final BatteryTipPreferenceController controller = buildBatteryTipPreferenceController();
        controller.mPreferenceGroup = mPreferenceGroup;
        controller.mCardPreference = mCardPreference;
        controller.mPrefContext = mContext;
        controller.restoreInstanceState(bundle);

        assertOnlyContainsSummaryTip(mPreferenceGroup);
        assertOnlyContainsSummaryTip(mCardPreference);
    }

    @Test
@@ -166,12 +150,11 @@ public class BatteryTipPreferenceControllerTest {
        when(mBatteryTip.getType()).thenReturn(SMART_BATTERY_MANAGER);
        List<BatteryTip> batteryTips = new ArrayList<>();
        batteryTips.add(mBatteryTip);
        doReturn(mPreference).when(mBatteryTip).buildPreference(any());
        doReturn(false).when(mBatteryTip).shouldShowDialog();
        doReturn(KEY_TIP).when(mBatteryTip).getKey();
        mBatteryTipPreferenceController.updateBatteryTips(batteryTips);

        mBatteryTipPreferenceController.handlePreferenceTreeClick(mPreference);
        mBatteryTipPreferenceController.handlePreferenceTreeClick(mCardPreference);

        verify(mBatteryTipListener).onBatteryTipHandled(mBatteryTip);
    }
@@ -182,10 +165,7 @@ public class BatteryTipPreferenceControllerTest {
                BasePreferenceController.AVAILABLE_UNSEARCHABLE);
    }

    private void assertOnlyContainsSummaryTip(final PreferenceGroup preferenceGroup) {
        assertThat(preferenceGroup.getPreferenceCount()).isEqualTo(1);

        final Preference preference = preferenceGroup.getPreference(0);
    private void assertOnlyContainsSummaryTip(CardPreference preference) {
        assertThat(preference.getTitle()).isEqualTo(
                mContext.getString(R.string.battery_tip_summary_title));
        assertThat(preference.getSummary()).isEqualTo(
+2 −1
Original line number Diff line number Diff line
@@ -56,7 +56,8 @@ public class BatteryTipTest {

    @Test
    public void buildPreference() {
        final Preference preference = mBatteryTip.buildPreference(mContext);
        final Preference preference = new Preference(mContext);
        mBatteryTip.updatePreference(preference);

        assertThat(preference.getTitle()).isEqualTo(TITLE);
        assertThat(preference.getSummary()).isEqualTo(SUMMARY);