From 5e578ddd13c3599b9a3208f3409e209168a4f790 Mon Sep 17 00:00:00 2001 From: ykhung Date: Sun, 25 Apr 2021 16:09:59 +0800 Subject: [PATCH] Fix incorrect battery history merging logic to cause data losing Bug: 184807417 Test: make SettingsRoboTests Test: make SettingsGoogleRoboTests Change-Id: Ic26799f4d95b9f990e873ee26a42d6cc0c404659 --- .../fuelgauge/BatteryChartPreferenceController.java | 9 +++++---- .../fuelgauge/BatteryChartPreferenceControllerTest.java | 3 ++- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java b/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java index 649b410c9e2..ff7447725fc 100644 --- a/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java +++ b/src/com/android/settings/fuelgauge/BatteryChartPreferenceController.java @@ -203,10 +203,11 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll 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 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll } 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 9cf45ea9a1b..d687c5dad68 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 @@ public final class BatteryChartPreferenceControllerTest { 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