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