Merge "Apply extra saver confirmation dialog once required (1/2)" into udc-dev
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
@@ -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. -->
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user