Loading res/xml/power_usage_summary.xml +1 −1 Original line number Diff line number Diff line Loading @@ -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" Loading src/com/android/settings/fuelgauge/BatterySaverController.java +6 −24 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -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 Loading @@ -89,6 +72,7 @@ public class BatterySaverController extends TogglePreferenceController , true, mObserver); mBatteryStateChangeReceiver.setListening(true); updateSummary(); } @Override Loading Loading @@ -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); } } tests/robotests/src/com/android/settings/fuelgauge/BatterySaverControllerTest.java +25 −43 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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); Loading @@ -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)); } } Loading
res/xml/power_usage_summary.xml +1 −1 Original line number Diff line number Diff line Loading @@ -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" Loading
src/com/android/settings/fuelgauge/BatterySaverController.java +6 −24 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -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 Loading @@ -89,6 +72,7 @@ public class BatterySaverController extends TogglePreferenceController , true, mObserver); mBatteryStateChangeReceiver.setListening(true); updateSummary(); } @Override Loading Loading @@ -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); } }
tests/robotests/src/com/android/settings/fuelgauge/BatterySaverControllerTest.java +25 −43 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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); Loading @@ -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)); } }