Loading res/xml/power_usage_summary.xml +21 −15 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" xmlns:settings="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto" android:key="power_usage_summary_screen" android:title="@string/power_usage_summary_title" settings:keywords="@string/keywords_battery"> Loading @@ -31,6 +32,7 @@ android:fragment="com.android.settings.fuelgauge.PowerUsageAdvanced" android:key="battery_usage_summary" android:title="@string/advanced_battery_preference_title" app:iconSpaceReserved="false" settings:searchable="false" /> <com.android.settings.widget.CardPreference Loading @@ -38,23 +40,27 @@ android:title="@string/summary_placeholder" settings:controller="com.android.settings.fuelgauge.batterytip.BatteryTipPreferenceController" /> <com.android.settings.widget.PrimarySwitchPreference android:fragment="com.android.settings.fuelgauge.batterysaver.BatterySaverSettings" android:key="battery_saver_summary" android:title="@string/battery_saver" settings:controller="com.android.settings.fuelgauge.BatterySaverController" /> <PreferenceCategory> <SwitchPreference android:key="battery_percentage" android:title="@string/battery_percentage" android:summary="@string/battery_percentage_description" settings:controller="com.android.settings.display.BatteryPercentagePreferenceController" /> </PreferenceCategory> <PreferenceCategory> <Preference android:fragment="com.android.settings.fuelgauge.batterysaver.BatterySaverSettings" android:key="battery_saver_summary" android:title="@string/battery_saver" settings:controller="com.android.settings.fuelgauge.BatterySaverController" /> <Preference android:fragment="com.android.settings.fuelgauge.SmartBatterySettings" android:key="smart_battery_manager" android:title="@string/smart_battery_manager_title" settings:controller="com.android.settings.fuelgauge.batterytip.BatteryManagerPreferenceController" /> </PreferenceCategory> <com.android.settingslib.widget.FooterPreference android:key="power_usage_footer" Loading src/com/android/settings/fuelgauge/BatterySaverController.java +47 −19 Original line number Diff line number Diff line Loading @@ -15,14 +15,21 @@ */ package com.android.settings.fuelgauge; import android.content.ContentResolver; import android.content.Context; import android.database.ContentObserver; import android.os.Handler; import android.os.Looper; import android.os.PowerManager; import android.provider.Settings; import android.provider.Settings.Global; import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.core.TogglePreferenceController; import com.android.settings.widget.PrimarySwitchPreference; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.core.BasePreferenceController; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnStart; import com.android.settingslib.core.lifecycle.events.OnStop; Loading @@ -31,14 +38,19 @@ import com.android.settingslib.fuelgauge.BatterySaverUtils; /** * Controller to update the battery saver entry preference. */ 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; @VisibleForTesting PrimarySwitchPreference mBatterySaverPref; private Preference mBatterySaverPref; private final ContentObserver mObserver = new ContentObserver( new Handler(Looper.getMainLooper())) { @Override public void onChange(boolean selfChange) { updateSummary(); } }; public BatterySaverController(Context context) { super(context, KEY_BATTERY_SAVER); Loading Loading @@ -67,38 +79,54 @@ public class BatterySaverController extends TogglePreferenceController @Override public void onStart() { mContext.getContentResolver().registerContentObserver( Settings.Global.getUriFor(Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL), true /* notifyForDescendants */, mObserver); mBatteryStateChangeReceiver.setListening(true); updateSummary(); } @Override public void onStop() { mContext.getContentResolver().unregisterContentObserver(mObserver); mBatteryStateChangeReceiver.setListening(false); } @Override public void onPowerSaveModeChanged() { final boolean isChecked = isChecked(); if (mBatterySaverPref != null && mBatterySaverPref.isChecked() != isChecked) { mBatterySaverPref.setChecked(isChecked); public CharSequence getSummary() { final boolean isPowerSaveOn = mPowerManager.isPowerSaveMode(); if (isPowerSaveOn) { return mContext.getString(R.string.battery_saver_on_summary); } final ContentResolver resolver = mContext.getContentResolver(); final int mode = Settings.Global.getInt(resolver, Global.AUTOMATIC_POWER_SAVE_MODE, PowerManager.POWER_SAVE_MODE_TRIGGER_PERCENTAGE); if (mode == PowerManager.POWER_SAVE_MODE_TRIGGER_PERCENTAGE) { final int percent = Settings.Global.getInt(resolver, Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL, 0); return percent != 0 ? mContext.getString(R.string.battery_saver_off_scheduled_summary, Utils.formatPercentage(percent)) : mContext.getString(R.string.battery_saver_off_summary); } else { return mContext.getString(R.string.battery_saver_auto_routine); } } @Override public void onBatteryChanged(boolean pluggedIn) { private void updateSummary() { if (mBatterySaverPref != null) { mBatterySaverPref.setSwitchEnabled(!pluggedIn); mBatterySaverPref.setSummary(getSummary()); } } @Override public boolean isChecked() { return mPowerManager.isPowerSaveMode(); public void onPowerSaveModeChanged() { updateSummary(); } @Override public boolean setChecked(boolean stateOn) { return BatterySaverUtils.setPowerSaveMode(mContext, stateOn, false /* needFirstTimeWarning */); public void onBatteryChanged(boolean pluggedIn) { } } tests/robotests/src/com/android/settings/fuelgauge/BatterySaverControllerTest.java +37 −66 Original line number Diff line number Diff line Loading @@ -17,20 +17,15 @@ package com.android.settings.fuelgauge; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; import android.os.PowerManager; import android.view.LayoutInflater; import android.widget.LinearLayout; import android.provider.Settings; import androidx.preference.PreferenceViewHolder; import com.android.settings.R; import com.android.settings.widget.PrimarySwitchPreference; import androidx.preference.Preference; import org.junit.Before; import org.junit.Test; Loading @@ -39,108 +34,84 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.util.ReflectionHelpers; @RunWith(RobolectricTestRunner.class) public class BatterySaverControllerTest { @Mock private Preference mBatterySaverPref; @Mock private PowerManager mPowerManager; private BatterySaverController mBatterySaverController; private PrimarySwitchPreference mBatterySaverPref; private Context mContext; @Before public void setUp() { MockitoAnnotations.initMocks(this); final Context mContext = spy(RuntimeEnvironment.application); mBatterySaverPref = new PrimarySwitchPreference(mContext); final LayoutInflater inflater = LayoutInflater.from(mContext); final PreferenceViewHolder mHolder = PreferenceViewHolder.createInstanceForTests(inflater.inflate( com.android.settingslib.R.layout.preference_two_target, null)); final LinearLayout mWidgetView = mHolder.itemView.findViewById(android.R.id.widget_frame); inflater.inflate(R.layout.restricted_preference_widget_primary_switch, mWidgetView, true); mBatterySaverPref.onBindViewHolder(mHolder); doReturn(mPowerManager).when(mContext).getSystemService(Context.POWER_SERVICE); mContext = RuntimeEnvironment.application; mBatterySaverController = spy(new BatterySaverController(mContext)); ReflectionHelpers.setField(mBatterySaverController, "mPowerManager", mPowerManager); ReflectionHelpers.setField(mBatterySaverController, "mBatterySaverPref", mBatterySaverPref); mBatterySaverController = new BatterySaverController(mContext); mBatterySaverController.mBatterySaverPref = mBatterySaverPref; Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL, 0); } @Test public void onBatteryChanged_true_switchEnabled() { mBatterySaverController.onBatteryChanged(true); assertThat(mBatterySaverPref.getSwitch().isEnabled()).isFalse(); public void onPreferenceChange_onStart() { mBatterySaverController.onStart(); verify(mBatterySaverPref).setSummary("Off"); } @Test public void onBatteryChanged_false_switchDisabled() { mBatterySaverController.onBatteryChanged(false); assertThat(mBatterySaverPref.getSwitch().isEnabled()).isTrue(); public void onPreferenceChange_onPowerSaveModeChanged() { mBatterySaverController.onPowerSaveModeChanged(); verify(mBatterySaverPref).setSummary("Off"); } @Test public void onPowerSaveModeChanged_differentState_updateToIsChecked() { public void getSummary_batterySaverOn_showSummaryOn() { when(mPowerManager.isPowerSaveMode()).thenReturn(true); assertThat(mBatterySaverPref.isChecked()).isFalse(); mBatterySaverController.onPowerSaveModeChanged(); assertThat(mBatterySaverPref.isChecked()).isTrue(); assertThat(mBatterySaverController.getSummary()).isEqualTo("On"); } @Test public void onPowerSaveModeChanged_differentState_updateToUnChecked() { mBatterySaverPref.setChecked(true); public void getSummary_batterySaverOffButScheduled_showSummaryScheduled() { when(mPowerManager.isPowerSaveMode()).thenReturn(false); assertThat(mBatterySaverPref.isChecked()).isTrue(); mBatterySaverController.onPowerSaveModeChanged(); Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL, 15); assertThat(mBatterySaverPref.isChecked()).isFalse(); assertThat(mBatterySaverController.getSummary()).isEqualTo("Will turn on at 15%"); } @Test public void onPowerSaveModeChanged_sameState_noUpdate() { public void getSummary_batterySaverOffButScheduledZeroPercent_showSummaryOff() { when(mPowerManager.isPowerSaveMode()).thenReturn(false); assertThat(mBatterySaverPref.isChecked()).isFalse(); Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL, 0); mBatterySaverController.onPowerSaveModeChanged(); assertThat(mBatterySaverPref.isChecked()).isFalse(); } @Test public void setChecked_on_setPowerSaveMode() { mBatterySaverController.setChecked(true); verify(mPowerManager).setPowerSaveModeEnabled(true); assertThat(mBatterySaverController.getSummary()).isEqualTo("Off"); } @Test public void setChecked_off_unsetPowerSaveMode() { mBatterySaverController.setChecked(false); verify(mPowerManager).setPowerSaveModeEnabled(false); } @Test public void isChecked_on_powerSaveModeOn() { when(mPowerManager.isPowerSaveMode()).thenReturn(true); public void getSummary_batterySaverOffButScheduledBasedOnRoutine_showSummaryBasedOnRoutine() { when(mPowerManager.isPowerSaveMode()).thenReturn(false); Settings.Global.putInt( mContext.getContentResolver(), Settings.Global.AUTOMATIC_POWER_SAVE_MODE, PowerManager.POWER_SAVE_MODE_TRIGGER_DYNAMIC); assertThat(mBatterySaverController.isChecked()).isTrue(); assertThat(mBatterySaverController.getSummary()).isEqualTo("Based on your routine"); } @Test public void isChecked_off_powerSaveModeOff() { public void getSummary_batterySaverOff_showSummaryOff() { when(mPowerManager.isPowerSaveMode()).thenReturn(false); assertThat(mBatterySaverController.isChecked()).isFalse(); assertThat(mBatterySaverController.getSummary()).isEqualTo("Off"); } } Loading
res/xml/power_usage_summary.xml +21 −15 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" xmlns:settings="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto" android:key="power_usage_summary_screen" android:title="@string/power_usage_summary_title" settings:keywords="@string/keywords_battery"> Loading @@ -31,6 +32,7 @@ android:fragment="com.android.settings.fuelgauge.PowerUsageAdvanced" android:key="battery_usage_summary" android:title="@string/advanced_battery_preference_title" app:iconSpaceReserved="false" settings:searchable="false" /> <com.android.settings.widget.CardPreference Loading @@ -38,23 +40,27 @@ android:title="@string/summary_placeholder" settings:controller="com.android.settings.fuelgauge.batterytip.BatteryTipPreferenceController" /> <com.android.settings.widget.PrimarySwitchPreference android:fragment="com.android.settings.fuelgauge.batterysaver.BatterySaverSettings" android:key="battery_saver_summary" android:title="@string/battery_saver" settings:controller="com.android.settings.fuelgauge.BatterySaverController" /> <PreferenceCategory> <SwitchPreference android:key="battery_percentage" android:title="@string/battery_percentage" android:summary="@string/battery_percentage_description" settings:controller="com.android.settings.display.BatteryPercentagePreferenceController" /> </PreferenceCategory> <PreferenceCategory> <Preference android:fragment="com.android.settings.fuelgauge.batterysaver.BatterySaverSettings" android:key="battery_saver_summary" android:title="@string/battery_saver" settings:controller="com.android.settings.fuelgauge.BatterySaverController" /> <Preference android:fragment="com.android.settings.fuelgauge.SmartBatterySettings" android:key="smart_battery_manager" android:title="@string/smart_battery_manager_title" settings:controller="com.android.settings.fuelgauge.batterytip.BatteryManagerPreferenceController" /> </PreferenceCategory> <com.android.settingslib.widget.FooterPreference android:key="power_usage_footer" Loading
src/com/android/settings/fuelgauge/BatterySaverController.java +47 −19 Original line number Diff line number Diff line Loading @@ -15,14 +15,21 @@ */ package com.android.settings.fuelgauge; import android.content.ContentResolver; import android.content.Context; import android.database.ContentObserver; import android.os.Handler; import android.os.Looper; import android.os.PowerManager; import android.provider.Settings; import android.provider.Settings.Global; import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.core.TogglePreferenceController; import com.android.settings.widget.PrimarySwitchPreference; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.core.BasePreferenceController; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnStart; import com.android.settingslib.core.lifecycle.events.OnStop; Loading @@ -31,14 +38,19 @@ import com.android.settingslib.fuelgauge.BatterySaverUtils; /** * Controller to update the battery saver entry preference. */ 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; @VisibleForTesting PrimarySwitchPreference mBatterySaverPref; private Preference mBatterySaverPref; private final ContentObserver mObserver = new ContentObserver( new Handler(Looper.getMainLooper())) { @Override public void onChange(boolean selfChange) { updateSummary(); } }; public BatterySaverController(Context context) { super(context, KEY_BATTERY_SAVER); Loading Loading @@ -67,38 +79,54 @@ public class BatterySaverController extends TogglePreferenceController @Override public void onStart() { mContext.getContentResolver().registerContentObserver( Settings.Global.getUriFor(Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL), true /* notifyForDescendants */, mObserver); mBatteryStateChangeReceiver.setListening(true); updateSummary(); } @Override public void onStop() { mContext.getContentResolver().unregisterContentObserver(mObserver); mBatteryStateChangeReceiver.setListening(false); } @Override public void onPowerSaveModeChanged() { final boolean isChecked = isChecked(); if (mBatterySaverPref != null && mBatterySaverPref.isChecked() != isChecked) { mBatterySaverPref.setChecked(isChecked); public CharSequence getSummary() { final boolean isPowerSaveOn = mPowerManager.isPowerSaveMode(); if (isPowerSaveOn) { return mContext.getString(R.string.battery_saver_on_summary); } final ContentResolver resolver = mContext.getContentResolver(); final int mode = Settings.Global.getInt(resolver, Global.AUTOMATIC_POWER_SAVE_MODE, PowerManager.POWER_SAVE_MODE_TRIGGER_PERCENTAGE); if (mode == PowerManager.POWER_SAVE_MODE_TRIGGER_PERCENTAGE) { final int percent = Settings.Global.getInt(resolver, Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL, 0); return percent != 0 ? mContext.getString(R.string.battery_saver_off_scheduled_summary, Utils.formatPercentage(percent)) : mContext.getString(R.string.battery_saver_off_summary); } else { return mContext.getString(R.string.battery_saver_auto_routine); } } @Override public void onBatteryChanged(boolean pluggedIn) { private void updateSummary() { if (mBatterySaverPref != null) { mBatterySaverPref.setSwitchEnabled(!pluggedIn); mBatterySaverPref.setSummary(getSummary()); } } @Override public boolean isChecked() { return mPowerManager.isPowerSaveMode(); public void onPowerSaveModeChanged() { updateSummary(); } @Override public boolean setChecked(boolean stateOn) { return BatterySaverUtils.setPowerSaveMode(mContext, stateOn, false /* needFirstTimeWarning */); public void onBatteryChanged(boolean pluggedIn) { } }
tests/robotests/src/com/android/settings/fuelgauge/BatterySaverControllerTest.java +37 −66 Original line number Diff line number Diff line Loading @@ -17,20 +17,15 @@ package com.android.settings.fuelgauge; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; import android.os.PowerManager; import android.view.LayoutInflater; import android.widget.LinearLayout; import android.provider.Settings; import androidx.preference.PreferenceViewHolder; import com.android.settings.R; import com.android.settings.widget.PrimarySwitchPreference; import androidx.preference.Preference; import org.junit.Before; import org.junit.Test; Loading @@ -39,108 +34,84 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.util.ReflectionHelpers; @RunWith(RobolectricTestRunner.class) public class BatterySaverControllerTest { @Mock private Preference mBatterySaverPref; @Mock private PowerManager mPowerManager; private BatterySaverController mBatterySaverController; private PrimarySwitchPreference mBatterySaverPref; private Context mContext; @Before public void setUp() { MockitoAnnotations.initMocks(this); final Context mContext = spy(RuntimeEnvironment.application); mBatterySaverPref = new PrimarySwitchPreference(mContext); final LayoutInflater inflater = LayoutInflater.from(mContext); final PreferenceViewHolder mHolder = PreferenceViewHolder.createInstanceForTests(inflater.inflate( com.android.settingslib.R.layout.preference_two_target, null)); final LinearLayout mWidgetView = mHolder.itemView.findViewById(android.R.id.widget_frame); inflater.inflate(R.layout.restricted_preference_widget_primary_switch, mWidgetView, true); mBatterySaverPref.onBindViewHolder(mHolder); doReturn(mPowerManager).when(mContext).getSystemService(Context.POWER_SERVICE); mContext = RuntimeEnvironment.application; mBatterySaverController = spy(new BatterySaverController(mContext)); ReflectionHelpers.setField(mBatterySaverController, "mPowerManager", mPowerManager); ReflectionHelpers.setField(mBatterySaverController, "mBatterySaverPref", mBatterySaverPref); mBatterySaverController = new BatterySaverController(mContext); mBatterySaverController.mBatterySaverPref = mBatterySaverPref; Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL, 0); } @Test public void onBatteryChanged_true_switchEnabled() { mBatterySaverController.onBatteryChanged(true); assertThat(mBatterySaverPref.getSwitch().isEnabled()).isFalse(); public void onPreferenceChange_onStart() { mBatterySaverController.onStart(); verify(mBatterySaverPref).setSummary("Off"); } @Test public void onBatteryChanged_false_switchDisabled() { mBatterySaverController.onBatteryChanged(false); assertThat(mBatterySaverPref.getSwitch().isEnabled()).isTrue(); public void onPreferenceChange_onPowerSaveModeChanged() { mBatterySaverController.onPowerSaveModeChanged(); verify(mBatterySaverPref).setSummary("Off"); } @Test public void onPowerSaveModeChanged_differentState_updateToIsChecked() { public void getSummary_batterySaverOn_showSummaryOn() { when(mPowerManager.isPowerSaveMode()).thenReturn(true); assertThat(mBatterySaverPref.isChecked()).isFalse(); mBatterySaverController.onPowerSaveModeChanged(); assertThat(mBatterySaverPref.isChecked()).isTrue(); assertThat(mBatterySaverController.getSummary()).isEqualTo("On"); } @Test public void onPowerSaveModeChanged_differentState_updateToUnChecked() { mBatterySaverPref.setChecked(true); public void getSummary_batterySaverOffButScheduled_showSummaryScheduled() { when(mPowerManager.isPowerSaveMode()).thenReturn(false); assertThat(mBatterySaverPref.isChecked()).isTrue(); mBatterySaverController.onPowerSaveModeChanged(); Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL, 15); assertThat(mBatterySaverPref.isChecked()).isFalse(); assertThat(mBatterySaverController.getSummary()).isEqualTo("Will turn on at 15%"); } @Test public void onPowerSaveModeChanged_sameState_noUpdate() { public void getSummary_batterySaverOffButScheduledZeroPercent_showSummaryOff() { when(mPowerManager.isPowerSaveMode()).thenReturn(false); assertThat(mBatterySaverPref.isChecked()).isFalse(); Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL, 0); mBatterySaverController.onPowerSaveModeChanged(); assertThat(mBatterySaverPref.isChecked()).isFalse(); } @Test public void setChecked_on_setPowerSaveMode() { mBatterySaverController.setChecked(true); verify(mPowerManager).setPowerSaveModeEnabled(true); assertThat(mBatterySaverController.getSummary()).isEqualTo("Off"); } @Test public void setChecked_off_unsetPowerSaveMode() { mBatterySaverController.setChecked(false); verify(mPowerManager).setPowerSaveModeEnabled(false); } @Test public void isChecked_on_powerSaveModeOn() { when(mPowerManager.isPowerSaveMode()).thenReturn(true); public void getSummary_batterySaverOffButScheduledBasedOnRoutine_showSummaryBasedOnRoutine() { when(mPowerManager.isPowerSaveMode()).thenReturn(false); Settings.Global.putInt( mContext.getContentResolver(), Settings.Global.AUTOMATIC_POWER_SAVE_MODE, PowerManager.POWER_SAVE_MODE_TRIGGER_DYNAMIC); assertThat(mBatterySaverController.isChecked()).isTrue(); assertThat(mBatterySaverController.getSummary()).isEqualTo("Based on your routine"); } @Test public void isChecked_off_powerSaveModeOff() { public void getSummary_batterySaverOff_showSummaryOff() { when(mPowerManager.isPowerSaveMode()).thenReturn(false); assertThat(mBatterySaverController.isChecked()).isFalse(); assertThat(mBatterySaverController.getSummary()).isEqualTo("Off"); } }