From 5013f4f9f87497c0245a32868fe9a79fe76e0392 Mon Sep 17 00:00:00 2001 From: Wesley Wang Date: Wed, 1 Mar 2023 18:24:47 +0800 Subject: [PATCH] Apply extra saver confirmation dialog once required (1/2) - Disable orignal confirmation dialog once extra confirmation exist - Rename config Bug: 260380584 Test: atest SystemUITests Change-Id: I593f68e590fd5f800f32ff55a08a62056843b405 --- .../fuelgauge/BatterySaverUtils.java | 13 +++++--- .../fuelgauge/BatterySaverUtilsTest.java | 31 ++++++++++++++++--- packages/SystemUI/res/values/config.xml | 4 +-- .../power/PowerNotificationWarnings.java | 9 +++++- 4 files changed, 45 insertions(+), 12 deletions(-) diff --git a/packages/SettingsLib/src/com/android/settingslib/fuelgauge/BatterySaverUtils.java b/packages/SettingsLib/src/com/android/settingslib/fuelgauge/BatterySaverUtils.java index 28353ab7dff42..52f3111d967c5 100644 --- a/packages/SettingsLib/src/com/android/settingslib/fuelgauge/BatterySaverUtils.java +++ b/packages/SettingsLib/src/com/android/settingslib/fuelgauge/BatterySaverUtils.java @@ -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)); @@ -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); } /** diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/fuelgauge/BatterySaverUtilsTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/fuelgauge/BatterySaverUtilsTest.java index a15fe9f90206f..ad022a63eaf6a 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/fuelgauge/BatterySaverUtilsTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/fuelgauge/BatterySaverUtilsTest.java @@ -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(); @@ -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(); @@ -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(); @@ -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(); @@ -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. @@ -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)); } @@ -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. @@ -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)); } diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml index 738cfd7c95bf4..e65c327736e1a 100644 --- a/packages/SystemUI/res/values/config.xml +++ b/packages/SystemUI/res/values/config.xml @@ -500,8 +500,8 @@ space --> false - - false + + false diff --git a/packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java b/packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java index 2522e1c5b7985..7a42642f26671 100644 --- a/packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java +++ b/packages/SystemUI/src/com/android/systemui/power/PowerNotificationWarnings.java @@ -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; @@ -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 @@ -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 = @@ -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);