String change to highlight calculation stopped at last even hour
Bug: 278022447
Fix: 278022447
Test: manual
Change-Id: Ia04ae7c7cb4c7ebdd40f4aa3df05b34d2ce66628
Merged-In: Ia08dea791bb72113719fd1316e8e9587a96eaef1
diff --git a/res/values/strings.xml b/res/values/strings.xml
index ccf4af7..1e48a97 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -7004,6 +7004,10 @@
<string name="battery_system_usage_for">System usage for <xliff:g id="slot">%s</xliff:g></string>
<!-- [CHAR_LIMIT=NONE] Battery app usage section header -->
<string name="battery_app_usage_for">App usage for <xliff:g id="slot">%s</xliff:g></string>
+ <!-- [CHAR_LIMIT=NONE] Battery system usage section header since last full charge to slot_timestamp. Please use similar text with tc/3248552137819897140 -->
+ <string name="battery_system_usage_since_last_full_charge_to">System usage since last full charge to <xliff:g id="slot_timestamp" example="Friday 10 am">%s</xliff:g></string>
+ <!-- [CHAR_LIMIT=NONE] Battery app usage section header since last full charge to slot_timestamp. Please use similar text with tc/7309909074935858949 -->
+ <string name="battery_app_usage_since_last_full_charge_to">App usage since last full charge to <xliff:g id="slot_timestamp" example="Friday 10 am">%s</xliff:g></string>
<!-- [CHAR_LIMIT=NONE] Battery usage item for total usage time less than a minute -->
<string name="battery_usage_total_less_than_one_minute">Total: less than a min</string>
<!-- [CHAR_LIMIT=NONE] Battery usage item for total background time less than a minute -->
diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java
index 56da0f4..7ce8b3a 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java
@@ -593,8 +593,19 @@
private String getSlotInformation(boolean isApp, String slotInformation) {
// TODO: Updates the right slot information from daily and hourly chart selection.
- // Null means we show all information without a specific time slot.
- if (slotInformation == null) {
+ if (mDailyViewModel != null && mHourlyViewModels != null && isAllSelected()) {
+ int lastDailyChartIndex = mDailyViewModel.size() - 2;
+ int lastHourlyChartIndex = mHourlyViewModels.get(lastDailyChartIndex).size() - 1;
+ String lastSlotInformation = getSlotInformation(
+ lastDailyChartIndex, lastHourlyChartIndex, /*isDayTextOnly=*/ false);
+ return isApp
+ ? mPrefContext.getString(
+ R.string.battery_app_usage_since_last_full_charge_to,
+ lastSlotInformation)
+ : mPrefContext.getString(
+ R.string.battery_system_usage_since_last_full_charge_to,
+ lastSlotInformation);
+ } else if (slotInformation == null) {
return isApp
? mPrefContext.getString(R.string.battery_app_usage)
: mPrefContext.getString(R.string.battery_system_usage);
@@ -614,14 +625,19 @@
if (isAllSelected()) {
return null;
}
+ return getSlotInformation(mDailyChartIndex, mHourlyChartIndex,
+ /*isDayTextOnly=*/ mHourlyChartIndex == BatteryChartViewModel.SELECTED_INDEX_ALL);
+ }
- final String selectedDayText = mDailyViewModel.getFullText(mDailyChartIndex);
- if (mHourlyChartIndex == BatteryChartViewModel.SELECTED_INDEX_ALL) {
+ private String getSlotInformation(
+ int dailyChartIndex, int hourlyChartIndex, boolean isDayTextOnly) {
+ final String selectedDayText = mDailyViewModel.getFullText(dailyChartIndex);
+ if (isDayTextOnly) {
return selectedDayText;
}
- final String selectedHourText = mHourlyViewModels.get(mDailyChartIndex).getFullText(
- mHourlyChartIndex);
+ final String selectedHourText = mHourlyViewModels.get(dailyChartIndex).getFullText(
+ hourlyChartIndex);
if (isBatteryLevelDataInOneDay()) {
return selectedHourText;
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceControllerTest.java
index 9fbcb16..10b957b 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceControllerTest.java
@@ -571,12 +571,13 @@
}
@Test
- public void refreshCategoryTitle_setLastFullChargeIntoBothTitleTextView() {
+ public void refreshCategoryTitle_singleDayData_setLastFullChargeIntoBothTitleTextView() {
mBatteryChartPreferenceController = createController();
mBatteryChartPreferenceController.mAppListPrefGroup =
spy(new PreferenceCategory(mContext));
mBatteryChartPreferenceController.mExpandDividerPreference =
spy(new ExpandDividerPreference(mContext));
+ mBatteryChartPreferenceController.setBatteryHistoryMap(createBatteryHistoryMap(6));
// Simulates select all condition.
mBatteryChartPreferenceController.mDailyChartIndex =
BatteryChartViewModel.SELECTED_INDEX_ALL;
@@ -590,13 +591,43 @@
verify(mBatteryChartPreferenceController.mAppListPrefGroup)
.setTitle(captor.capture());
assertThat(captor.getValue())
- .isEqualTo("App usage since last full charge");
+ .isEqualTo("App usage since last full charge to 12 PM");
// Verifies the title in the expandable divider.
captor = ArgumentCaptor.forClass(String.class);
verify(mBatteryChartPreferenceController.mExpandDividerPreference)
.setTitle(captor.capture());
assertThat(captor.getValue())
- .isEqualTo("System usage since last full charge");
+ .isEqualTo("System usage since last full charge to 12 PM");
+ }
+
+ @Test
+ public void refreshCategoryTitle_multiDaysData_setLastFullChargeIntoBothTitleTextView() {
+ mBatteryChartPreferenceController = createController();
+ mBatteryChartPreferenceController.mAppListPrefGroup =
+ spy(new PreferenceCategory(mContext));
+ mBatteryChartPreferenceController.mExpandDividerPreference =
+ spy(new ExpandDividerPreference(mContext));
+ mBatteryChartPreferenceController.setBatteryHistoryMap(createBatteryHistoryMap(60));
+ // Simulates select all condition.
+ mBatteryChartPreferenceController.mDailyChartIndex =
+ BatteryChartViewModel.SELECTED_INDEX_ALL;
+ mBatteryChartPreferenceController.mHourlyChartIndex =
+ BatteryChartViewModel.SELECTED_INDEX_ALL;
+
+ mBatteryChartPreferenceController.refreshCategoryTitle();
+
+ ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
+ // Verifies the title in the preference group.
+ verify(mBatteryChartPreferenceController.mAppListPrefGroup)
+ .setTitle(captor.capture());
+ assertThat(captor.getValue())
+ .isEqualTo("App usage since last full charge to Monday 6 PM");
+ // Verifies the title in the expandable divider.
+ captor = ArgumentCaptor.forClass(String.class);
+ verify(mBatteryChartPreferenceController.mExpandDividerPreference)
+ .setTitle(captor.capture());
+ assertThat(captor.getValue())
+ .isEqualTo("System usage since last full charge to Monday 6 PM");
}
@Test