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

Commit a245188a authored by jackqdyulei's avatar jackqdyulei
Browse files

Distribute the misc among all the apps

Distribute it in:
1. Battery main page(PowerUsageSummary)
2. Advanced battery page(PowerUsageAdvanced)

Bug: 37487061
Test: RunSettingsRoboTests
Change-Id: Id1810b81a6b380d908bcdc18421530e938578c37
parent e5fa4cd4
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -128,9 +128,8 @@ public class BatteryUtils {
            final BatterySipper sipper = sippers.get(i);
            if (shouldHideSipper(sipper)) {
                sippers.remove(i);
                if (sipper.drainType != BatterySipper.DrainType.OVERCOUNTED
                        && sipper.drainType != BatterySipper.DrainType.UNACCOUNTED) {
                    // Don't add it if it is overcounted or unaccounted
                if (sipper.drainType != BatterySipper.DrainType.OVERCOUNTED) {
                    // Don't add it if it is overcounted
                    totalPowerMah += sipper.totalPowerMah;
                }
            }
+19 −3
Original line number Diff line number Diff line
@@ -69,8 +69,7 @@ public class PowerUsageAdvanced extends PowerUsageBase {
            UsageType.UNACCOUNTED,
            UsageType.OVERCOUNTED};

    @VisibleForTesting
    BatteryUtils mBatteryUtils;
    private BatteryUtils mBatteryUtils;
    private BatteryHistoryPreference mHistPref;
    private PreferenceGroup mUsageListGroup;
    private PowerUsageFeatureProvider mPowerUsageFeatureProvider;
@@ -256,8 +255,10 @@ public class PowerUsageAdvanced extends PowerUsageBase {
        final List<PowerUsageData> batteryDataList = new ArrayList<>(batteryDataMap.values());
        final int dischargeAmount = statusHelper.getStats().getDischargeAmount(STATUS_TYPE);
        final double totalPower = statusHelper.getTotalPower();
        final double hiddenPower = calculateHiddenPower(batteryDataList);
        for (final PowerUsageData usageData : batteryDataList) {
            usageData.percentage = (usageData.totalPowerMah / totalPower) * dischargeAmount;
            usageData.percentage = mBatteryUtils.calculateBatteryPercent(usageData.totalPowerMah,
                    totalPower, hiddenPower, dischargeAmount);
            updateUsageDataSummary(usageData, totalPower, dischargeAmount);
        }

@@ -267,6 +268,17 @@ public class PowerUsageAdvanced extends PowerUsageBase {
        return batteryDataList;
    }

    @VisibleForTesting
    double calculateHiddenPower(List<PowerUsageData> batteryDataList) {
        for (final PowerUsageData usageData : batteryDataList) {
            if (usageData.usageType == UsageType.UNACCOUNTED) {
                return usageData.totalPowerMah;
            }
        }

        return 0;
    }

    @VisibleForTesting
    void updateUsageDataSummary(PowerUsageData usageData, double totalPower, int dischargeAmount) {
        if (shouldHideSummary(usageData)) {
@@ -320,6 +332,10 @@ public class PowerUsageAdvanced extends PowerUsageBase {
    void setUserManager(UserManager userManager) {
        mUserManager = userManager;
    }
    @VisibleForTesting
    void setBatteryUtils(BatteryUtils batteryUtils) {
        mBatteryUtils = batteryUtils;
    }

    /**
     * Class that contains data used in {@link PowerGaugePreference}.
+9 −1
Original line number Diff line number Diff line
@@ -70,6 +70,7 @@ public class BatteryUtilsTest {
    private static final double BATTERY_SCREEN_USAGE = 300;
    private static final double BATTERY_SYSTEM_USAGE = 600;
    private static final double BATTERY_OVERACCOUNTED_USAGE = 500;
    private static final double BATTERY_UNACCOUNTED_USAGE = 700;
    private static final double TOTAL_BATTERY_USAGE = 1000;
    private static final double HIDDEN_USAGE = 200;
    private static final int DISCHARGE_AMOUNT = 80;
@@ -85,6 +86,8 @@ public class BatteryUtilsTest {
    @Mock
    private BatterySipper mOvercountedBatterySipper;
    @Mock
    private BatterySipper mUnaccountedBatterySipper;
    @Mock
    private BatterySipper mSystemBatterySipper;
    @Mock
    private BatterySipper mCellBatterySipper;
@@ -126,6 +129,9 @@ public class BatteryUtilsTest {
        mOvercountedBatterySipper.drainType = BatterySipper.DrainType.OVERCOUNTED;
        mOvercountedBatterySipper.totalPowerMah = BATTERY_OVERACCOUNTED_USAGE;

        mUnaccountedBatterySipper.drainType = BatterySipper.DrainType.UNACCOUNTED;
        mUnaccountedBatterySipper.totalPowerMah = BATTERY_UNACCOUNTED_USAGE;

        mBatteryUtils = BatteryUtils.getInstance(RuntimeEnvironment.application);
        mBatteryUtils.mPowerUsageFeatureProvider = mProvider;

@@ -171,12 +177,14 @@ public class BatteryUtilsTest {
        sippers.add(mScreenBatterySipper);
        sippers.add(mSystemBatterySipper);
        sippers.add(mOvercountedBatterySipper);
        sippers.add(mUnaccountedBatterySipper);
        when(mProvider.isTypeSystem(mSystemBatterySipper))
                .thenReturn(true);

        final double totalUsage = mBatteryUtils.removeHiddenBatterySippers(sippers);
        assertThat(sippers).containsExactly(mNormalBatterySipper);
        assertThat(totalUsage).isWithin(PRECISION).of(BATTERY_SCREEN_USAGE + BATTERY_SYSTEM_USAGE);
        assertThat(totalUsage).isWithin(PRECISION).of(
                BATTERY_SCREEN_USAGE + BATTERY_SYSTEM_USAGE + BATTERY_UNACCOUNTED_USAGE);
    }

    @Test
+13 −1
Original line number Diff line number Diff line
@@ -111,7 +111,7 @@ public class PowerUsageAdvancedTest {
        mPowerUsageAdvanced.setPackageManager(mPackageManager);
        mPowerUsageAdvanced.setPowerUsageFeatureProvider(mPowerUsageFeatureProvider);
        mPowerUsageAdvanced.setUserManager(mUserManager);
        mPowerUsageAdvanced.mBatteryUtils = spy(new BatteryUtils(mShadowContext));
        mPowerUsageAdvanced.setBatteryUtils(BatteryUtils.getInstance(mShadowContext));

        mPowerUsageData = new PowerUsageData(UsageType.APP);
        mMaxBatterySipper.totalPowerMah = TYPE_BLUETOOTH_USAGE;
@@ -299,4 +299,16 @@ public class PowerUsageAdvancedTest {
        assertThat(mPowerUsageAdvanced.shouldShowBatterySipper(mNormalBatterySipper)).isTrue();
    }

    @Test
    public void testCalculateHiddenPower_returnCorrectPower() {
        List<PowerUsageData> powerUsageDataList = new ArrayList<>();
        final double unaccountedPower = 100;
        final double normalPower = 150;
        powerUsageDataList.add(new PowerUsageData(UsageType.UNACCOUNTED, unaccountedPower));
        powerUsageDataList.add(new PowerUsageData(UsageType.APP, normalPower));
        powerUsageDataList.add(new PowerUsageData(UsageType.CELL, normalPower));

        assertThat(mPowerUsageAdvanced.calculateHiddenPower(powerUsageDataList)).isWithin(
                PRECISION).of(unaccountedPower);
    }
}