From 205d8249a737e61bde5f43b198ab54a662dd8b7f Mon Sep 17 00:00:00 2001 From: Zaiyue Xue Date: Fri, 14 Apr 2023 14:22:57 +0800 Subject: [PATCH] String change to highlight calculation stopped at last even hour Bug: 278022447 Fix: 278022447 Test: manual Change-Id: Ia04ae7c7cb4c7ebdd40f4aa3df05b34d2ce66628 Merged-In: Ia08dea791bb72113719fd1316e8e9587a96eaef1 --- res/values/strings.xml | 4 ++ .../BatteryChartPreferenceController.java | 28 +++++++++++--- .../BatteryChartPreferenceControllerTest.java | 37 +++++++++++++++++-- 3 files changed, 60 insertions(+), 9 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index ccf4af7d432..1e48a974afa 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -7004,6 +7004,10 @@ System usage for %s App usage for %s + + System usage since last full charge to %s + + App usage since last full charge to %s Total: less than a min diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java index 56da0f47932..7ce8b3af2cc 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java +++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryChartPreferenceController.java @@ -593,8 +593,19 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll 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 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll 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 9fbcb1688db..10b957bc0aa 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 @@ public final class BatteryChartPreferenceControllerTest { } @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 @@ public final class BatteryChartPreferenceControllerTest { 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 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