diff --git a/res/values/strings.xml b/res/values/strings.xml index d9e1ff40510..fee417f1f57 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -9127,16 +9127,13 @@ Unlock with a different finger - On / %1$s + On - - Off / %1$s + + Will turn on at %1$s - - Never turn on automatically - - - Turn on automatically at %1$s battery + + Off Turn on now diff --git a/src/com/android/settings/fuelgauge/BatterySaverController.java b/src/com/android/settings/fuelgauge/BatterySaverController.java index 086cdde5443..4042e79794a 100644 --- a/src/com/android/settings/fuelgauge/BatterySaverController.java +++ b/src/com/android/settings/fuelgauge/BatterySaverController.java @@ -88,16 +88,17 @@ public class BatterySaverController extends BasePreferenceController @Override public CharSequence getSummary() { - final boolean mode = mPowerManager.isPowerSaveMode(); - final int format = mode ? R.string.battery_saver_on_summary - : R.string.battery_saver_off_summary; + final boolean isPowerSaveOn = mPowerManager.isPowerSaveMode(); final int percent = Settings.Global.getInt(mContext.getContentResolver(), Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL, 0); - final int percentFormat = percent > 0 ? R.string.battery_saver_desc_turn_on_auto_pct - : R.string.battery_saver_desc_turn_on_auto_never; - - return mContext.getString(format, mContext.getString(percentFormat, - Utils.formatPercentage(percent))); + if (isPowerSaveOn) { + return mContext.getString(R.string.battery_saver_on_summary); + } else if (percent != 0) { + return mContext.getString(R.string.battery_saver_off_scheduled_summary, + Utils.formatPercentage(percent)); + } else { + return mContext.getString(R.string.battery_saver_off_summary); + } } private void updateSummary() { diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatterySaverControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatterySaverControllerTest.java index 8924fa7f9ee..d1357694a36 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/BatterySaverControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/BatterySaverControllerTest.java @@ -15,28 +15,26 @@ */ 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 com.google.common.truth.Truth.assertThat; + 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.provider.Settings; import android.support.v7.preference.Preference; -import com.android.settings.R; import com.android.settings.testutils.SettingsRobolectricTestRunner; -import com.android.settingslib.core.lifecycle.Lifecycle; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; +import org.robolectric.RuntimeEnvironment; import org.robolectric.util.ReflectionHelpers; @RunWith(SettingsRobolectricTestRunner.class) @@ -46,45 +44,56 @@ public class BatterySaverControllerTest { private Preference mBatterySaverPref; @Mock private PowerManager mPowerManager; - @Mock - private Context mContext; - @Mock - private ContentResolver mContentResolver; private BatterySaverController mBatterySaverController; - - private static final String SAVER_ON_SUMMARY = "saver-on"; - private static final String SAVER_OFF_SUMMARY = "saver-off"; + private Context mContext; @Before public void setUp() { MockitoAnnotations.initMocks(this); + mContext = RuntimeEnvironment.application; mBatterySaverController = spy(new BatterySaverController(mContext)); ReflectionHelpers.setField(mBatterySaverController, "mPowerManager", mPowerManager); ReflectionHelpers.setField(mBatterySaverController, "mBatterySaverPref", mBatterySaverPref); doNothing().when(mBatterySaverController).refreshConditionManager(); - when(mContext.getContentResolver()).thenReturn(mContentResolver); - - when(mContext.getString(anyInt(), any(Object.class))) - .thenAnswer((inv) -> "str-" + inv.getArgument(0)); - - 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); + Settings.Global.putInt(mContext.getContentResolver(), + Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL, 0); } @Test - public void testOnPreferenceChange_onStart() { + public void onPreferenceChange_onStart() { mBatterySaverController.onStart(); - verify(mBatterySaverPref).setSummary(eq(SAVER_OFF_SUMMARY)); + verify(mBatterySaverPref).setSummary("Off"); } @Test - public void testOnPreferenceChange_onPowerSaveModeChanged() { + public void onPreferenceChange_onPowerSaveModeChanged() { mBatterySaverController.onPowerSaveModeChanged(); - verify(mBatterySaverPref).setSummary(eq(SAVER_OFF_SUMMARY)); + verify(mBatterySaverPref).setSummary("Off"); + } + + @Test + public void getSummary_batterySaverOn_showSummaryOn() { + when(mPowerManager.isPowerSaveMode()).thenReturn(true); + + assertThat(mBatterySaverController.getSummary()).isEqualTo("On"); + } + + @Test + public void getSummary_batterySaverOffButScheduled_showSummaryScheduled() { + when(mPowerManager.isPowerSaveMode()).thenReturn(false); + Settings.Global.putInt(mContext.getContentResolver(), + Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL, 15); + + assertThat(mBatterySaverController.getSummary()).isEqualTo("Will turn on at 15%"); + } + + @Test + public void getSummary_batterySaverOff_showSummaryOff() { + when(mPowerManager.isPowerSaveMode()).thenReturn(false); + + assertThat(mBatterySaverController.getSummary()).isEqualTo("Off"); } }