Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d2ce1d91 authored by Wesley Wang's avatar Wesley Wang
Browse files

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
parent 34eecaad
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -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);
    }

+27 −0
Original line number Diff line number Diff line
@@ -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);
    }
}