Loading packages/SettingsLib/src/com/android/settingslib/fuelgauge/BatterySaverUtils.java +9 −4 Original line number Diff line number Diff line Loading @@ -169,8 +169,11 @@ public class BatterySaverUtils { */ public static boolean maybeShowBatterySaverConfirmation(Context context, Bundle extras) { if (Secure.getInt(context.getContentResolver(), Secure.LOW_POWER_WARNING_ACKNOWLEDGED, 0) != 0) { return false; // Already shown. Secure.LOW_POWER_WARNING_ACKNOWLEDGED, 0) != 0 && Secure.getInt(context.getContentResolver(), Secure.EXTRA_LOW_POWER_WARNING_ACKNOWLEDGED, 0) != 0) { // Already shown. return false; } context.sendBroadcast( getSystemUiBroadcast(ACTION_SHOW_START_SAVER_CONFIRMATION, extras)); Loading @@ -190,8 +193,10 @@ public class BatterySaverUtils { } private static void setBatterySaverConfirmationAcknowledged(Context context) { Secure.putIntForUser(context.getContentResolver(), Secure.LOW_POWER_WARNING_ACKNOWLEDGED, 1, UserHandle.USER_CURRENT); Secure.putIntForUser(context.getContentResolver(), Secure.LOW_POWER_WARNING_ACKNOWLEDGED, 1, UserHandle.USER_CURRENT); Secure.putIntForUser(context.getContentResolver(), Secure.EXTRA_LOW_POWER_WARNING_ACKNOWLEDGED, 1, UserHandle.USER_CURRENT); } /** Loading packages/SettingsLib/tests/robotests/src/com/android/settingslib/fuelgauge/BatterySaverUtilsTest.java +26 −5 Original line number Diff line number Diff line Loading @@ -69,6 +69,7 @@ public class BatterySaverUtilsTest { @Test public void testSetPowerSaveMode_enable_firstCall_needWarning() { Secure.putString(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, "null"); Secure.putString(mMockResolver, Secure.EXTRA_LOW_POWER_WARNING_ACKNOWLEDGED, "null"); Secure.putString(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, "null"); assertThat(BatterySaverUtils.setPowerSaveMode(mMockContext, true, true)).isFalse(); Loading @@ -77,15 +78,18 @@ public class BatterySaverUtilsTest { verify(mMockPowerManager, times(0)).setPowerSaveModeEnabled(anyBoolean()); // They shouldn't have changed. assertEquals(-1, Secure.getInt(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, -1)); assertEquals(-1, Secure.getInt(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, -1)); Secure.getInt(mMockResolver, Secure.EXTRA_LOW_POWER_WARNING_ACKNOWLEDGED, -1)); assertEquals(-2, Secure.getInt(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, -2)); } @Test public void testSetPowerSaveMode_enable_secondCall_needWarning() { Secure.putInt(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, 1); // Already acked. // Already acked. Secure.putInt(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, 1); Secure.putInt(mMockResolver, Secure.EXTRA_LOW_POWER_WARNING_ACKNOWLEDGED, 1); Secure.putString(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, "null"); assertThat(BatterySaverUtils.setPowerSaveMode(mMockContext, true, true)).isTrue(); Loading @@ -94,12 +98,17 @@ public class BatterySaverUtilsTest { verify(mMockPowerManager, times(1)).setPowerSaveModeEnabled(eq(true)); assertEquals(1, Secure.getInt(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, -1)); assertEquals(1, Secure.getInt(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, -2)); assertEquals(1, Secure.getInt(mMockResolver, Secure.EXTRA_LOW_POWER_WARNING_ACKNOWLEDGED, -1)); assertEquals(1, Secure.getInt(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, -2)); } @Test public void testSetPowerSaveMode_enable_thridCall_needWarning() { Secure.putInt(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, 1); // Already acked. // Already acked. Secure.putInt(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, 1); Secure.putInt(mMockResolver, Secure.EXTRA_LOW_POWER_WARNING_ACKNOWLEDGED, 1); Secure.putInt(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, 1); assertThat(BatterySaverUtils.setPowerSaveMode(mMockContext, true, true)).isTrue(); Loading @@ -108,12 +117,16 @@ public class BatterySaverUtilsTest { verify(mMockPowerManager, times(1)).setPowerSaveModeEnabled(eq(true)); assertEquals(1, Secure.getInt(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, -1)); assertEquals(2, Secure.getInt(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, -2)); assertEquals(1, Secure.getInt(mMockResolver, Secure.EXTRA_LOW_POWER_WARNING_ACKNOWLEDGED, -1)); assertEquals(2, Secure.getInt(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, -2)); } @Test public void testSetPowerSaveMode_enable_firstCall_noWarning() { Secure.putString(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, "null"); Secure.putString(mMockResolver, Secure.EXTRA_LOW_POWER_WARNING_ACKNOWLEDGED, "null"); Secure.putString(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, "null"); assertThat(BatterySaverUtils.setPowerSaveMode(mMockContext, true, false)).isTrue(); Loading @@ -122,12 +135,15 @@ public class BatterySaverUtilsTest { verify(mMockPowerManager, times(1)).setPowerSaveModeEnabled(eq(true)); assertEquals(1, Secure.getInt(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, -1)); assertEquals(1, Secure.getInt(mMockResolver, Secure.EXTRA_LOW_POWER_WARNING_ACKNOWLEDGED, -1)); assertEquals(1, Secure.getInt(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, -2)); } @Test public void testSetPowerSaveMode_disable_firstCall_noWarning() { Secure.putString(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, "null"); Secure.putString(mMockResolver, Secure.EXTRA_LOW_POWER_WARNING_ACKNOWLEDGED, "null"); Secure.putString(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, "null"); // When disabling, needFirstTimeWarning doesn't matter. Loading @@ -137,6 +153,8 @@ public class BatterySaverUtilsTest { verify(mMockPowerManager, times(1)).setPowerSaveModeEnabled(eq(false)); assertEquals(-1, Secure.getInt(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, -1)); assertEquals(-1, Secure.getInt(mMockResolver, Secure.EXTRA_LOW_POWER_WARNING_ACKNOWLEDGED, -1)); assertEquals(-2, Secure.getInt(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, -2)); } Loading @@ -144,6 +162,7 @@ public class BatterySaverUtilsTest { @Test public void testSetPowerSaveMode_disable_firstCall_needWarning() { Secure.putString(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, "null"); Secure.putString(mMockResolver, Secure.EXTRA_LOW_POWER_WARNING_ACKNOWLEDGED, "null"); Secure.putString(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, "null"); // When disabling, needFirstTimeWarning doesn't matter. Loading @@ -153,6 +172,8 @@ public class BatterySaverUtilsTest { verify(mMockPowerManager, times(1)).setPowerSaveModeEnabled(eq(false)); assertEquals(-1, Secure.getInt(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, -1)); assertEquals(-1, Secure.getInt(mMockResolver, Secure.EXTRA_LOW_POWER_WARNING_ACKNOWLEDGED, -1)); assertEquals(-2, Secure.getInt(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, -2)); } Loading packages/SystemUI/res/values/config.xml +2 −2 Original line number Diff line number Diff line Loading @@ -500,8 +500,8 @@ space --> <bool name="config_showBatteryEstimateQSBH">false</bool> <!-- Whether to show a severe low battery dialog. --> <bool name="config_severe_battery_dialog">false</bool> <!-- Whether to show extra battery saver confirmation dialog. --> <bool name="config_extra_battery_saver_confirmation">false</bool> <!-- A path representing a shield. Will sometimes be displayed with the battery icon when needed. This path is a 10px wide and 13px tall. --> Loading packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java +8 −1 Original line number Diff line number Diff line Loading @@ -154,6 +154,7 @@ public class PowerNotificationWarnings implements PowerUI.WarningsUI { private final Intent mOpenBatterySettings = settings(Intent.ACTION_POWER_USAGE_SUMMARY); private final Intent mOpenBatterySaverSettings = settings(Settings.ACTION_BATTERY_SAVER_SETTINGS); private final boolean mUseExtraSaverConfirmation; private int mBatteryLevel; private int mBucket; Loading Loading @@ -197,6 +198,8 @@ public class PowerNotificationWarnings implements PowerUI.WarningsUI { mDialogLaunchAnimator = dialogLaunchAnimator; mUiEventLogger = uiEventLogger; mUserTracker = userTracker; mUseExtraSaverConfirmation = mContext.getResources().getBoolean(R.bool.config_extra_battery_saver_confirmation); } @Override Loading Loading @@ -644,7 +647,7 @@ public class PowerNotificationWarnings implements PowerUI.WarningsUI { } private void showStartSaverConfirmation(Bundle extras) { if (mSaverConfirmation != null) return; if (mSaverConfirmation != null || mUseExtraSaverConfirmation) return; final SystemUIDialog d = new SystemUIDialog(mContext); final boolean confirmOnly = extras.getBoolean(BatterySaverUtils.EXTRA_CONFIRM_TEXT_ONLY); final int batterySaverTriggerMode = Loading Loading @@ -679,6 +682,10 @@ public class PowerNotificationWarnings implements PowerUI.WarningsUI { resolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, 1, mUserTracker.getUserId()); Secure.putIntForUser( resolver, Secure.EXTRA_LOW_POWER_WARNING_ACKNOWLEDGED, 1, mUserTracker.getUserId()); }); } else { d.setTitle(R.string.battery_saver_confirmation_title); Loading Loading
packages/SettingsLib/src/com/android/settingslib/fuelgauge/BatterySaverUtils.java +9 −4 Original line number Diff line number Diff line Loading @@ -169,8 +169,11 @@ public class BatterySaverUtils { */ public static boolean maybeShowBatterySaverConfirmation(Context context, Bundle extras) { if (Secure.getInt(context.getContentResolver(), Secure.LOW_POWER_WARNING_ACKNOWLEDGED, 0) != 0) { return false; // Already shown. Secure.LOW_POWER_WARNING_ACKNOWLEDGED, 0) != 0 && Secure.getInt(context.getContentResolver(), Secure.EXTRA_LOW_POWER_WARNING_ACKNOWLEDGED, 0) != 0) { // Already shown. return false; } context.sendBroadcast( getSystemUiBroadcast(ACTION_SHOW_START_SAVER_CONFIRMATION, extras)); Loading @@ -190,8 +193,10 @@ public class BatterySaverUtils { } private static void setBatterySaverConfirmationAcknowledged(Context context) { Secure.putIntForUser(context.getContentResolver(), Secure.LOW_POWER_WARNING_ACKNOWLEDGED, 1, UserHandle.USER_CURRENT); Secure.putIntForUser(context.getContentResolver(), Secure.LOW_POWER_WARNING_ACKNOWLEDGED, 1, UserHandle.USER_CURRENT); Secure.putIntForUser(context.getContentResolver(), Secure.EXTRA_LOW_POWER_WARNING_ACKNOWLEDGED, 1, UserHandle.USER_CURRENT); } /** Loading
packages/SettingsLib/tests/robotests/src/com/android/settingslib/fuelgauge/BatterySaverUtilsTest.java +26 −5 Original line number Diff line number Diff line Loading @@ -69,6 +69,7 @@ public class BatterySaverUtilsTest { @Test public void testSetPowerSaveMode_enable_firstCall_needWarning() { Secure.putString(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, "null"); Secure.putString(mMockResolver, Secure.EXTRA_LOW_POWER_WARNING_ACKNOWLEDGED, "null"); Secure.putString(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, "null"); assertThat(BatterySaverUtils.setPowerSaveMode(mMockContext, true, true)).isFalse(); Loading @@ -77,15 +78,18 @@ public class BatterySaverUtilsTest { verify(mMockPowerManager, times(0)).setPowerSaveModeEnabled(anyBoolean()); // They shouldn't have changed. assertEquals(-1, Secure.getInt(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, -1)); assertEquals(-1, Secure.getInt(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, -1)); Secure.getInt(mMockResolver, Secure.EXTRA_LOW_POWER_WARNING_ACKNOWLEDGED, -1)); assertEquals(-2, Secure.getInt(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, -2)); } @Test public void testSetPowerSaveMode_enable_secondCall_needWarning() { Secure.putInt(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, 1); // Already acked. // Already acked. Secure.putInt(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, 1); Secure.putInt(mMockResolver, Secure.EXTRA_LOW_POWER_WARNING_ACKNOWLEDGED, 1); Secure.putString(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, "null"); assertThat(BatterySaverUtils.setPowerSaveMode(mMockContext, true, true)).isTrue(); Loading @@ -94,12 +98,17 @@ public class BatterySaverUtilsTest { verify(mMockPowerManager, times(1)).setPowerSaveModeEnabled(eq(true)); assertEquals(1, Secure.getInt(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, -1)); assertEquals(1, Secure.getInt(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, -2)); assertEquals(1, Secure.getInt(mMockResolver, Secure.EXTRA_LOW_POWER_WARNING_ACKNOWLEDGED, -1)); assertEquals(1, Secure.getInt(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, -2)); } @Test public void testSetPowerSaveMode_enable_thridCall_needWarning() { Secure.putInt(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, 1); // Already acked. // Already acked. Secure.putInt(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, 1); Secure.putInt(mMockResolver, Secure.EXTRA_LOW_POWER_WARNING_ACKNOWLEDGED, 1); Secure.putInt(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, 1); assertThat(BatterySaverUtils.setPowerSaveMode(mMockContext, true, true)).isTrue(); Loading @@ -108,12 +117,16 @@ public class BatterySaverUtilsTest { verify(mMockPowerManager, times(1)).setPowerSaveModeEnabled(eq(true)); assertEquals(1, Secure.getInt(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, -1)); assertEquals(2, Secure.getInt(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, -2)); assertEquals(1, Secure.getInt(mMockResolver, Secure.EXTRA_LOW_POWER_WARNING_ACKNOWLEDGED, -1)); assertEquals(2, Secure.getInt(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, -2)); } @Test public void testSetPowerSaveMode_enable_firstCall_noWarning() { Secure.putString(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, "null"); Secure.putString(mMockResolver, Secure.EXTRA_LOW_POWER_WARNING_ACKNOWLEDGED, "null"); Secure.putString(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, "null"); assertThat(BatterySaverUtils.setPowerSaveMode(mMockContext, true, false)).isTrue(); Loading @@ -122,12 +135,15 @@ public class BatterySaverUtilsTest { verify(mMockPowerManager, times(1)).setPowerSaveModeEnabled(eq(true)); assertEquals(1, Secure.getInt(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, -1)); assertEquals(1, Secure.getInt(mMockResolver, Secure.EXTRA_LOW_POWER_WARNING_ACKNOWLEDGED, -1)); assertEquals(1, Secure.getInt(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, -2)); } @Test public void testSetPowerSaveMode_disable_firstCall_noWarning() { Secure.putString(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, "null"); Secure.putString(mMockResolver, Secure.EXTRA_LOW_POWER_WARNING_ACKNOWLEDGED, "null"); Secure.putString(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, "null"); // When disabling, needFirstTimeWarning doesn't matter. Loading @@ -137,6 +153,8 @@ public class BatterySaverUtilsTest { verify(mMockPowerManager, times(1)).setPowerSaveModeEnabled(eq(false)); assertEquals(-1, Secure.getInt(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, -1)); assertEquals(-1, Secure.getInt(mMockResolver, Secure.EXTRA_LOW_POWER_WARNING_ACKNOWLEDGED, -1)); assertEquals(-2, Secure.getInt(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, -2)); } Loading @@ -144,6 +162,7 @@ public class BatterySaverUtilsTest { @Test public void testSetPowerSaveMode_disable_firstCall_needWarning() { Secure.putString(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, "null"); Secure.putString(mMockResolver, Secure.EXTRA_LOW_POWER_WARNING_ACKNOWLEDGED, "null"); Secure.putString(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, "null"); // When disabling, needFirstTimeWarning doesn't matter. Loading @@ -153,6 +172,8 @@ public class BatterySaverUtilsTest { verify(mMockPowerManager, times(1)).setPowerSaveModeEnabled(eq(false)); assertEquals(-1, Secure.getInt(mMockResolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, -1)); assertEquals(-1, Secure.getInt(mMockResolver, Secure.EXTRA_LOW_POWER_WARNING_ACKNOWLEDGED, -1)); assertEquals(-2, Secure.getInt(mMockResolver, Secure.LOW_POWER_MANUAL_ACTIVATION_COUNT, -2)); } Loading
packages/SystemUI/res/values/config.xml +2 −2 Original line number Diff line number Diff line Loading @@ -500,8 +500,8 @@ space --> <bool name="config_showBatteryEstimateQSBH">false</bool> <!-- Whether to show a severe low battery dialog. --> <bool name="config_severe_battery_dialog">false</bool> <!-- Whether to show extra battery saver confirmation dialog. --> <bool name="config_extra_battery_saver_confirmation">false</bool> <!-- A path representing a shield. Will sometimes be displayed with the battery icon when needed. This path is a 10px wide and 13px tall. --> Loading
packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java +8 −1 Original line number Diff line number Diff line Loading @@ -154,6 +154,7 @@ public class PowerNotificationWarnings implements PowerUI.WarningsUI { private final Intent mOpenBatterySettings = settings(Intent.ACTION_POWER_USAGE_SUMMARY); private final Intent mOpenBatterySaverSettings = settings(Settings.ACTION_BATTERY_SAVER_SETTINGS); private final boolean mUseExtraSaverConfirmation; private int mBatteryLevel; private int mBucket; Loading Loading @@ -197,6 +198,8 @@ public class PowerNotificationWarnings implements PowerUI.WarningsUI { mDialogLaunchAnimator = dialogLaunchAnimator; mUiEventLogger = uiEventLogger; mUserTracker = userTracker; mUseExtraSaverConfirmation = mContext.getResources().getBoolean(R.bool.config_extra_battery_saver_confirmation); } @Override Loading Loading @@ -644,7 +647,7 @@ public class PowerNotificationWarnings implements PowerUI.WarningsUI { } private void showStartSaverConfirmation(Bundle extras) { if (mSaverConfirmation != null) return; if (mSaverConfirmation != null || mUseExtraSaverConfirmation) return; final SystemUIDialog d = new SystemUIDialog(mContext); final boolean confirmOnly = extras.getBoolean(BatterySaverUtils.EXTRA_CONFIRM_TEXT_ONLY); final int batterySaverTriggerMode = Loading Loading @@ -679,6 +682,10 @@ public class PowerNotificationWarnings implements PowerUI.WarningsUI { resolver, Secure.LOW_POWER_WARNING_ACKNOWLEDGED, 1, mUserTracker.getUserId()); Secure.putIntForUser( resolver, Secure.EXTRA_LOW_POWER_WARNING_ACKNOWLEDGED, 1, mUserTracker.getUserId()); }); } else { d.setTitle(R.string.battery_saver_confirmation_title); Loading