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

Commit 83c84512 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Remove battery saver toggle from the Battery screen" into pi-dev

parents 048b71a6 f310f7e3
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -33,7 +33,7 @@
    <PreferenceCategory
        android:key="power_management">

        <com.android.settings.widget.MasterSwitchPreference
        <Preference
            android:fragment="com.android.settings.fuelgauge.batterysaver.BatterySaverSettings"
            android:key="battery_saver_summary"
            android:title="@string/battery_saver"
+6 −24
Original line number Diff line number Diff line
@@ -22,24 +22,24 @@ import android.os.Looper;
import android.os.PowerManager;
import android.provider.Settings;
import android.support.annotation.VisibleForTesting;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen;

import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.core.TogglePreferenceController;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.dashboard.conditional.BatterySaverCondition;
import com.android.settings.dashboard.conditional.ConditionManager;
import com.android.settings.widget.MasterSwitchPreference;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop;

public class BatterySaverController extends TogglePreferenceController
public class BatterySaverController extends BasePreferenceController
        implements LifecycleObserver, OnStart, OnStop, BatterySaverReceiver.BatterySaverListener {
    private static final String KEY_BATTERY_SAVER = "battery_saver_summary";
    private final BatterySaverReceiver mBatteryStateChangeReceiver;
    private final PowerManager mPowerManager;
    private MasterSwitchPreference mBatterySaverPref;
    private Preference mBatterySaverPref;

    public BatterySaverController(Context context) {
        super(context, KEY_BATTERY_SAVER);
@@ -62,24 +62,7 @@ public class BatterySaverController extends TogglePreferenceController
    @Override
    public void displayPreference(PreferenceScreen screen) {
        super.displayPreference(screen);
        mBatterySaverPref = (MasterSwitchPreference) screen.findPreference(KEY_BATTERY_SAVER);
    }

    @Override
    public boolean setChecked(boolean isChecked) {
        mBatterySaverPref.setChecked(isChecked);
        if (!mPowerManager.setPowerSaveMode(isChecked)) {
            return false;
        }

        refreshConditionManager();
        updateSummary();
        return true;
    }

    @Override
    public boolean isChecked() {
        return mPowerManager.isPowerSaveMode();
        mBatterySaverPref = screen.findPreference(KEY_BATTERY_SAVER);
    }

    @Override
@@ -89,6 +72,7 @@ public class BatterySaverController extends TogglePreferenceController
                , true, mObserver);

        mBatteryStateChangeReceiver.setListening(true);
        updateSummary();
    }

    @Override
@@ -130,12 +114,10 @@ public class BatterySaverController extends TogglePreferenceController

    @Override
    public void onPowerSaveModeChanged() {
        mBatterySaverPref.setChecked(mPowerManager.isPowerSaveMode());
        updateSummary();
    }

    @Override
    public void onBatteryChanged(boolean pluggedIn) {
        mBatterySaverPref.setSwitchEnabled(!pluggedIn);
    }
}
+25 −43
Original line number Diff line number Diff line
@@ -15,16 +15,21 @@
 */
package com.android.settings.fuelgauge;

import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.content.ContentResolver;
import android.content.Context;
import android.os.PowerManager;
import android.support.v7.preference.Preference;

import com.android.settings.R;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.widget.MasterSwitchPreference;
import com.android.settingslib.core.lifecycle.Lifecycle;

import org.junit.Before;
@@ -38,15 +43,19 @@ import org.robolectric.util.ReflectionHelpers;
public class BatterySaverControllerTest {

    @Mock
    private MasterSwitchPreference mBatterySaverPref;
    private Preference mBatterySaverPref;
    @Mock
    private PowerManager mPowerManager;
    @Mock
    private Context mContext;
    @Mock
    private Lifecycle mLifecycle;
    private ContentResolver mContentResolver;

    private BatterySaverController mBatterySaverController;

    private static final String SAVER_ON_SUMMARY = "saver-on";
    private static final String SAVER_OFF_SUMMARY = "saver-off";

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
@@ -55,54 +64,27 @@ public class BatterySaverControllerTest {
        ReflectionHelpers.setField(mBatterySaverController, "mPowerManager", mPowerManager);
        ReflectionHelpers.setField(mBatterySaverController, "mBatterySaverPref", mBatterySaverPref);
        doNothing().when(mBatterySaverController).refreshConditionManager();
    }

    @Test
    public void testOnPreferenceChange_TurnOnBatterySaver_BatterySaverOn() {
        testOnPreferenceChangeInner(true);
    }
        when(mContext.getContentResolver()).thenReturn(mContentResolver);

    @Test
    public void testOnPreferenceChange_TurnOffBatterySaver_BatterySaverOff() {
        testOnPreferenceChangeInner(false);
    }
        when(mContext.getString(anyInt(), any(Object.class)))
                .thenAnswer((inv) -> "str-" + inv.getArgument(0));

    @Test
    public void testUpdateState_SaverModeOn_PreferenceChecked() {
        testUpdateStateInner(true);
        when(mContext.getString(eq(R.string.battery_saver_on_summary), any(Object.class)))
                .thenReturn(SAVER_ON_SUMMARY);
        when(mContext.getString(eq(R.string.battery_saver_off_summary), any(Object.class)))
                .thenReturn(SAVER_OFF_SUMMARY);
    }

    @Test
    public void testUpdateState_SaverModeOff_PreferenceUnChecked() {
        testUpdateStateInner(false);
    public void testOnPreferenceChange_onStart() {
        mBatterySaverController.onStart();
        verify(mBatterySaverPref).setSummary(eq(SAVER_OFF_SUMMARY));
    }

    @Test
    public void testOnBatteryChanged_pluggedIn_setDisable() {
        mBatterySaverController.onBatteryChanged(true /* pluggedIn */);

        verify(mBatterySaverPref).setSwitchEnabled(false);
    }

    @Test
    public void testOnBatteryChanged_notPluggedIn_setEnable() {
        mBatterySaverController.onBatteryChanged(false /* pluggedIn */);

        verify(mBatterySaverPref).setSwitchEnabled(true);
    }

    private void testOnPreferenceChangeInner(final boolean saverOn) {
        when(mPowerManager.setPowerSaveMode(saverOn)).thenReturn(true);
        when(mPowerManager.isPowerSaveMode()).thenReturn(!saverOn);

        mBatterySaverController.onPreferenceChange(mBatterySaverPref, saverOn);
        verify(mPowerManager).setPowerSaveMode(saverOn);
    }

    private void testUpdateStateInner(final boolean saverOn) {
        when(mPowerManager.isPowerSaveMode()).thenReturn(saverOn);

        mBatterySaverController.updateState(mBatterySaverPref);
        verify(mBatterySaverPref).setChecked(saverOn);
    public void testOnPreferenceChange_onPowerSaveModeChanged() {
        mBatterySaverController.onPowerSaveModeChanged();
        verify(mBatterySaverPref).setSummary(eq(SAVER_OFF_SUMMARY));
    }
}