Fix incorrect battery history merging logic to cause data losing
Bug: 184807417
Test: make SettingsRoboTests
Test: make SettingsGoogleRoboTests
Change-Id: Ic26799f4d95b9f990e873ee26a42d6cc0c404659
diff --git a/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java b/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java
index 649b410..ff74477 100644
--- a/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java
@@ -203,10 +203,11 @@
Collections.sort(batteryHistoryKeyList);
validateSlotTimestamp(batteryHistoryKeyList);
mBatteryHistoryKeys = new long[CHART_KEY_ARRAY_SIZE];
- final int elementSize = Math.min(batteryHistoryKeyList.size(), CHART_KEY_ARRAY_SIZE);
- final int offset = CHART_KEY_ARRAY_SIZE - elementSize;
+ final int listSize = batteryHistoryKeyList.size();
+ final int elementSize = Math.min(listSize, CHART_KEY_ARRAY_SIZE);
for (int index = 0; index < elementSize; index++) {
- mBatteryHistoryKeys[index + offset] = batteryHistoryKeyList.get(index);
+ mBatteryHistoryKeys[CHART_KEY_ARRAY_SIZE - index - 1] =
+ batteryHistoryKeyList.get(listSize - index - 1);
}
// Generates the battery history levels.
@@ -489,7 +490,7 @@
} else {
usageTimeSummary = buildUsageTimeInfo(totalUsageTimeInMs, false);
// Shows background usage time if it is larger than a minute.
- if (backgroundUsageTimeInMs >= DateUtils.MINUTE_IN_MILLIS) {
+ if (backgroundUsageTimeInMs > 0) {
usageTimeSummary +=
"\n" + buildUsageTimeInfo(backgroundUsageTimeInMs, true);
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryChartPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryChartPreferenceControllerTest.java
index 9cf45ea..d687c5d 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryChartPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryChartPreferenceControllerTest.java
@@ -370,7 +370,8 @@
pref, createBatteryDiffEntry(
/*foregroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS,
/*backgroundUsageTimeInMs=*/ 200));
- assertThat(pref.getSummary()).isEqualTo("Total: 1 min");
+ assertThat(pref.getSummary())
+ .isEqualTo("Total: 1 min\nBackground: less than a min");
}
@Test