diff --git a/core/java/android/os/BatteryConsumer.java b/core/java/android/os/BatteryConsumer.java index 71d2177233ee0..4cd62eb859f81 100644 --- a/core/java/android/os/BatteryConsumer.java +++ b/core/java/android/os/BatteryConsumer.java @@ -215,16 +215,6 @@ public abstract class BatteryConsumer { return (T) this; } - /** - * Sets the total amount of power consumed since BatteryStats reset, mAh. - */ - @SuppressWarnings("unchecked") - @NonNull - public T setConsumedPower(double consumedPower) { - mPowerComponentsBuilder.setTotalPowerConsumed(consumedPower); - return (T) this; - } - /** * Sets the amount of time used by the specified component, e.g. CPU, WiFi etc. * diff --git a/core/java/android/os/PowerComponents.java b/core/java/android/os/PowerComponents.java index 18dca6816c556..f681c4ff0ce40 100644 --- a/core/java/android/os/PowerComponents.java +++ b/core/java/android/os/PowerComponents.java @@ -36,11 +36,15 @@ class PowerComponents { private final int mModeledPowerComponentOffset; PowerComponents(@NonNull Builder builder) { - mTotalPowerConsumed = builder.mTotalPowerConsumed; mCustomPowerComponentCount = builder.mCustomPowerComponentCount; mModeledPowerComponentOffset = builder.mModeledPowerComponentOffset; mPowerComponents = builder.mPowerComponents; mTimeComponents = builder.mTimeComponents; + double totalPower = 0; + for (int i = mPowerComponents.length - 1; i >= 0; i--) { + totalPower += mPowerComponents[i]; + } + mTotalPowerConsumed = totalPower; } PowerComponents(@NonNull Parcel source) { @@ -158,7 +162,6 @@ class PowerComponents { * Builder for PowerComponents. */ static final class Builder { - private double mTotalPowerConsumed; private final double[] mPowerComponents; private final int mCustomPowerComponentCount; private final long[] mTimeComponents; @@ -180,15 +183,6 @@ class PowerComponents { new long[BatteryConsumer.TIME_COMPONENT_COUNT + customTimeComponentCount]; } - /** - * Sets the sum amount of power consumed since BatteryStats reset. - */ - @NonNull - public Builder setTotalPowerConsumed(double totalPowerConsumed) { - mTotalPowerConsumed = totalPowerConsumed; - return this; - } - /** * Sets the amount of drain attributed to the specified drain type, e.g. CPU, WiFi etc. * diff --git a/core/java/com/android/internal/os/BatteryUsageStatsProvider.java b/core/java/com/android/internal/os/BatteryUsageStatsProvider.java index b8c066db29afa..cce1442449cab 100644 --- a/core/java/com/android/internal/os/BatteryUsageStatsProvider.java +++ b/core/java/com/android/internal/os/BatteryUsageStatsProvider.java @@ -123,14 +123,9 @@ public class BatteryUsageStatsProvider { .setDischargePercentage(batteryStatsHelper.getStats().getDischargeAmount(0)) .setConsumedPower(batteryStatsHelper.getTotalPower()); - final List usageList = batteryStatsHelper.getUsageList(); - for (int i = 0; i < usageList.size(); i++) { - final BatterySipper sipper = usageList.get(i); - if (sipper.drainType == BatterySipper.DrainType.APP) { - batteryUsageStatsBuilder.getOrCreateUidBatteryConsumerBuilder(sipper.uidObj) - .setPackageWithHighestDrain(sipper.packageWithHighestDrain) - .setConsumedPower(sipper.sumPower()); - } + SparseArray uidStats = mStats.getUidStats(); + for (int i = uidStats.size() - 1; i >= 0; i--) { + batteryUsageStatsBuilder.getOrCreateUidBatteryConsumerBuilder(uidStats.valueAt(i)); } final long realtimeUs = SystemClock.elapsedRealtime() * 1000; 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 96e9c4af21c21..7b1ca8f362248 100644 --- a/core/tests/coretests/src/com/android/internal/os/BatteryUsageStatsTest.java +++ b/core/tests/coretests/src/com/android/internal/os/BatteryUsageStatsTest.java @@ -73,7 +73,6 @@ public class BatteryUsageStatsTest { final UidBatteryConsumer.Builder uidBatteryConsumerBuilder = builder.getOrCreateUidBatteryConsumerBuilder(batteryStatsUid); uidBatteryConsumerBuilder.setPackageWithHighestDrain("foo"); - uidBatteryConsumerBuilder.setConsumedPower(200); uidBatteryConsumerBuilder.setConsumedPower(BatteryConsumer.POWER_COMPONENT_USAGE, 300); uidBatteryConsumerBuilder.setConsumedPower(BatteryConsumer.POWER_COMPONENT_CPU, 400); uidBatteryConsumerBuilder.setConsumedPowerForCustomComponent( @@ -90,7 +89,6 @@ public class BatteryUsageStatsTest { final SystemBatteryConsumer.Builder systemBatteryConsumerBuilder = builder.getOrCreateSystemBatteryConsumerBuilder( SystemBatteryConsumer.DRAIN_TYPE_CAMERA); - systemBatteryConsumerBuilder.setConsumedPower(10000); systemBatteryConsumerBuilder.setConsumedPower(BatteryConsumer.POWER_COMPONENT_CPU, 10100); systemBatteryConsumerBuilder.setConsumedPowerForCustomComponent( BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID, 10200); @@ -114,7 +112,6 @@ public class BatteryUsageStatsTest { for (UidBatteryConsumer uidBatteryConsumer : uidBatteryConsumers) { if (uidBatteryConsumer.getUid() == 2000) { assertThat(uidBatteryConsumer.getPackageWithHighestDrain()).isEqualTo("foo"); - assertThat(uidBatteryConsumer.getConsumedPower()).isEqualTo(200); assertThat(uidBatteryConsumer.getConsumedPower( BatteryConsumer.POWER_COMPONENT_USAGE)).isEqualTo(300); assertThat(uidBatteryConsumer.getConsumedPower( @@ -130,6 +127,7 @@ public class BatteryUsageStatsTest { BatteryConsumer.TIME_COMPONENT_CPU_FOREGROUND)).isEqualTo(700); assertThat(uidBatteryConsumer.getUsageDurationForCustomComponentMillis( BatteryConsumer.FIRST_CUSTOM_TIME_COMPONENT_ID)).isEqualTo(800); + assertThat(uidBatteryConsumer.getConsumedPower()).isEqualTo(1710); } else { fail("Unexpected UID " + uidBatteryConsumer.getUid()); } @@ -139,7 +137,6 @@ public class BatteryUsageStatsTest { batteryUsageStats.getSystemBatteryConsumers(); for (SystemBatteryConsumer systemBatteryConsumer : systemBatteryConsumers) { if (systemBatteryConsumer.getDrainType() == SystemBatteryConsumer.DRAIN_TYPE_CAMERA) { - assertThat(systemBatteryConsumer.getConsumedPower()).isEqualTo(10000); assertThat(systemBatteryConsumer.getConsumedPower( BatteryConsumer.POWER_COMPONENT_CPU)).isEqualTo(10100); assertThat(systemBatteryConsumer.getConsumedPowerForCustomComponent( @@ -151,6 +148,7 @@ public class BatteryUsageStatsTest { BatteryConsumer.TIME_COMPONENT_CPU)).isEqualTo(10300); assertThat(systemBatteryConsumer.getUsageDurationForCustomComponentMillis( BatteryConsumer.FIRST_CUSTOM_TIME_COMPONENT_ID)).isEqualTo(10400); + assertThat(systemBatteryConsumer.getConsumedPower()).isEqualTo(30510); } else { fail("Unexpected drain type " + systemBatteryConsumer.getDrainType()); }