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

Commit b9b3dcc0 authored by Zaiyue Xue's avatar Zaiyue Xue
Browse files

Purging battery diff data before calculating perctage and sort.

Bug: 261820602
Test: manual
Change-Id: I958995721238f32d0360861559ca5e1938ce6d3a
parent 0645cbbb
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,