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

Commit cfb45f02 authored by Dmitri Plotnikov's avatar Dmitri Plotnikov Committed by Automerger Merge Worker
Browse files

Merge "Use getUahDischarge when available" into sc-dev am: 4d78cddf

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14535945

Change-Id: I4a67ed78552377a93dfe700ed69f844b34cc7675
parents 20fbe927 4d78cddf
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -63,10 +63,15 @@ public class BatteryChargeCalculator extends PowerCalculator {
            builder.setChargeTimeRemainingMs(chargeTimeRemainingMs / 1000);
        }

        long dischargeMah = batteryStats.getUahDischarge(BatteryStats.STATS_SINCE_CHARGED) / 1000;
        if (dischargeMah == 0) {
            dischargeMah = (long) ((dischargedPowerLowerBoundMah + dischargedPowerUpperBoundMah) / 2
                    + 0.5);
        }

        builder.getAggregateBatteryConsumerBuilder(
                BatteryUsageStats.AGGREGATE_BATTERY_CONSUMER_SCOPE_DEVICE)
                .setConsumedPower(
                        (dischargedPowerLowerBoundMah + dischargedPowerUpperBoundMah) / 2);
                .setConsumedPower(dischargeMah);
    }

    @Override
+35 −3
Original line number Diff line number Diff line
@@ -35,11 +35,13 @@ public class BatteryChargeCalculatorTest {
    private static final double PRECISION = 0.00001;

    @Rule
    public final BatteryUsageStatsRule mStatsRule = new BatteryUsageStatsRule()
            .setAveragePower(PowerProfile.POWER_BATTERY_CAPACITY, 1234.0); // Should be ignored
    public final BatteryUsageStatsRule mStatsRule = new BatteryUsageStatsRule();

    @Test
    public void testDischargeTotals() {
        // Nominal battery capacity should be ignored
        mStatsRule.setAveragePower(PowerProfile.POWER_BATTERY_CAPACITY, 1234.0);

        final BatteryStatsImpl batteryStats = mStatsRule.getBatteryStats();

        batteryStats.setBatteryStateLocked(BatteryManager.BATTERY_STATUS_DISCHARGING, 100,
@@ -56,7 +58,7 @@ public class BatteryChargeCalculatorTest {
        BatteryUsageStats batteryUsageStats = mStatsRule.apply(calculator);

        assertThat(batteryUsageStats.getConsumedPower())
                .isWithin(PRECISION).of(380.0);
                .isWithin(PRECISION).of(1200.0);        // 3,600 - 2,400
        assertThat(batteryUsageStats.getDischargePercentage()).isEqualTo(10);
        assertThat(batteryUsageStats.getDischargedPowerRange().getLower())
                .isWithin(PRECISION).of(360.0);
@@ -74,4 +76,34 @@ public class BatteryChargeCalculatorTest {

        assertThat(batteryUsageStats.getChargeTimeRemainingMs()).isEqualTo(100_000);
    }

    @Test
    public void testDischargeTotals_chargeUahUnavailable() {
        mStatsRule.setAveragePower(PowerProfile.POWER_BATTERY_CAPACITY, 4000.0);

        final BatteryStatsImpl batteryStats = mStatsRule.getBatteryStats();

        batteryStats.setBatteryStateLocked(BatteryManager.BATTERY_STATUS_DISCHARGING, 100,
                /* plugType */ 0, 90, 72, 3700, 0, 0, 0,
                1_000_000, 1_000_000, 1_000_000);
        batteryStats.setBatteryStateLocked(BatteryManager.BATTERY_STATUS_DISCHARGING, 100,
                /* plugType */ 0, 85, 72, 3700, 0, 0, 0,
                1_500_000, 1_500_000, 1_500_000);
        batteryStats.setBatteryStateLocked(BatteryManager.BATTERY_STATUS_DISCHARGING, 100,
                /* plugType */ 0, 80, 72, 3700, 0, 0, 0,
                2_000_000, 2_000_000, 2_000_000);

        BatteryChargeCalculator calculator = new BatteryChargeCalculator();
        BatteryUsageStats batteryUsageStats = mStatsRule.apply(calculator);

        assertThat(batteryUsageStats.getConsumedPower())
                .isWithin(PRECISION).of(380.0);  // 9.5% of 4,000.
        assertThat(batteryUsageStats.getDischargePercentage()).isEqualTo(10);
        assertThat(batteryUsageStats.getDischargedPowerRange().getLower())
                .isWithin(PRECISION).of(360.0);  // 9% of 4,000
        assertThat(batteryUsageStats.getDischargedPowerRange().getUpper())
                .isWithin(PRECISION).of(400.0);  // 10% of 4,000
        assertThat(batteryUsageStats.getBatteryTimeRemainingMs()).isEqualTo(8_000_000);
        assertThat(batteryUsageStats.getChargeTimeRemainingMs()).isEqualTo(-1);
    }
}