From 23a5fb5e74f84e43ccc78bbead7c3ae0247a11bc Mon Sep 17 00:00:00 2001 From: "Wesley.CW Wang" Date: Thu, 21 Oct 2021 15:54:57 +0800 Subject: [PATCH] Update app usage page power summary - Present empty string when this app consumed power but no usage time, usually they are some system components Bug: 197749108 Test: make -j64 RunSettingsRoboTest Change-Id: I1e88babb30c871748fa1f5fc23c7b4d834e384fd --- res/values/strings.xml | 2 ++ .../fuelgauge/AdvancedPowerUsageDetail.java | 16 +++++++++------- .../fuelgauge/AdvancedPowerUsageDetailTest.java | 15 +++++++++++++++ 3 files changed, 26 insertions(+), 7 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 8f2c34e077c..1ba4d4de048 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -6560,6 +6560,8 @@ No usage from last full charge No usage for past 24 hr + + Battery left estimate is based on your device usage diff --git a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java index 8019d0a087a..0d0cdba5a09 100644 --- a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java +++ b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java @@ -326,10 +326,7 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements } if (mEnableTriState) { - final long foregroundTimeMs = bundle.getLong(EXTRA_FOREGROUND_TIME); - final long backgroundTimeMs = bundle.getLong(EXTRA_BACKGROUND_TIME); - final String slotTime = bundle.getString(EXTRA_SLOT_TIME, null); - controller.setSummary(getAppActiveTime(foregroundTimeMs, backgroundTimeMs, slotTime)); + controller.setSummary(getAppActiveTime(bundle)); } controller.done(context, true /* rebindActions */); @@ -493,16 +490,21 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements mOptimizationMode = mBatteryOptimizeUtils.getAppOptimizationMode(); } - private CharSequence getAppActiveTime( - long foregroundTimeMs, long backgroundTimeMs, String slotTime) { + private CharSequence getAppActiveTime(Bundle bundle) { + final long foregroundTimeMs = bundle.getLong(EXTRA_FOREGROUND_TIME); + final long backgroundTimeMs = bundle.getLong(EXTRA_BACKGROUND_TIME); + final int consumedPower = bundle.getInt(EXTRA_POWER_USAGE_AMOUNT); + final String slotTime = bundle.getString(EXTRA_SLOT_TIME, null); final long totalTimeMs = foregroundTimeMs + backgroundTimeMs; final CharSequence usageTimeSummary; final PowerUsageFeatureProvider powerFeatureProvider = FeatureFactory.getFactory(getContext()).getPowerUsageFeatureProvider(getContext()); if (totalTimeMs == 0) { + final int batteryWithoutUsageTime = consumedPower > 0 + ? R.string.battery_usage_without_time : R.string.battery_not_usage_24hr; usageTimeSummary = getText(powerFeatureProvider.isChartGraphEnabled(getContext()) - ? R.string.battery_not_usage_24hr : R.string.battery_not_usage); + ? batteryWithoutUsageTime : R.string.battery_not_usage); } else if (slotTime == null) { // Shows summary text with past 24 hr or full charge if slot time is null. usageTimeSummary = powerFeatureProvider.isChartGraphEnabled(getContext()) diff --git a/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java b/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java index a2e78c3a2b5..3501726bc1a 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetailTest.java @@ -437,6 +437,21 @@ public class AdvancedPowerUsageDetailTest { .isEqualTo("No usage for past 24 hr"); } + @Test + public void testInitHeader_noUsageTimeButConsumedPower_hasEmptySummary() { + Bundle bundle = new Bundle(3); + bundle.putLong(AdvancedPowerUsageDetail.EXTRA_BACKGROUND_TIME, /* value */ 0); + bundle.putLong(AdvancedPowerUsageDetail.EXTRA_FOREGROUND_TIME, /* value */ 0); + bundle.putInt(AdvancedPowerUsageDetail.EXTRA_POWER_USAGE_AMOUNT, /* value */ 10); + when(mFragment.getArguments()).thenReturn(bundle); + + mFragment.initHeader(); + + ArgumentCaptor captor = ArgumentCaptor.forClass(CharSequence.class); + verify(mEntityHeaderController).setSummary(captor.capture()); + assertThat(captor.getValue().toString()).isEmpty(); + } + @Test public void testInitHeader_backgroundTwoMinForegroundZero_hasCorrectSummary() { final long backgroundTimeTwoMinutes = 120000;