From 077158e2a6a2300b68c97391e4fb569e187ba35e Mon Sep 17 00:00:00 2001 From: mxyyiyi Date: Tue, 2 Apr 2024 14:10:28 +0800 Subject: [PATCH 1/2] Fix purge condition for system component in BatteryDiffData. - System component do not have screen-on-time, use foreground usage time (also the mUsageDurationMs in BatteryEntry). Bug: 321265878 Test: Manual Change-Id: I8e9d60b1953fe4b0aaf42380b0fdadb75b191479 --- .../settings/fuelgauge/batteryusage/BatteryDiffData.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffData.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffData.java index eebf1f5915a..7ea7203a332 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffData.java +++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryDiffData.java @@ -150,7 +150,10 @@ public class BatteryDiffData { final Iterator iterator = entries.iterator(); while (iterator.hasNext()) { final BatteryDiffEntry entry = iterator.next(); - final long screenOnTimeInMs = entry.mScreenOnTimeInMs; + final long screenOnTimeInMs = + entry.isSystemEntry() + ? entry.mForegroundUsageTimeInMs + : entry.mScreenOnTimeInMs; final double comsumePower = entry.mConsumePower; final String packageName = entry.getPackageName(); final Integer componentId = entry.mComponentId; From 52672ca34b93618a6ec707f37dbe7ab40b77bafe Mon Sep 17 00:00:00 2001 From: mxyyiyi Date: Tue, 2 Apr 2024 14:19:08 +0800 Subject: [PATCH 2/2] Fix summary for system components which 30 sec <= usage time < 1 min. - formatElapsedTimeWithoutComma(withSecords = false,) will round up minutes by adding 30 seconds. https://screenshot.googleplex.com/8HrDpLi8FX8tjJy Bug: 321265878 Test: Manual Change-Id: I779bd7c33bbb3aefa0a88f6ba42d047259bc50cc --- src/com/android/settings/fuelgauge/BatteryUtils.java | 2 +- .../BatteryUsageBreakdownControllerTest.java | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/com/android/settings/fuelgauge/BatteryUtils.java b/src/com/android/settings/fuelgauge/BatteryUtils.java index f846a6c15b7..767f2c01881 100644 --- a/src/com/android/settings/fuelgauge/BatteryUtils.java +++ b/src/com/android/settings/fuelgauge/BatteryUtils.java @@ -670,7 +670,7 @@ public class BatteryUtils { long timeInMs, final int lessThanOneMinuteResId, final int normalResId) { - if (timeInMs < DateUtils.MINUTE_IN_MILLIS) { + if (timeInMs <= DateUtils.MINUTE_IN_MILLIS / 2) { return context.getString(lessThanOneMinuteResId); } final CharSequence timeSequence = diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java index 9dac9d5e377..7dcbe3a5ab7 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java @@ -57,6 +57,7 @@ public final class BatteryUsageBreakdownControllerTest { private static final String PREF_KEY = "pref_key"; private static final String PREF_KEY2 = "pref_key2"; private static final String PREF_SUMMARY = "fake preference summary"; + private static final long TIME_LESS_THAN_HALF_MINUTE = DateUtils.MINUTE_IN_MILLIS / 2 - 1; @Mock private InstrumentedPreferenceFragment mFragment; @Mock private SettingsActivity mSettingsActivity; @@ -332,7 +333,7 @@ public final class BatteryUsageBreakdownControllerTest { createBatteryDiffEntry( /* isSystem= */ true, /* screenOnTimeInMs= */ 0, - /* foregroundUsageTimeInMs= */ DateUtils.MINUTE_IN_MILLIS - 1, + /* foregroundUsageTimeInMs= */ TIME_LESS_THAN_HALF_MINUTE, /* foregroundServiceUsageTimeInMs= */ 0, /* backgroundUsageTimeInMs= */ 0)); assertThat(pref.getSummary().toString()).isEqualTo("Total: less than a minute"); @@ -427,10 +428,10 @@ public final class BatteryUsageBreakdownControllerTest { pref, createBatteryDiffEntry( /* isSystem= */ false, - /* screenOnTimeInMs= */ DateUtils.MINUTE_IN_MILLIS - 1, - /* foregroundUsageTimeInMs= */ DateUtils.MINUTE_IN_MILLIS - 1, + /* screenOnTimeInMs= */ TIME_LESS_THAN_HALF_MINUTE, + /* foregroundUsageTimeInMs= */ TIME_LESS_THAN_HALF_MINUTE, /* foregroundServiceUsageTimeInMs= */ 0, - /* backgroundUsageTimeInMs= */ DateUtils.MINUTE_IN_MILLIS - 1)); + /* backgroundUsageTimeInMs= */ TIME_LESS_THAN_HALF_MINUTE)); assertThat(pref.getSummary().toString()) .isEqualTo("Screen time: less than a minute\nBackground: less than a minute"); }