From fb940feebfc22b29627889e6bbea007eed4435bf Mon Sep 17 00:00:00 2001 From: Salvador Martinez Date: Wed, 8 May 2019 12:28:43 -0700 Subject: [PATCH] Clear preferences when dialog acknowledged and increase order This CL makes it so that the order on the seekbar is increased to a very large value to ensure it gets added to the end in the case where a refresh is triggered due to the first time battery saver dialog. Additionally it clears the preferences on the screen when we receive confirmation to ensure that no caching can cause the seekbar ot show up on top of other preferences. Test: atest BatterySaverScheduleSeekBarControllerTest Bug: 132107662 Change-Id: I26bf2772ed7135daa4879bca17e0ecfc22a2d0dd --- .../BatterySaverScheduleSeekBarController.java | 7 ++++++- .../BatterySaverScheduleSettings.java | 1 + ...terySaverScheduleSeekBarControllerTest.java | 18 ++++++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) 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); + } + }