From 9cb960304e6a399507b32ad3ed98d95af15cda27 Mon Sep 17 00:00:00 2001 From: Dmitri Plotnikov Date: Fri, 17 Sep 2021 12:58:03 -0700 Subject: [PATCH] Drop per-app measured energy when an OTA changes the set of energy components Bug: 200123115 Test: atest BatteryStatsTests Change-Id: I750a5c9fa3faa9757625b2d2494df1484b68016d --- .../com/android/internal/os/BatteryStatsImpl.java | 10 +++++++--- .../internal/os/CustomMeasuredPowerCalculator.java | 11 ++++++++--- .../android/internal/os/BatteryStatsSensorTest.java | 8 ++++---- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java index 719dc5396c775..7c4de82a41318 100644 --- a/core/java/com/android/internal/os/BatteryStatsImpl.java +++ b/core/java/com/android/internal/os/BatteryStatsImpl.java @@ -8578,7 +8578,7 @@ public class BatteryStatsImpl extends BatteryStats { * inactive so can be dropped. */ @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) - public boolean reset(long uptimeUs, long realtimeUs) { + public boolean reset(long uptimeUs, long realtimeUs, int resetReason) { boolean active = false; mOnBatteryBackgroundTimeBase.init(uptimeUs, realtimeUs); @@ -8648,7 +8648,11 @@ public class BatteryStatsImpl extends BatteryStats { resetIfNotNull(mBluetoothControllerActivity, false, realtimeUs); resetIfNotNull(mModemControllerActivity, false, realtimeUs); - MeasuredEnergyStats.resetIfNotNull(mUidMeasuredEnergyStats); + if (resetReason == RESET_REASON_MEASURED_ENERGY_BUCKETS_CHANGE) { + mUidMeasuredEnergyStats = null; + } else { + MeasuredEnergyStats.resetIfNotNull(mUidMeasuredEnergyStats); + } resetIfNotNull(mUserCpuTime, false, realtimeUs); resetIfNotNull(mSystemCpuTime, false, realtimeUs); @@ -11332,7 +11336,7 @@ public class BatteryStatsImpl extends BatteryStats { mNumConnectivityChange = 0; for (int i=0; i