Loading res/values/arrays.xml +1 −6 Original line number Diff line number Diff line Loading @@ -1409,12 +1409,7 @@ <integer-array name="network_mode_3g_deprecated_carrier_id" translatable="false"> </integer-array> <!-- The following 4 arrays are for power anomaly tips card. Please keep them the same size. --> <string-array name="power_anomaly_keys" translatable="false"> <item>adaptive_brightness</item> <item>screen_timeout</item> </string-array> <!-- The following 3 arrays are for power anomaly tips card. Please keep them the same size. --> <string-array name="power_anomaly_titles"> <item>Turn on adaptive brightness to extend battery life</item> <item>Reduce screen timeout to extend battery life</item> Loading src/com/android/settings/fuelgauge/batteryusage/BatteryTipsController.java +8 −19 Original line number Diff line number Diff line Loading @@ -36,8 +36,6 @@ public class BatteryTipsController extends BasePreferenceController { private static final String ROOT_PREFERENCE_KEY = "battery_tips_category"; private static final String CARD_PREFERENCE_KEY = "battery_tips_card"; private final String[] mPowerAnomalyKeys; @VisibleForTesting BatteryTipsCardPreference mCardPreference; @VisibleForTesting Loading @@ -47,7 +45,6 @@ public class BatteryTipsController extends BasePreferenceController { super(context, ROOT_PREFERENCE_KEY); mPowerUsageFeatureProvider = FeatureFactory.getFeatureFactory() .getPowerUsageFeatureProvider(); mPowerAnomalyKeys = context.getResources().getStringArray(R.array.power_anomaly_keys); } private boolean isTipsCardVisible() { Loading @@ -66,16 +63,6 @@ public class BatteryTipsController extends BasePreferenceController { mCardPreference = screen.findPreference(CARD_PREFERENCE_KEY); } @VisibleForTesting int getPowerAnomalyEventIndex(String powerAnomalyKey) { for (int index = 0; index < mPowerAnomalyKeys.length; index++) { if (mPowerAnomalyKeys[index].equals(powerAnomalyKey)) { return index; } } return -1; } private <T> T getInfo(PowerAnomalyEvent powerAnomalyEvent, Function<WarningBannerInfo, T> warningBannerInfoSupplier, Function<WarningItemInfo, T> warningItemInfoSupplier) { Loading @@ -98,8 +85,9 @@ public class BatteryTipsController extends BasePreferenceController { return string; } if (resourceIndex >= 0) { string = mContext.getResources().getStringArray(resourceId)[resourceIndex]; String[] stringArray = mContext.getResources().getStringArray(resourceId); if (resourceIndex >= 0 && resourceIndex < stringArray.length) { string = stringArray[resourceIndex]; } return string; Loading @@ -117,10 +105,11 @@ public class BatteryTipsController extends BasePreferenceController { } // Get card preference strings and navigate fragment info final int index = getPowerAnomalyEventIndex(powerAnomalyEvent.getKey()); final int resourceIndex = powerAnomalyEvent.hasKey() ? powerAnomalyEvent.getKey().getNumber() : -1; String titleString = getString(powerAnomalyEvent, WarningBannerInfo::getTitleString, WarningItemInfo::getTitleString, R.array.power_anomaly_titles, index); WarningItemInfo::getTitleString, R.array.power_anomaly_titles, resourceIndex); if (titleString.isEmpty()) { mCardPreference.setVisible(false); return; Loading @@ -128,10 +117,10 @@ public class BatteryTipsController extends BasePreferenceController { String mainBtnString = getString(powerAnomalyEvent, WarningBannerInfo::getMainButtonString, WarningItemInfo::getMainButtonString, R.array.power_anomaly_main_btn_strings, index); R.array.power_anomaly_main_btn_strings, resourceIndex); String dismissBtnString = getString(powerAnomalyEvent, WarningBannerInfo::getCancelButtonString, WarningItemInfo::getCancelButtonString, R.array.power_anomaly_dismiss_btn_strings, index); R.array.power_anomaly_dismiss_btn_strings, resourceIndex); String destinationClassName = getString(powerAnomalyEvent, WarningBannerInfo::getMainButtonDestination, Loading src/com/android/settings/fuelgauge/protos/power_anomaly_event.proto +21 −2 Original line number Diff line number Diff line Loading @@ -11,8 +11,8 @@ message PowerAnomalyEventList { message PowerAnomalyEvent { optional string event_id = 1; optional int64 timestamp = 2; optional string type = 3; // e.g. settings, apps optional string key = 4; // e.g. brightness, significant_increase optional PowerAnomalyType type = 3; optional PowerAnomalyKey key = 4; optional float score = 5; oneof info { WarningBannerInfo warning_banner_info = 6; Loading @@ -20,6 +20,25 @@ message PowerAnomalyEvent { } } // NOTE: Please DO NOT delete enum items or change enum values. Use [deprecated = true] instead. // The enum value will be used to decide the tips card style like icons and colors. // // Next id: 2 enum PowerAnomalyType{ SETTINGS_BANNER = 0; APPS_ITEM = 1; } // NOTE: Please DO NOT delete enum items or change enum values. Use [deprecated = true] instead. // The enum value will be used to decide pre-defined title and button labels. // // Next id: 3 enum PowerAnomalyKey{ BRIGHTNESS = 0; SCREEN_TIMEOUT = 1; APP = 2; } message WarningBannerInfo { optional string title_string = 1; optional string description_string = 2; Loading tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsControllerTest.java +0 −17 Original line number Diff line number Diff line Loading @@ -16,8 +16,6 @@ package com.android.settings.fuelgauge.batteryusage; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; Loading Loading @@ -68,21 +66,6 @@ public final class BatteryTipsControllerTest { mBatteryTipsController.mPowerUsageFeatureProvider = mPowerUsageFeatureProvider; } @Test public void parsePowerAnomalyKey_preDefinedKeys_returnTrue() { final String[] keys = {"adaptive_brightness", "screen_timeout"}; for (int index = 0; index < keys.length; index++) { assertThat(mBatteryTipsController.getPowerAnomalyEventIndex(keys[index])) .isEqualTo(index); } } @Test public void parsePowerAnomalyKey_unknownKey_returnTrue() { final String key = "unknown_key_for_test"; assertThat(mBatteryTipsController.getPowerAnomalyEventIndex(key)).isEqualTo(-1); } @Test public void handleBatteryTipsCardUpdated_null_hidePreference() { mBatteryTipsController.handleBatteryTipsCardUpdated(/* powerAnomalyEvents= */ null); Loading tests/robotests/src/com/android/settings/testutils/BatteryTestUtils.java +6 −4 Original line number Diff line number Diff line Loading @@ -36,6 +36,8 @@ import com.android.settings.fuelgauge.batteryusage.ConvertUtils; import com.android.settings.fuelgauge.batteryusage.DeviceBatteryState; import com.android.settings.fuelgauge.batteryusage.PowerAnomalyEvent; import com.android.settings.fuelgauge.batteryusage.PowerAnomalyEventList; import com.android.settings.fuelgauge.batteryusage.PowerAnomalyKey; import com.android.settings.fuelgauge.batteryusage.PowerAnomalyType; import com.android.settings.fuelgauge.batteryusage.WarningBannerInfo; import com.android.settings.fuelgauge.batteryusage.db.AppUsageEventDao; import com.android.settings.fuelgauge.batteryusage.db.AppUsageEventEntity; Loading Loading @@ -209,8 +211,8 @@ public class BatteryTestUtils { /** Create a power anomaly event proto of adaptive brightness. */ public static PowerAnomalyEvent createAdaptiveBrightnessAnomalyEvent() { return PowerAnomalyEvent.newBuilder() .setType("settings banner") .setKey("adaptive_brightness") .setType(PowerAnomalyType.SETTINGS_BANNER) .setKey(PowerAnomalyKey.BRIGHTNESS) .setWarningBannerInfo(WarningBannerInfo.newBuilder() .setMainButtonDestination(AutoBrightnessSettings.class.getName()) .setMainButtonSourceMetricsCategory(SettingsEnums.SETTINGS_AUTO_BRIGHTNESS) Loading @@ -221,8 +223,8 @@ public class BatteryTestUtils { /** Create a power anomaly event proto of screen timeout. */ public static PowerAnomalyEvent createScreenTimeoutAnomalyEvent() { return PowerAnomalyEvent.newBuilder() .setType("settings banner") .setKey("screen_timeout") .setType(PowerAnomalyType.SETTINGS_BANNER) .setKey(PowerAnomalyKey.SCREEN_TIMEOUT) .setWarningBannerInfo(WarningBannerInfo.newBuilder() .setMainButtonDestination(ScreenTimeoutSettings.class.getName()) .setMainButtonSourceMetricsCategory(SettingsEnums.SCREEN_TIMEOUT) Loading Loading
res/values/arrays.xml +1 −6 Original line number Diff line number Diff line Loading @@ -1409,12 +1409,7 @@ <integer-array name="network_mode_3g_deprecated_carrier_id" translatable="false"> </integer-array> <!-- The following 4 arrays are for power anomaly tips card. Please keep them the same size. --> <string-array name="power_anomaly_keys" translatable="false"> <item>adaptive_brightness</item> <item>screen_timeout</item> </string-array> <!-- The following 3 arrays are for power anomaly tips card. Please keep them the same size. --> <string-array name="power_anomaly_titles"> <item>Turn on adaptive brightness to extend battery life</item> <item>Reduce screen timeout to extend battery life</item> Loading
src/com/android/settings/fuelgauge/batteryusage/BatteryTipsController.java +8 −19 Original line number Diff line number Diff line Loading @@ -36,8 +36,6 @@ public class BatteryTipsController extends BasePreferenceController { private static final String ROOT_PREFERENCE_KEY = "battery_tips_category"; private static final String CARD_PREFERENCE_KEY = "battery_tips_card"; private final String[] mPowerAnomalyKeys; @VisibleForTesting BatteryTipsCardPreference mCardPreference; @VisibleForTesting Loading @@ -47,7 +45,6 @@ public class BatteryTipsController extends BasePreferenceController { super(context, ROOT_PREFERENCE_KEY); mPowerUsageFeatureProvider = FeatureFactory.getFeatureFactory() .getPowerUsageFeatureProvider(); mPowerAnomalyKeys = context.getResources().getStringArray(R.array.power_anomaly_keys); } private boolean isTipsCardVisible() { Loading @@ -66,16 +63,6 @@ public class BatteryTipsController extends BasePreferenceController { mCardPreference = screen.findPreference(CARD_PREFERENCE_KEY); } @VisibleForTesting int getPowerAnomalyEventIndex(String powerAnomalyKey) { for (int index = 0; index < mPowerAnomalyKeys.length; index++) { if (mPowerAnomalyKeys[index].equals(powerAnomalyKey)) { return index; } } return -1; } private <T> T getInfo(PowerAnomalyEvent powerAnomalyEvent, Function<WarningBannerInfo, T> warningBannerInfoSupplier, Function<WarningItemInfo, T> warningItemInfoSupplier) { Loading @@ -98,8 +85,9 @@ public class BatteryTipsController extends BasePreferenceController { return string; } if (resourceIndex >= 0) { string = mContext.getResources().getStringArray(resourceId)[resourceIndex]; String[] stringArray = mContext.getResources().getStringArray(resourceId); if (resourceIndex >= 0 && resourceIndex < stringArray.length) { string = stringArray[resourceIndex]; } return string; Loading @@ -117,10 +105,11 @@ public class BatteryTipsController extends BasePreferenceController { } // Get card preference strings and navigate fragment info final int index = getPowerAnomalyEventIndex(powerAnomalyEvent.getKey()); final int resourceIndex = powerAnomalyEvent.hasKey() ? powerAnomalyEvent.getKey().getNumber() : -1; String titleString = getString(powerAnomalyEvent, WarningBannerInfo::getTitleString, WarningItemInfo::getTitleString, R.array.power_anomaly_titles, index); WarningItemInfo::getTitleString, R.array.power_anomaly_titles, resourceIndex); if (titleString.isEmpty()) { mCardPreference.setVisible(false); return; Loading @@ -128,10 +117,10 @@ public class BatteryTipsController extends BasePreferenceController { String mainBtnString = getString(powerAnomalyEvent, WarningBannerInfo::getMainButtonString, WarningItemInfo::getMainButtonString, R.array.power_anomaly_main_btn_strings, index); R.array.power_anomaly_main_btn_strings, resourceIndex); String dismissBtnString = getString(powerAnomalyEvent, WarningBannerInfo::getCancelButtonString, WarningItemInfo::getCancelButtonString, R.array.power_anomaly_dismiss_btn_strings, index); R.array.power_anomaly_dismiss_btn_strings, resourceIndex); String destinationClassName = getString(powerAnomalyEvent, WarningBannerInfo::getMainButtonDestination, Loading
src/com/android/settings/fuelgauge/protos/power_anomaly_event.proto +21 −2 Original line number Diff line number Diff line Loading @@ -11,8 +11,8 @@ message PowerAnomalyEventList { message PowerAnomalyEvent { optional string event_id = 1; optional int64 timestamp = 2; optional string type = 3; // e.g. settings, apps optional string key = 4; // e.g. brightness, significant_increase optional PowerAnomalyType type = 3; optional PowerAnomalyKey key = 4; optional float score = 5; oneof info { WarningBannerInfo warning_banner_info = 6; Loading @@ -20,6 +20,25 @@ message PowerAnomalyEvent { } } // NOTE: Please DO NOT delete enum items or change enum values. Use [deprecated = true] instead. // The enum value will be used to decide the tips card style like icons and colors. // // Next id: 2 enum PowerAnomalyType{ SETTINGS_BANNER = 0; APPS_ITEM = 1; } // NOTE: Please DO NOT delete enum items or change enum values. Use [deprecated = true] instead. // The enum value will be used to decide pre-defined title and button labels. // // Next id: 3 enum PowerAnomalyKey{ BRIGHTNESS = 0; SCREEN_TIMEOUT = 1; APP = 2; } message WarningBannerInfo { optional string title_string = 1; optional string description_string = 2; Loading
tests/robotests/src/com/android/settings/fuelgauge/batteryusage/BatteryTipsControllerTest.java +0 −17 Original line number Diff line number Diff line Loading @@ -16,8 +16,6 @@ package com.android.settings.fuelgauge.batteryusage; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; Loading Loading @@ -68,21 +66,6 @@ public final class BatteryTipsControllerTest { mBatteryTipsController.mPowerUsageFeatureProvider = mPowerUsageFeatureProvider; } @Test public void parsePowerAnomalyKey_preDefinedKeys_returnTrue() { final String[] keys = {"adaptive_brightness", "screen_timeout"}; for (int index = 0; index < keys.length; index++) { assertThat(mBatteryTipsController.getPowerAnomalyEventIndex(keys[index])) .isEqualTo(index); } } @Test public void parsePowerAnomalyKey_unknownKey_returnTrue() { final String key = "unknown_key_for_test"; assertThat(mBatteryTipsController.getPowerAnomalyEventIndex(key)).isEqualTo(-1); } @Test public void handleBatteryTipsCardUpdated_null_hidePreference() { mBatteryTipsController.handleBatteryTipsCardUpdated(/* powerAnomalyEvents= */ null); Loading
tests/robotests/src/com/android/settings/testutils/BatteryTestUtils.java +6 −4 Original line number Diff line number Diff line Loading @@ -36,6 +36,8 @@ import com.android.settings.fuelgauge.batteryusage.ConvertUtils; import com.android.settings.fuelgauge.batteryusage.DeviceBatteryState; import com.android.settings.fuelgauge.batteryusage.PowerAnomalyEvent; import com.android.settings.fuelgauge.batteryusage.PowerAnomalyEventList; import com.android.settings.fuelgauge.batteryusage.PowerAnomalyKey; import com.android.settings.fuelgauge.batteryusage.PowerAnomalyType; import com.android.settings.fuelgauge.batteryusage.WarningBannerInfo; import com.android.settings.fuelgauge.batteryusage.db.AppUsageEventDao; import com.android.settings.fuelgauge.batteryusage.db.AppUsageEventEntity; Loading Loading @@ -209,8 +211,8 @@ public class BatteryTestUtils { /** Create a power anomaly event proto of adaptive brightness. */ public static PowerAnomalyEvent createAdaptiveBrightnessAnomalyEvent() { return PowerAnomalyEvent.newBuilder() .setType("settings banner") .setKey("adaptive_brightness") .setType(PowerAnomalyType.SETTINGS_BANNER) .setKey(PowerAnomalyKey.BRIGHTNESS) .setWarningBannerInfo(WarningBannerInfo.newBuilder() .setMainButtonDestination(AutoBrightnessSettings.class.getName()) .setMainButtonSourceMetricsCategory(SettingsEnums.SETTINGS_AUTO_BRIGHTNESS) Loading @@ -221,8 +223,8 @@ public class BatteryTestUtils { /** Create a power anomaly event proto of screen timeout. */ public static PowerAnomalyEvent createScreenTimeoutAnomalyEvent() { return PowerAnomalyEvent.newBuilder() .setType("settings banner") .setKey("screen_timeout") .setType(PowerAnomalyType.SETTINGS_BANNER) .setKey(PowerAnomalyKey.SCREEN_TIMEOUT) .setWarningBannerInfo(WarningBannerInfo.newBuilder() .setMainButtonDestination(ScreenTimeoutSettings.class.getName()) .setMainButtonSourceMetricsCategory(SettingsEnums.SCREEN_TIMEOUT) Loading