From 56726ca04c99a9d8b1862d2384c250f8a4309690 Mon Sep 17 00:00:00 2001 From: jackqdyulei Date: Fri, 11 Jan 2019 11:49:28 -0800 Subject: [PATCH] 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 --- res/xml/power_usage_summary.xml | 6 +-- .../BatteryTipPreferenceController.java | 14 +++---- .../fuelgauge/batterytip/tips/BatteryTip.java | 7 +--- .../BatteryTipPreferenceControllerTest.java | 40 +++++-------------- .../batterytip/tips/BatteryTipTest.java | 3 +- 5 files changed, 22 insertions(+), 48 deletions(-) diff --git a/res/xml/power_usage_summary.xml b/res/xml/power_usage_summary.xml index 14d8edaaa9e..a981a9bbb20 100644 --- a/res/xml/power_usage_summary.xml +++ b/res/xml/power_usage_summary.xml @@ -28,10 +28,9 @@ android:layout="@layout/battery_header" settings:controller="com.android.settings.fuelgauge.BatteryHeaderPreferenceController" /> - + settings:platform_slice="true" /> 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; diff --git a/src/com/android/settings/fuelgauge/batterytip/tips/BatteryTip.java b/src/com/android/settings/fuelgauge/batterytip/tips/BatteryTip.java index 64737a7c9f3..de71ab2d98f 100644 --- a/src/com/android/settings/fuelgauge/batterytip/tips/BatteryTip.java +++ b/src/com/android/settings/fuelgauge/batterytip/tips/BatteryTip.java @@ -147,14 +147,11 @@ public abstract class BatteryTip implements Comparable, 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() { diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceControllerTest.java index 5d45045c038..b68a8f57dd7 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceControllerTest.java @@ -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 mOldBatteryTips; private List 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 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( diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/BatteryTipTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/BatteryTipTest.java index 3e18bf06d62..87fc0dddb77 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/BatteryTipTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/tips/BatteryTipTest.java @@ -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);