From ff6c7f864c17774618af2734070c17e4c4a45c0a Mon Sep 17 00:00:00 2001 From: Dmitri Plotnikov Date: Mon, 29 Mar 2021 17:44:47 -0700 Subject: [PATCH] Adjust total consumed power to avoid double-counting The definition of SystemBatteryConsumer.getConsumedPower() has been changed to include power attributed to apps. That power is also included in UidBatteryConsumers, so we ended up double-counting power attributed to apps. Bug: 183235836 Test: atest FrameworksCoreTests:com.android.internal.os.BatteryStatsTests Change-Id: Ib99b3ce910b62528241e271bdb3b925a9ac01830 --- core/java/android/os/BatteryUsageStats.java | 2 +- .../src/com/android/internal/os/BatteryUsageStatsTest.java | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/core/java/android/os/BatteryUsageStats.java b/core/java/android/os/BatteryUsageStats.java index a0721c32fc2a2..bcd00b21e97df 100644 --- a/core/java/android/os/BatteryUsageStats.java +++ b/core/java/android/os/BatteryUsageStats.java @@ -74,7 +74,7 @@ public final class BatteryUsageStats implements Parcelable { for (int i = 0; i < systemBatteryConsumerCount; i++) { final SystemBatteryConsumer consumer = builder.mSystemBatteryConsumerBuilders.valueAt(i).build(); - totalPower += consumer.getConsumedPower(); + totalPower += consumer.getConsumedPower() - consumer.getPowerConsumedByApps(); mSystemBatteryConsumers.add(consumer); } diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryUsageStatsTest.java b/core/tests/coretests/src/com/android/internal/os/BatteryUsageStatsTest.java index a18a88cb2ca80..60df9688b5a4a 100644 --- a/core/tests/coretests/src/com/android/internal/os/BatteryUsageStatsTest.java +++ b/core/tests/coretests/src/com/android/internal/os/BatteryUsageStatsTest.java @@ -103,7 +103,10 @@ public class BatteryUsageStatsTest { } public void validateBatteryUsageStats(BatteryUsageStats batteryUsageStats) { - assertThat(batteryUsageStats.getConsumedPower()).isEqualTo(21500); + // Camera: (10100 + 10200) - 20000 (consumed by apps) = 300 + // App: 300 + 400 + 500 = 1200 + // Total: 1500 + assertThat(batteryUsageStats.getConsumedPower()).isEqualTo(1500); assertThat(batteryUsageStats.getDischargePercentage()).isEqualTo(20); assertThat(batteryUsageStats.getDischargedPowerRange().getLower()).isEqualTo(1000); assertThat(batteryUsageStats.getDischargedPowerRange().getUpper()).isEqualTo(2000);