diff --git a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSeekBarController.java b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSeekBarController.java index a936e99f751..5442e7d02c8 100644 --- a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSeekBarController.java +++ b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSeekBarController.java @@ -99,10 +99,15 @@ public class BatterySaverScheduleSeekBarController implements } } + /** + * Adds the seekbar to the end of the provided preference screen + * + * @param screen The preference screen to add the seekbar to + */ public void addToScreen(PreferenceScreen screen) { // makes sure it gets added after the preferences if called due to first time battery // saver message - mSeekBarPreference.setOrder(5); + mSeekBarPreference.setOrder(100); screen.addPreference(mSeekBarPreference); } } diff --git a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSettings.java b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSettings.java index 6553c609a1b..31ee278eafa 100644 --- a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSettings.java +++ b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSettings.java @@ -64,6 +64,7 @@ public class BatterySaverScheduleSettings extends RadioButtonPickerFragment { final ContentObserver mSettingsObserver = new ContentObserver(new Handler()) { @Override public void onChange(boolean selfChange, Uri uri) { + getPreferenceScreen().removeAll(); updateCandidates(); } }; diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSeekBarControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSeekBarControllerTest.java index 03c9b0a69a4..5022d4a318f 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSeekBarControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSeekBarControllerTest.java @@ -7,9 +7,14 @@ import android.content.Context; import android.os.PowerManager; import android.provider.Settings; import android.provider.Settings.Global; + +import androidx.preference.PreferenceScreen; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; @@ -19,9 +24,12 @@ public class BatterySaverScheduleSeekBarControllerTest { private Context mContext; private ContentResolver mResolver; private BatterySaverScheduleSeekBarController mController; + @Mock + private PreferenceScreen mScreen; @Before public void setUp() { + MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application; mController = new BatterySaverScheduleSeekBarController(mContext); mResolver = mContext.getContentResolver(); @@ -62,4 +70,14 @@ public class BatterySaverScheduleSeekBarControllerTest { mController.updateSeekBar(); assertThat(mController.mSeekBarPreference.isVisible()).isFalse(); } + + @Test + public void addToScreen_addsToEnd() { + Settings.Global.putInt(mResolver, Global.AUTOMATIC_POWER_SAVE_MODE, + PowerManager.POWER_SAVE_MODE_TRIGGER_PERCENTAGE); + Settings.Global.putInt(mResolver, Global.LOW_POWER_MODE_TRIGGER_LEVEL, 15); + mController.addToScreen(mScreen); + assertThat(mController.mSeekBarPreference.getOrder()).isEqualTo(100); + } + }