diff --git a/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceController.java b/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceController.java index 69fc0f1a2c9..249bf9b3f57 100644 --- a/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceController.java +++ b/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceController.java @@ -91,6 +91,9 @@ public class BatteryTipPreferenceController extends BasePreferenceController { } public void updateBatteryTips(List batteryTips) { + if (batteryTips == null) { + return; + } if (mBatteryTips == null) { mBatteryTips = batteryTips; } else { @@ -100,7 +103,6 @@ public class BatteryTipPreferenceController extends BasePreferenceController { } } - //TODO(b/70570352): try to reuse the existing preference rather than remove and add. mPreferenceGroup.removeAll(); for (int i = 0, size = batteryTips.size(); i < size; i++) { final BatteryTip batteryTip = mBatteryTips.get(i); 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 8a189e2e9c1..90d00fcccb9 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batterytip/BatteryTipPreferenceControllerTest.java @@ -149,6 +149,19 @@ public class BatteryTipPreferenceControllerTest { assertOnlyContainsSummaryTip(mPreferenceGroup); } + @Test + public void testRestoreFromNull_shouldNotCrash() { + final Bundle bundle = new Bundle(); + // Battery tip list is null at this time + mBatteryTipPreferenceController.saveInstanceState(bundle); + + final BatteryTipPreferenceController controller = new BatteryTipPreferenceController( + mContext, KEY_PREF, mSettingsActivity, mFragment, mBatteryTipListener); + + // Should not crash + controller.restoreInstanceState(bundle); + } + @Test public void testHandlePreferenceTreeClick_noDialog_invokeCallback() { when(mBatteryTip.getType()).thenReturn(SMART_BATTERY_MANAGER);