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

Commit 4d78cddf authored by Dmitri Plotnikov's avatar Dmitri Plotnikov Committed by Android (Google) Code Review
Browse files

Merge "Use getUahDischarge when available" into sc-dev

parents f7b45b69 9f08c607
Loading
Loading
Loading
Loading
+7 −2
Original line number Original line Diff line number Diff line
@@ -63,10 +63,15 @@ public class BatteryChargeCalculator extends PowerCalculator {
            builder.setChargeTimeRemainingMs(chargeTimeRemainingMs / 1000);
            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(
        builder.getAggregateBatteryConsumerBuilder(
                BatteryUsageStats.AGGREGATE_BATTERY_CONSUMER_SCOPE_DEVICE)
                BatteryUsageStats.AGGREGATE_BATTERY_CONSUMER_SCOPE_DEVICE)
                .setConsumedPower(
                .setConsumedPower(dischargeMah);
                        (dischargedPowerLowerBoundMah + dischargedPowerUpperBoundMah) / 2);
    }
    }


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


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


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

        final BatteryStatsImpl batteryStats = mStatsRule.getBatteryStats();
        final BatteryStatsImpl batteryStats = mStatsRule.getBatteryStats();


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


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


        assertThat(batteryUsageStats.getChargeTimeRemainingMs()).isEqualTo(100_000);
        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);
    }
}
}