Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c3d11c8f authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Purging battery diff data before calculating perctage and sort."

parents 11a48534 b9b3dcc0
Loading
Loading
Loading
Loading
+12 −9
Original line number Diff line number Diff line
@@ -32,9 +32,6 @@ public class BatteryDiffData {
            @NonNull List<BatteryDiffEntry> systemDiffEntries) {
        mAppEntries = appDiffEntries;
        mSystemEntries = systemDiffEntries;
        setTotalConsumePowerForAllEntries(mAppEntries);
        setTotalConsumePowerForAllEntries(mSystemEntries);
        sortEntries();
    }

    public List<BatteryDiffEntry> 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<BatteryDiffEntry> 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);
    }
}
+13 −8
Original line number Diff line number Diff line
@@ -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<Integer, Map<Integer, BatteryDiffData>> resultMap) {
        final Set<CharSequence> hideBackgroundUsageTimeSet =
@@ -1246,16 +1249,18 @@ public final class DataProcessor {
                        .getHideApplicationSet(context);
        resultMap.keySet().forEach(dailyKey -> {
            final Map<Integer, BatteryDiffData> 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();
            });
        });
    }
+2 −0
Original line number Diff line number Diff line
@@ -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",
+3 −1
Original line number Diff line number Diff line
@@ -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,