diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffData.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffData.java index caf2cf3cd7e..59903a0e362 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffData.java +++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffData.java @@ -32,9 +32,6 @@ public class BatteryDiffData { @NonNull List systemDiffEntries) { mAppEntries = appDiffEntries; mSystemEntries = systemDiffEntries; - setTotalConsumePowerForAllEntries(mAppEntries); - setTotalConsumePowerForAllEntries(mSystemEntries); - sortEntries(); } public List getAppDiffEntryList() { @@ -45,6 +42,18 @@ public class BatteryDiffData { return mSystemEntries; } + // Sorts entries based on consumed percentage. + void sortEntries() { + Collections.sort(mAppEntries, BatteryDiffEntry.COMPARATOR); + Collections.sort(mSystemEntries, BatteryDiffEntry.COMPARATOR); + } + + // Sets total consume power for app and system entries separately. + void setTotalConsumePower() { + setTotalConsumePowerForAllEntries(mAppEntries); + setTotalConsumePowerForAllEntries(mSystemEntries); + } + // Sets total consume power for each entry. private void setTotalConsumePowerForAllEntries(List batteryDiffEntries) { double totalConsumePower = 0.0; @@ -55,10 +64,4 @@ public class BatteryDiffData { batteryDiffEntry.setTotalConsumePower(totalConsumePower); } } - - // Sorts entries based on consumed percentage. - private void sortEntries() { - Collections.sort(mAppEntries, BatteryDiffEntry.COMPARATOR); - Collections.sort(mSystemEntries, BatteryDiffEntry.COMPARATOR); - } } diff --git a/src/com/android/settings/fuelgauge/batteryusage/DataProcessor.java b/src/com/android/settings/fuelgauge/batteryusage/DataProcessor.java index e6b37505a93..2db6849a9d9 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/DataProcessor.java +++ b/src/com/android/settings/fuelgauge/batteryusage/DataProcessor.java @@ -546,7 +546,7 @@ public final class DataProcessor { insertDailyUsageDiffData(hourlyBatteryLevelsPerDay, resultMap); // Insert diff data [SELECTED_INDEX_ALL][SELECTED_INDEX_ALL]. insertAllUsageDiffData(resultMap); - purgeFakeAndHiddenPackages(context, resultMap); + processBatteryDiffData(context, resultMap); if (!isUsageMapValid(resultMap, hourlyBatteryLevelsPerDay)) { return null; } @@ -651,7 +651,7 @@ public final class DataProcessor { allUsageMap.put(SELECTED_INDEX_ALL, generateBatteryDiffData(context, getBatteryHistListFromFromStatsService(context))); resultMap.put(SELECTED_INDEX_ALL, allUsageMap); - purgeFakeAndHiddenPackages(context, resultMap); + processBatteryDiffData(context, resultMap); return resultMap; } @@ -1232,8 +1232,11 @@ public final class DataProcessor { } } - // Removes low percentage data and fake usage data, which will be zero value. - private static void purgeFakeAndHiddenPackages( + // Process every battery diff data in the battery usage result map. + // (1) Removes low percentage data and fake usage data, which will be zero value. + // (2) Sets total consume power, so the usage percentage is updated. + // (3) Sorts the result. + private static void processBatteryDiffData( final Context context, final Map> resultMap) { final Set hideBackgroundUsageTimeSet = @@ -1246,16 +1249,18 @@ public final class DataProcessor { .getHideApplicationSet(context); resultMap.keySet().forEach(dailyKey -> { final Map dailyUsageMap = resultMap.get(dailyKey); - dailyUsageMap.values().forEach(diffEntryLists -> { - if (diffEntryLists == null) { + dailyUsageMap.values().forEach(batteryDiffData -> { + if (batteryDiffData == null) { return; } purgeFakeAndHiddenPackages( - diffEntryLists.getAppDiffEntryList(), hideBackgroundUsageTimeSet, + batteryDiffData.getAppDiffEntryList(), hideBackgroundUsageTimeSet, hideApplicationSet); purgeFakeAndHiddenPackages( - diffEntryLists.getSystemDiffEntryList(), hideBackgroundUsageTimeSet, + batteryDiffData.getSystemDiffEntryList(), hideBackgroundUsageTimeSet, hideApplicationSet); + batteryDiffData.setTotalConsumePower(); + batteryDiffData.sortEntries(); }); }); } diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java index 5c3da4aedff..1d06e608e26 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java @@ -105,6 +105,8 @@ public final class BatteryUsageBreakdownControllerTest { mBatteryDiffEntry = spy(mBatteryDiffEntry); mBatteryUsageBreakdownController.mBatteryDiffData = new BatteryDiffData(Arrays.asList(mBatteryDiffEntry), Arrays.asList()); + mBatteryUsageBreakdownController.mBatteryDiffData.setTotalConsumePower(); + mBatteryUsageBreakdownController.mBatteryDiffData.sortEntries(); // Adds fake testing data. BatteryDiffEntry.sResourceCache.put( "fakeBatteryDiffEntryKey", diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/DataProcessorTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/DataProcessorTest.java index a44768ee3bd..b1695ebf654 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/DataProcessorTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/DataProcessorTest.java @@ -1076,7 +1076,7 @@ public class DataProcessorTest { .get(DataProcessor.SELECTED_INDEX_ALL); assertBatteryDiffEntry( resultDiffData.getAppDiffEntryList().get(0), currentUserId, /*uid=*/ 2L, - ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*consumePercentage=*/ 50.0, + ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*consumePercentage=*/ 100.0, /*foregroundUsageConsumePower=*/ 0, /*foregroundServiceUsageConsumePower=*/ 0, /*backgroundUsageConsumePower=*/ 5, /*cachedUsageConsumePower=*/ 5, /*foregroundUsageTimeInMs=*/ 10, /*backgroundUsageTimeInMs=*/ 20); @@ -1226,6 +1226,8 @@ public class DataProcessorTest { final BatteryDiffData batteryDiffData = DataProcessor.generateBatteryDiffData(mContext, DataProcessor.convertToBatteryHistEntry(batteryEntryList, mBatteryUsageStats)); + batteryDiffData.setTotalConsumePower(); + batteryDiffData.sortEntries(); assertBatteryDiffEntry( batteryDiffData.getAppDiffEntryList().get(0), 0, /*uid=*/ 2L,