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

Commit 691c39b8 authored by Zaiyue Xue's avatar Zaiyue Xue Committed by Android (Google) Code Review
Browse files

Merge "[Battery usage U] Calculate each item pertage for App tab and System tab separately."

parents fe325000 131958c8
Loading
Loading
Loading
Loading
+11 −15
Original line number Diff line number Diff line
@@ -26,23 +26,14 @@ public class BatteryDiffData {
    private final List<BatteryDiffEntry> mAppEntries;
    private final List<BatteryDiffEntry> mSystemEntries;

    /** Constructor for the diff entries which already have totalConsumePower value. */
    /** Constructor for the diff entries. */
    public BatteryDiffData(
            @NonNull List<BatteryDiffEntry> appDiffEntries,
            @NonNull List<BatteryDiffEntry> systemDiffEntries) {
        mAppEntries = appDiffEntries;
        mSystemEntries = systemDiffEntries;
        sortEntries();
    }

    /** Constructor for the diff entries which have not set totalConsumePower value. */
    public BatteryDiffData(
            @NonNull List<BatteryDiffEntry> appDiffEntries,
            @NonNull List<BatteryDiffEntry> systemDiffEntries,
            final double totalConsumePower) {
        mAppEntries = appDiffEntries;
        mSystemEntries = systemDiffEntries;
        setTotalConsumePowerForAllEntries(totalConsumePower);
        setTotalConsumePowerForAllEntries(mAppEntries);
        setTotalConsumePowerForAllEntries(mSystemEntries);
        sortEntries();
    }

@@ -55,9 +46,14 @@ public class BatteryDiffData {
    }

    // Sets total consume power for each entry.
    private void setTotalConsumePowerForAllEntries(final double totalConsumePower) {
        mAppEntries.forEach(diffEntry -> diffEntry.setTotalConsumePower(totalConsumePower));
        mSystemEntries.forEach(diffEntry -> diffEntry.setTotalConsumePower(totalConsumePower));
    private void setTotalConsumePowerForAllEntries(List<BatteryDiffEntry> batteryDiffEntries) {
        double totalConsumePower = 0.0;
        for (BatteryDiffEntry batteryDiffEntry : batteryDiffEntries) {
            totalConsumePower += batteryDiffEntry.mConsumePower;
        }
        for (BatteryDiffEntry batteryDiffEntry : batteryDiffEntries) {
            batteryDiffEntry.setTotalConsumePower(totalConsumePower);
        }
    }

    // Sorts entries based on consumed percentage.
+5 −18
Original line number Diff line number Diff line
@@ -468,13 +468,11 @@ public final class DataProcessor {
                userHandle != null ? userHandle.getIdentifier() : Integer.MIN_VALUE;
        final List<BatteryDiffEntry> appEntries = new ArrayList<>();
        final List<BatteryDiffEntry> systemEntries = new ArrayList<>();
        double totalConsumePower = 0f;
        double consumePowerFromOtherUsers = 0f;

        for (BatteryHistEntry entry : batteryHistEntryList) {
            final boolean isFromOtherUsers = isConsumedFromOtherUsers(
                    currentUserId, workProfileUserId, entry);
            totalConsumePower += entry.mConsumePower;
            if (isFromOtherUsers) {
                consumePowerFromOtherUsers += entry.mConsumePower;
            } else {
@@ -504,7 +502,7 @@ public final class DataProcessor {
            return null;
        }

        return new BatteryDiffData(appEntries, systemEntries, totalConsumePower);
        return new BatteryDiffData(appEntries, systemEntries);
    }

    /**
@@ -588,9 +586,7 @@ public final class DataProcessor {
                            || (entry.getConsumedPower() == 0
                            && (foregroundMs != 0 || backgroundMs != 0));
                })
                .map(entry -> ConvertUtils.convertToBatteryHistEntry(
                                entry,
                                batteryUsageStats))
                .map(entry -> ConvertUtils.convertToBatteryHistEntry(entry, batteryUsageStats))
                .collect(Collectors.toList());
    }

@@ -949,7 +945,6 @@ public final class DataProcessor {
        allBatteryHistEntryKeys.addAll(nextBatteryHistMap.keySet());
        allBatteryHistEntryKeys.addAll(nextTwoBatteryHistMap.keySet());

        double totalConsumePower = 0.0;
        double consumePowerFromOtherUsers = 0f;
        // Calculates all packages diff usage data in a specific time slot.
        for (String key : allBatteryHistEntryKeys) {
@@ -1028,7 +1023,6 @@ public final class DataProcessor {
                backgroundUsageConsumePower = backgroundUsageConsumePower * ratio;
                cachedUsageConsumePower = cachedUsageConsumePower * ratio;
            }
            totalConsumePower += consumePower;

            final boolean isFromOtherUsers = isConsumedFromOtherUsers(
                    currentUserId, workProfileUserId, selectedBatteryEntry);
@@ -1061,9 +1055,7 @@ public final class DataProcessor {
            return null;
        }

        final BatteryDiffData resultDiffData =
                new BatteryDiffData(appEntries, systemEntries, totalConsumePower);
        return resultDiffData;
        return new BatteryDiffData(appEntries, systemEntries);
    }

    private static boolean isConsumedFromOtherUsers(
@@ -1078,7 +1070,6 @@ public final class DataProcessor {
    @Nullable
    private static BatteryDiffData getAccumulatedUsageDiffData(
            final Collection<BatteryDiffData> diffEntryListData) {
        double totalConsumePower = 0f;
        final Map<String, BatteryDiffEntry> diffEntryMap = new HashMap<>();
        final List<BatteryDiffEntry> appEntries = new ArrayList<>();
        final List<BatteryDiffEntry> systemEntries = new ArrayList<>();
@@ -1089,18 +1080,14 @@ public final class DataProcessor {
            }
            for (BatteryDiffEntry entry : diffEntryList.getAppDiffEntryList()) {
                computeUsageDiffDataPerEntry(entry, diffEntryMap);
                totalConsumePower += entry.mConsumePower;
            }
            for (BatteryDiffEntry entry : diffEntryList.getSystemDiffEntryList()) {
                computeUsageDiffDataPerEntry(entry, diffEntryMap);
                totalConsumePower += entry.mConsumePower;
            }
        }

        final Collection<BatteryDiffEntry> diffEntryList = diffEntryMap.values();
        for (BatteryDiffEntry entry : diffEntryList) {
            // Sets total daily consume power data into all BatteryDiffEntry.
            entry.setTotalConsumePower(totalConsumePower);
            if (entry.isSystemEntry()) {
                systemEntries.add(entry);
            } else {
+2 −2
Original line number Diff line number Diff line
@@ -211,7 +211,7 @@ public final class BatteryUsageBreakdownControllerTest {
                        SettingsEnums.ACTION_BATTERY_USAGE_SYSTEM_ITEM,
                        SettingsEnums.OPEN_BATTERY_USAGE,
                        /* package name */ "none",
                        /* percentage of total */ 0);
                        /* percentage of total */ 100);
    }

    @Test
@@ -227,7 +227,7 @@ public final class BatteryUsageBreakdownControllerTest {
                        SettingsEnums.ACTION_BATTERY_USAGE_APP_ITEM,
                        SettingsEnums.OPEN_BATTERY_USAGE,
                        /* package name */ "none",
                        /* percentage of total */ 0);
                        /* percentage of total */ 100);
    }

    @Test
