diff options
author | 2021-05-12 22:52:41 +0000 | |
---|---|---|
committer | 2021-05-12 22:52:41 +0000 | |
commit | dd9dcdfb72b89002122ecbe03606b78d4012899f (patch) | |
tree | a40a673c84f0b7890d1672241873413caa0f5331 | |
parent | 79d74a64482d0002ddc3b489de9789227e8d7090 (diff) | |
parent | 59dd00ce469c8d571e11cac4b59f8025793e614a (diff) |
Merge "Fix device-level wakelock battery attribution" into sc-dev
-rw-r--r-- | core/java/com/android/internal/os/WakelockPowerCalculator.java | 28 | ||||
-rw-r--r-- | core/tests/coretests/src/com/android/internal/os/WakelockPowerCalculatorTest.java | 4 |
2 files changed, 23 insertions, 9 deletions
diff --git a/core/java/com/android/internal/os/WakelockPowerCalculator.java b/core/java/com/android/internal/os/WakelockPowerCalculator.java index d5941072acf9..e0ef1291800d 100644 --- a/core/java/com/android/internal/os/WakelockPowerCalculator.java +++ b/core/java/com/android/internal/os/WakelockPowerCalculator.java @@ -75,22 +75,29 @@ public class WakelockPowerCalculator extends PowerCalculator { // this remainder to the OS, if possible. calculateRemaining(result, batteryStats, rawRealtimeUs, rawUptimeUs, BatteryStats.STATS_SINCE_CHARGED, osPowerMah, osDurationMs, totalAppDurationMs); + final double remainingPowerMah = result.powerMah; if (osBatteryConsumer != null) { osBatteryConsumer.setUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_WAKELOCK, result.durationMs) - .setConsumedPower(BatteryConsumer.POWER_COMPONENT_WAKELOCK, result.powerMah); + .setConsumedPower(BatteryConsumer.POWER_COMPONENT_WAKELOCK, remainingPowerMah); } - final long wakeTimeMillis = - calculateWakeTimeMillis(batteryStats, rawRealtimeUs, rawUptimeUs); - final double powerMah = mPowerEstimator.calculatePower(wakeTimeMillis); + long wakeTimeMs = calculateWakeTimeMillis(batteryStats, rawRealtimeUs, rawUptimeUs); + if (wakeTimeMs < 0) { + wakeTimeMs = 0; + } builder.getAggregateBatteryConsumerBuilder( BatteryUsageStats.AGGREGATE_BATTERY_CONSUMER_SCOPE_DEVICE) - .setUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_WAKELOCK, wakeTimeMillis) - .setConsumedPower(BatteryConsumer.POWER_COMPONENT_WAKELOCK, powerMah); + .setUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_WAKELOCK, + wakeTimeMs) + .setConsumedPower(BatteryConsumer.POWER_COMPONENT_WAKELOCK, + appPowerMah + remainingPowerMah); builder.getAggregateBatteryConsumerBuilder( BatteryUsageStats.AGGREGATE_BATTERY_CONSUMER_SCOPE_ALL_APPS) - .setConsumedPower(BatteryConsumer.POWER_COMPONENT_WAKELOCK, appPowerMah); + .setUsageDurationMillis(BatteryConsumer.POWER_COMPONENT_WAKELOCK, + totalAppDurationMs) + .setConsumedPower(BatteryConsumer.POWER_COMPONENT_WAKELOCK, + appPowerMah); } @Override @@ -167,9 +174,16 @@ public class WakelockPowerCalculator extends PowerCalculator { } result.durationMs = osDurationMs + wakeTimeMillis; result.powerMah = osPowerMah + power; + } else { + result.durationMs = 0; + result.powerMah = 0; } } + /** + * Return on-battery/screen-off time. May be negative if the screen-on time exceeds + * the on-battery time. + */ private long calculateWakeTimeMillis(BatteryStats batteryStats, long rawRealtimeUs, long rawUptimeUs) { final long batteryUptimeUs = batteryStats.getBatteryUptime(rawUptimeUs); diff --git a/core/tests/coretests/src/com/android/internal/os/WakelockPowerCalculatorTest.java b/core/tests/coretests/src/com/android/internal/os/WakelockPowerCalculatorTest.java index 82830f23fec3..a7f4fb303b3d 100644 --- a/core/tests/coretests/src/com/android/internal/os/WakelockPowerCalculatorTest.java +++ b/core/tests/coretests/src/com/android/internal/os/WakelockPowerCalculatorTest.java @@ -79,8 +79,8 @@ public class WakelockPowerCalculatorTest { assertThat(deviceConsumer.getConsumedPower(BatteryConsumer.POWER_COMPONENT_WAKELOCK)) .isWithin(PRECISION).of(0.6); - BatteryConsumer appConsumer = mStatsRule.getDeviceBatteryConsumer(); + BatteryConsumer appConsumer = mStatsRule.getAppsBatteryConsumer(); assertThat(appConsumer.getConsumedPower(BatteryConsumer.POWER_COMPONENT_WAKELOCK)) - .isWithin(PRECISION).of(0.6); + .isWithin(PRECISION).of(0.1); } } |