Merge "Unchecked battery saver switch once it's 1st launch" into tm-dev

This commit is contained in:
TreeHugger Robot
2022-04-13 11:15:46 +00:00
committed by Android (Google) Code Review
2 changed files with 33 additions and 0 deletions

View File

@@ -22,6 +22,7 @@ import android.net.Uri;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;
import android.os.PowerManager; import android.os.PowerManager;
import android.provider.Settings;
import android.provider.SettingsSlicesContract; import android.provider.SettingsSlicesContract;
import android.widget.Switch; import android.widget.Switch;
@@ -101,6 +102,11 @@ public class BatterySaverButtonPreferenceController extends
@Override @Override
public void onSwitchChanged(Switch switchView, boolean isChecked) { 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); setChecked(isChecked);
} }

View File

@@ -30,6 +30,7 @@ import static org.mockito.Mockito.when;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.PowerManager; import android.os.PowerManager;
import android.provider.Settings;
import android.provider.SettingsSlicesContract; import android.provider.SettingsSlicesContract;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
@@ -75,6 +76,24 @@ public class BatterySaverButtonPreferenceControllerTest {
.isEqualTo(SettingsSlicesContract.AUTHORITY); .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 @Test
public void updateState_lowPowerOn_preferenceIsChecked() { public void updateState_lowPowerOn_preferenceIsChecked() {
when(mPowerManager.isPowerSaveMode()).thenReturn(true); when(mPowerManager.isPowerSaveMode()).thenReturn(true);
@@ -126,4 +145,12 @@ public class BatterySaverButtonPreferenceControllerTest {
public void isPublicSlice_returnsTrue() { public void isPublicSlice_returnsTrue() {
assertThat(mController.isPublicSlice()).isTrue(); 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);
}
} }