+10 −10
Original line number Diff line number Diff line
@@ -671,19 +671,19 @@ public class DataProcessorTest {
                        .get(DataProcessor.SELECTED_INDEX_ALL);
        assertBatteryDiffEntry(
                resultDiffData.getAppDiffEntryList().get(0), currentUserId, /*uid=*/ 2L,
                ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*consumePercentage=*/ 40.0,
                ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*consumePercentage=*/ 50.0,
                /*foregroundUsageConsumePower=*/ 14, /*foregroundServiceUsageConsumePower=*/ 9,
                /*backgroundUsageConsumePower=*/ 9, /*cachedUsageConsumePower=*/ 8,
                /*foregroundUsageTimeInMs=*/ 30, /*backgroundUsageTimeInMs=*/ 40);
        assertBatteryDiffEntry(
                resultDiffData.getAppDiffEntryList().get(1), currentUserId, /*uid=*/ 4L,
                ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*consumePercentage=*/ 40.0,
                ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*consumePercentage=*/ 50.0,
                /*foregroundUsageConsumePower=*/ 8, /*foregroundServiceUsageConsumePower=*/ 8,
                /*backgroundUsageConsumePower=*/ 8, /*cachedUsageConsumePower=*/ 8,
                /*foregroundUsageTimeInMs=*/ 5, /*backgroundUsageTimeInMs=*/ 5);
        assertBatteryDiffEntry(
                resultDiffData.getSystemDiffEntryList().get(0), currentUserId, /*uid=*/ 3L,
                ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY, /*consumePercentage=*/ 20.0,
                ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY, /*consumePercentage=*/ 100.0,
                /*foregroundUsageConsumePower=*/ 5, /*foregroundServiceUsageConsumePower=*/ 5,
                /*backgroundUsageConsumePower=*/ 5, /*cachedUsageConsumePower=*/ 5,
                /*foregroundUsageTimeInMs=*/ 50, /*backgroundUsageTimeInMs=*/ 60);
@@ -697,19 +697,19 @@ public class DataProcessorTest {
        resultDiffData = resultMap.get(1).get(DataProcessor.SELECTED_INDEX_ALL);
        assertBatteryDiffEntry(
                resultDiffData.getAppDiffEntryList().get(0), currentUserId, /*uid=*/ 4L,
                ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*consumePercentage=*/ 50.0,
                ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*consumePercentage=*/ 66.66666666666666,
                /*foregroundUsageConsumePower=*/ 8, /*foregroundServiceUsageConsumePower=*/ 8,
                /*backgroundUsageConsumePower=*/ 8, /*cachedUsageConsumePower=*/ 8,
                /*foregroundUsageTimeInMs=*/ 5, /*backgroundUsageTimeInMs=*/ 5);
        assertBatteryDiffEntry(
                resultDiffData.getAppDiffEntryList().get(1), currentUserId, /*uid=*/ 2L,
                ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*consumePercentage=*/ 25.0,
                ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*consumePercentage=*/ 33.33333333333333,
                /*foregroundUsageConsumePower=*/ 9, /*foregroundServiceUsageConsumePower=*/ 4,
                /*backgroundUsageConsumePower=*/ 4, /*cachedUsageConsumePower=*/ 3,
                /*foregroundUsageTimeInMs=*/ 15, /*backgroundUsageTimeInMs=*/ 15);
        assertBatteryDiffEntry(
                resultDiffData.getSystemDiffEntryList().get(0), currentUserId, /*uid=*/ 3L,
                ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY, /*consumePercentage=*/ 25.0,
                ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY, /*consumePercentage=*/ 100.0,
                /*foregroundUsageConsumePower=*/ 5, /*foregroundServiceUsageConsumePower=*/ 5,
                /*backgroundUsageConsumePower=*/ 5, /*cachedUsageConsumePower=*/ 5,
                /*foregroundUsageTimeInMs=*/ 50, /*backgroundUsageTimeInMs=*/ 60);
@@ -830,14 +830,14 @@ public class DataProcessorTest {
                        .get(DataProcessor.SELECTED_INDEX_ALL);
        assertBatteryDiffEntry(
                resultDiffData.getAppDiffEntryList().get(0), currentUserId, /*uid=*/ 1L,
                ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*consumePercentage=*/ 25.0,
                ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*consumePercentage=*/ 100.0,
                /*foregroundUsageConsumePower=*/ 5, /*foregroundServiceUsageConsumePower=*/ 5,
                /*backgroundUsageConsumePower=*/ 5, /*cachedUsageConsumePower=*/ 5,
                /*foregroundUsageTimeInMs=*/ 10, /*backgroundUsageTimeInMs=*/ 10);
        assertBatteryDiffEntry(
                resultDiffData.getSystemDiffEntryList().get(0), BatteryUtils.UID_OTHER_USERS,
                /*uid=*/ BatteryUtils.UID_OTHER_USERS, ConvertUtils.CONSUMER_TYPE_UID_BATTERY,
                /*consumePercentage=*/ 75.0,
                /*consumePercentage=*/ 100.0,
                /*foregroundUsageConsumePower=*/ 0, /*foregroundServiceUsageConsumePower=*/ 0,
                /*backgroundUsageConsumePower=*/ 0, /*cachedUsageConsumePower=*/ 0,
                /*foregroundUsageTimeInMs=*/ 0, /*backgroundUsageTimeInMs=*/ 0);
@@ -1193,7 +1193,7 @@ public class DataProcessorTest {

        assertBatteryDiffEntry(
                batteryDiffData.getAppDiffEntryList().get(0), 0, /*uid=*/ 2L,
                ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*consumePercentage=*/ 25.0,
                ConvertUtils.CONSUMER_TYPE_UID_BATTERY, /*consumePercentage=*/ 100.0,
                /*foregroundUsageConsumePower=*/ 0.5, /*foregroundServiceUsageConsumePower=*/ 0,
                /*backgroundUsageConsumePower=*/ 0, /*cachedUsageConsumePower=*/ 0,
                /*foregroundUsageTimeInMs=*/ 20, /*backgroundUsageTimeInMs=*/ 20);
@@ -1205,7 +1205,7 @@ public class DataProcessorTest {
                /*foregroundUsageTimeInMs=*/ 30, /*backgroundUsageTimeInMs=*/ 40);
        assertBatteryDiffEntry(
                batteryDiffData.getSystemDiffEntryList().get(0), 0, /*uid=*/ 4L,
                ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY, /*consumePercentage=*/ 75.0,
                ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY, /*consumePercentage=*/ 100.0,
                /*foregroundUsageConsumePower=*/ 0.9, /*foregroundServiceUsageConsumePower=*/ 0.2,
                /*backgroundUsageConsumePower=*/ 0.3, /*cachedUsageConsumePower=*/ 0.1,
                /*foregroundUsageTimeInMs=*/ 10, /*backgroundUsageTimeInMs=*/ 10);