Unchecked battery saver switch once it's 1st launch
- Add low battery warning ack check to onSwitchChanged(), reset the switch to off once it's 1st time launch, the switch should be enable by battery saver change event at 1st instead of enable directly, will not check this state anymore after 1st launch Bug: 227725656 Test: make RunSettingsRoboTests Change-Id: I79f502f567fae5dd10166d8b24fd50d59c261001
This commit is contained in:
@@ -22,6 +22,7 @@ import android.net.Uri;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.os.PowerManager;
|
||||
import android.provider.Settings;
|
||||
import android.provider.SettingsSlicesContract;
|
||||
import android.widget.Switch;
|
||||
|
||||
@@ -101,6 +102,11 @@ public class BatterySaverButtonPreferenceController extends
|
||||
|
||||
@Override
|
||||
public void onSwitchChanged(Switch switchView, boolean isChecked) {
|
||||
// Cancel preference's check state once it's first time launch
|
||||
if (isChecked && (Settings.Secure.getInt(mContext.getContentResolver(),
|
||||
Settings.Secure.LOW_POWER_WARNING_ACKNOWLEDGED, 0) == 0)) {
|
||||
mPreference.setChecked(false);
|
||||
}
|
||||
setChecked(isChecked);
|
||||
}
|
||||
|
||||
|
@@ -30,6 +30,7 @@ import static org.mockito.Mockito.when;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.PowerManager;
|
||||
import android.provider.Settings;
|
||||
import android.provider.SettingsSlicesContract;
|
||||
|
||||
import androidx.preference.PreferenceScreen;
|
||||
@@ -75,6 +76,24 @@ public class BatterySaverButtonPreferenceControllerTest {
|
||||
.isEqualTo(SettingsSlicesContract.AUTHORITY);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onSwitchChanged_isCheckedButNotAcked_preferenceIsUnchecked() {
|
||||
setLowPowerWarningAcked(/* acked= */ 0);
|
||||
|
||||
mController.onSwitchChanged(/* switchView= */ null, /* isChecked= */ true);
|
||||
|
||||
assertThat(mPreference.isChecked()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onSwitchChanged_isCheckedAndAcked_setPowerSaveMode() {
|
||||
setLowPowerWarningAcked(/* acked= */ 1);
|
||||
|
||||
mController.onSwitchChanged(/* switchView= */ null, /* isChecked= */ true);
|
||||
|
||||
verify(mPowerManager).setPowerSaveModeEnabled(true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateState_lowPowerOn_preferenceIsChecked() {
|
||||
when(mPowerManager.isPowerSaveMode()).thenReturn(true);
|
||||
@@ -126,4 +145,12 @@ public class BatterySaverButtonPreferenceControllerTest {
|
||||
public void isPublicSlice_returnsTrue() {
|
||||
assertThat(mController.isPublicSlice()).isTrue();
|
||||
}
|
||||
|
||||
// 0 means not acked, 1 means acked.
|
||||
private void setLowPowerWarningAcked(int acked) {
|
||||
Settings.Secure.putInt(
|
||||
mContext.getContentResolver(),
|
||||
Settings.Secure.LOW_POWER_WARNING_ACKNOWLEDGED,
|
||||
acked);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user