diff --git a/res/values/strings.xml b/res/values/strings.xml
index bc5de68e965..fefbebcb63f 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -5178,10 +5178,14 @@
Total: less than a min
Background: less than a min
+
+ Screen time: less than a min
Total: %s
Background: %s
+
+ Screen time: %s
Battery usage data will be available in a few hours once fully charged
diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java
index 10cfd39fb9d..785c96ebe99 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownController.java
@@ -291,44 +291,43 @@ public class BatteryUsageBreakdownController extends BasePreferenceController
@VisibleForTesting
void setPreferenceSummary(
PowerGaugePreference preference, BatteryDiffEntry entry) {
+ final long screenOnTimeInMs = entry.mScreenOnTimeInMs;
final long foregroundUsageTimeInMs = entry.mForegroundUsageTimeInMs;
final long backgroundUsageTimeInMs = entry.mBackgroundUsageTimeInMs;
final long totalUsageTimeInMs = foregroundUsageTimeInMs + backgroundUsageTimeInMs;
- String usageTimeSummary = null;
- // Not shows summary for some system components without usage time.
- if (totalUsageTimeInMs == 0) {
- preference.setSummary(null);
- // Shows background summary only if we don't have foreground usage time.
- } else if (foregroundUsageTimeInMs == 0 && backgroundUsageTimeInMs != 0) {
- usageTimeSummary = buildUsageTimeInfo(backgroundUsageTimeInMs, true);
- // Shows total usage summary only if total usage time is small.
- } else if (totalUsageTimeInMs < DateUtils.MINUTE_IN_MILLIS) {
- usageTimeSummary = buildUsageTimeInfo(totalUsageTimeInMs, false);
+
+ StringBuilder usageTimeSummary = new StringBuilder();
+ if (entry.isSystemEntry()) {
+ if (totalUsageTimeInMs != 0) {
+ usageTimeSummary.append(buildUsageTimeInfo(totalUsageTimeInMs,
+ R.string.battery_usage_total_less_than_one_minute,
+ R.string.battery_usage_for_total_time));
+ }
} else {
- usageTimeSummary = buildUsageTimeInfo(totalUsageTimeInMs, false);
- // Shows background usage time if it is larger than a minute.
- if (backgroundUsageTimeInMs > 0) {
- usageTimeSummary +=
- "\n" + buildUsageTimeInfo(backgroundUsageTimeInMs, true);
+ if (screenOnTimeInMs != 0) {
+ usageTimeSummary.append(buildUsageTimeInfo(screenOnTimeInMs,
+ R.string.battery_usage_screen_time_less_than_one_minute,
+ R.string.battery_usage_screen_time));
+ }
+ if (screenOnTimeInMs != 0 && backgroundUsageTimeInMs != 0) {
+ usageTimeSummary.append('\n');
+ }
+ if (backgroundUsageTimeInMs != 0) {
+ usageTimeSummary.append(buildUsageTimeInfo(backgroundUsageTimeInMs,
+ R.string.battery_usage_background_less_than_one_minute,
+ R.string.battery_usage_for_background_time));
}
}
preference.setSummary(usageTimeSummary);
}
- private String buildUsageTimeInfo(long usageTimeInMs, boolean isBackground) {
- if (usageTimeInMs < DateUtils.MINUTE_IN_MILLIS) {
- return mPrefContext.getString(
- isBackground
- ? R.string.battery_usage_background_less_than_one_minute
- : R.string.battery_usage_total_less_than_one_minute);
+ private String buildUsageTimeInfo(long timeInMs, int lessThanOneMinuteResId, int normalResId) {
+ if (timeInMs < DateUtils.MINUTE_IN_MILLIS) {
+ return mPrefContext.getString(lessThanOneMinuteResId);
}
final CharSequence timeSequence =
- StringUtil.formatElapsedTime(mPrefContext, (double) usageTimeInMs,
+ StringUtil.formatElapsedTime(mPrefContext, (double) timeInMs,
/*withSeconds=*/ false, /*collapseTimeUnit=*/ false);
- final int resourceId =
- isBackground
- ? R.string.battery_usage_for_background_time
- : R.string.battery_usage_for_total_time;
- return mPrefContext.getString(resourceId, timeSequence);
+ return mPrefContext.getString(normalResId, 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 e5afcc241f9..ba7650cda36 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBreakdownControllerTest.java
@@ -25,6 +25,7 @@ import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import android.app.settings.SettingsEnums;
+import android.content.ContentValues;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
@@ -235,73 +236,117 @@ public final class BatteryUsageBreakdownControllerTest {
}
@Test
- public void setPreferenceSummary_setNullContentIfTotalUsageTimeIsZero() {
+ public void setPreferenceSummary_systemEntryTotalUsageTimeIsZero_emptySummary() {
final PowerGaugePreference pref = new PowerGaugePreference(mContext);
pref.setSummary(PREF_SUMMARY);
mBatteryUsageBreakdownController.setPreferenceSummary(
pref, createBatteryDiffEntry(
+ /*isSystem=*/ true,
+ /*screenOnTimeInMs=*/ 0,
/*foregroundUsageTimeInMs=*/ 0,
/*backgroundUsageTimeInMs=*/ 0));
- assertThat(pref.getSummary()).isNull();
+ assertThat(pref.getSummary().toString().isEmpty()).isTrue();
}
@Test
- public void setPreferenceSummary_setBackgroundUsageTimeOnly() {
+ public void setPreferenceSummary_systemEntryTotalUsageTimeLessThanAMinute_expectedSummary() {
final PowerGaugePreference pref = new PowerGaugePreference(mContext);
pref.setSummary(PREF_SUMMARY);
mBatteryUsageBreakdownController.setPreferenceSummary(
pref, createBatteryDiffEntry(
+ /*isSystem=*/ true,
+ /*screenOnTimeInMs=*/ 0,
+ /*foregroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS - 1,
+ /*backgroundUsageTimeInMs=*/ 0));
+ assertThat(pref.getSummary().toString()).isEqualTo("Total: less than a min");
+ }
+
+ @Test
+ public void setPreferenceSummary_systemEntryTotalUsageTimeGreaterThanAMinute_expectedSummary() {
+ final PowerGaugePreference pref = new PowerGaugePreference(mContext);
+ pref.setSummary(PREF_SUMMARY);
+
+ mBatteryUsageBreakdownController.setPreferenceSummary(
+ pref, createBatteryDiffEntry(
+ /*isSystem=*/ true,
+ /*screenOnTimeInMs=*/ 0,
+ /*foregroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS * 2,
+ /*backgroundUsageTimeInMs=*/ 0));
+ assertThat(pref.getSummary().toString()).isEqualTo("Total: 2 min");
+ }
+
+ @Test
+ public void setPreferenceSummary_appEntryAllTimesAreZero_emptySummary() {
+ final PowerGaugePreference pref = new PowerGaugePreference(mContext);
+ pref.setSummary(PREF_SUMMARY);
+
+ mBatteryUsageBreakdownController.setPreferenceSummary(
+ pref, createBatteryDiffEntry(
+ /*isSystem=*/ false,
+ /*screenOnTimeInMs=*/ 0,
+ /*foregroundUsageTimeInMs=*/ 0,
+ /*backgroundUsageTimeInMs=*/ 0));
+ assertThat(pref.getSummary().toString().isEmpty()).isTrue();
+ }
+
+ @Test
+ public void setPreferenceSummary_appEntryBackgroundUsageTimeOnly_expectedSummary() {
+ final PowerGaugePreference pref = new PowerGaugePreference(mContext);
+ pref.setSummary(PREF_SUMMARY);
+
+ mBatteryUsageBreakdownController.setPreferenceSummary(
+ pref, createBatteryDiffEntry(
+ /*isSystem=*/ false,
+ /*screenOnTimeInMs=*/ 0,
/*foregroundUsageTimeInMs=*/ 0,
/*backgroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS));
assertThat(pref.getSummary().toString()).isEqualTo("Background: 1 min");
}
@Test
- public void setPreferenceSummary_setTotalUsageTimeLessThanAMinute() {
+ public void setPreferenceSummary_appEntryScreenOnTimeOnly_expectedSummary() {
final PowerGaugePreference pref = new PowerGaugePreference(mContext);
pref.setSummary(PREF_SUMMARY);
mBatteryUsageBreakdownController.setPreferenceSummary(
pref, createBatteryDiffEntry(
- /*foregroundUsageTimeInMs=*/ 100,
- /*backgroundUsageTimeInMs=*/ 200));
- assertThat(pref.getSummary().toString()).isEqualTo("Total: less than a min");
+ /*isSystem=*/ false,
+ /*screenOnTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS,
+ /*foregroundUsageTimeInMs=*/ 0,
+ /*backgroundUsageTimeInMs=*/ 0));
+ assertThat(pref.getSummary().toString()).isEqualTo("Screen time: 1 min");
}
@Test
- public void setPreferenceSummary_setTotalTimeIfBackgroundTimeLessThanAMinute() {
+ public void setPreferenceSummary_appEntryAllTimesLessThanAMinute_expectedSummary() {
final PowerGaugePreference pref = new PowerGaugePreference(mContext);
pref.setSummary(PREF_SUMMARY);
mBatteryUsageBreakdownController.setPreferenceSummary(
pref, createBatteryDiffEntry(
- /*foregroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS,
- /*backgroundUsageTimeInMs=*/ 200));
- assertThat(pref.getSummary().toString())
- .isEqualTo("Total: 1 min\nBackground: less than a min");
+ /*isSystem=*/ false,
+ /*screenOnTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS - 1,
+ /*foregroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS - 1,
+ /*backgroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS - 1));
+ assertThat(pref.getSummary().toString()).isEqualTo(
+ "Screen time: less than a min\nBackground: less than a min");
}
- @Test
- public void setPreferenceSummary_setTotalAndBackgroundUsageTime() {
- final PowerGaugePreference pref = new PowerGaugePreference(mContext);
- pref.setSummary(PREF_SUMMARY);
-
- mBatteryUsageBreakdownController.setPreferenceSummary(
- pref, createBatteryDiffEntry(
- /*foregroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS,
- /*backgroundUsageTimeInMs=*/ DateUtils.MINUTE_IN_MILLIS));
- assertThat(pref.getSummary().toString()).isEqualTo("Total: 2 min\nBackground: 1 min");
- }
-
- private BatteryDiffEntry createBatteryDiffEntry(
+ private BatteryDiffEntry createBatteryDiffEntry(boolean isSystem, long screenOnTimeInMs,
long foregroundUsageTimeInMs, long backgroundUsageTimeInMs) {
+ final ContentValues contentValues = new ContentValues();
+ contentValues.put(BatteryHistEntry.KEY_CONSUMER_TYPE, Integer.valueOf(
+ isSystem ? ConvertUtils.CONSUMER_TYPE_SYSTEM_BATTERY
+ : ConvertUtils.CONSUMER_TYPE_UID_BATTERY));
+ contentValues.put(BatteryHistEntry.KEY_USER_ID, Integer.valueOf(1001));
+ final BatteryHistEntry batteryHistEntry = new BatteryHistEntry(contentValues);
return new BatteryDiffEntry(
- mContext, foregroundUsageTimeInMs, backgroundUsageTimeInMs, /*screenOnTimeInMs=*/ 0,
+ mContext, foregroundUsageTimeInMs, backgroundUsageTimeInMs, screenOnTimeInMs,
/*consumePower=*/ 0, /*foregroundUsageConsumePower=*/ 0,
/*foregroundServiceUsageConsumePower=*/ 0, /*backgroundUsageConsumePower=*/ 0,
- /*cachedUsageConsumePower=*/ 0, mBatteryHistEntry);
+ /*cachedUsageConsumePower=*/ 0, batteryHistEntry);
}
private BatteryUsageBreakdownController createController() {