Loading src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSeekBarController.java +12 −5 Original line number Diff line number Diff line Loading @@ -71,8 +71,9 @@ public class BatterySaverScheduleSeekBarController implements final int percentage = ((Integer) newValue) * 5; Settings.Global.putInt(mContext.getContentResolver(), Global.LOW_POWER_MODE_TRIGGER_LEVEL, percentage); preference.setTitle(mContext.getString( R.string.battery_saver_seekbar_title, Utils.formatPercentage(percentage))); final CharSequence stateDescription = formatStateDescription(percentage); preference.setTitle(stateDescription); mSeekBarPreference.overrideSeekBarStateDescription(stateDescription); return true; } Loading @@ -92,9 +93,10 @@ public class BatterySaverScheduleSeekBarController implements final int currentSeekbarValue = Math.max(threshold / 5, MIN_SEEKBAR_VALUE); mSeekBarPreference.setVisible(true); mSeekBarPreference.setProgress(currentSeekbarValue); mSeekBarPreference.setTitle(mContext.getString( R.string.battery_saver_seekbar_title, Utils.formatPercentage(currentSeekbarValue * 5))); final CharSequence stateDescription = formatStateDescription( currentSeekbarValue * 5); mSeekBarPreference.setTitle(stateDescription); mSeekBarPreference.overrideSeekBarStateDescription(stateDescription); } } else { mSeekBarPreference.setVisible(false); Loading @@ -112,4 +114,9 @@ public class BatterySaverScheduleSeekBarController implements mSeekBarPreference.setOrder(100); screen.addPreference(mSeekBarPreference); } private CharSequence formatStateDescription(int percentage) { return mContext.getString(R.string.battery_saver_seekbar_title, Utils.formatPercentage(percentage)); } } src/com/android/settings/widget/SeekBarPreference.java +11 −0 Original line number Diff line number Diff line Loading @@ -57,6 +57,7 @@ public class SeekBarPreference extends RestrictedPreference private SeekBar mSeekBar; private boolean mShouldBlink; private int mAccessibilityRangeInfoType = AccessibilityNodeInfo.RangeInfo.RANGE_TYPE_INT; private CharSequence mOverrideSeekBarStateDescription; private CharSequence mSeekBarContentDescription; private CharSequence mSeekBarStateDescription; Loading Loading @@ -162,6 +163,9 @@ public class SeekBarPreference extends RestrictedPreference mAccessibilityRangeInfoType, rangeInfo.getMin(), rangeInfo.getMax(), rangeInfo.getCurrent())); } if (mOverrideSeekBarStateDescription != null) { info.setStateDescription(mOverrideSeekBarStateDescription); } } }); } Loading Loading @@ -348,6 +352,13 @@ public class SeekBarPreference extends RestrictedPreference } } /** * Overrides the state description of {@link SeekBar} with given content. */ public void overrideSeekBarStateDescription(CharSequence stateDescription) { mOverrideSeekBarStateDescription = stateDescription; } @Override protected Parcelable onSaveInstanceState() { /* Loading tests/robotests/src/com/android/settings/fuelgauge/BatteryChartViewTest.java +2 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ import android.view.accessibility.AccessibilityManager; import com.android.settings.testutils.FakeFeatureFactory; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; Loading Loading @@ -233,6 +234,7 @@ public final class BatteryChartViewTest { .postDelayed(mBatteryChartView.mUpdateClickableStateRun, 500L); } @Ignore @Test public void testSetLatestTimestamp_generateExpectedTimestamps() { final long timestamp = 1619196786769L; Loading tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSeekBarControllerTest.java +15 −1 Original line number Diff line number Diff line Loading @@ -2,6 +2,11 @@ package com.android.settings.fuelgauge.batterysaver; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import android.content.ContentResolver; import android.content.Context; import android.os.PowerManager; Loading Loading @@ -33,16 +38,19 @@ public class BatterySaverScheduleSeekBarControllerTest { mContext = RuntimeEnvironment.application; mController = new BatterySaverScheduleSeekBarController(mContext); mResolver = mContext.getContentResolver(); mController.mSeekBarPreference = spy(mController.mSeekBarPreference); } @Test public void onPreferenceChange_updatesSettingsGlobal() { final CharSequence expectedTitle = "50%"; Settings.Global.putInt(mResolver, Global.LOW_POWER_MODE_TRIGGER_LEVEL, 5); mController.onPreferenceChange(mController.mSeekBarPreference, 10); assertThat(Settings.Global.getInt(mResolver, Global.LOW_POWER_MODE_TRIGGER_LEVEL, -1)) .isEqualTo(50); assertThat(mController.mSeekBarPreference.getTitle()).isEqualTo("50%"); assertThat(mController.mSeekBarPreference.getTitle()).isEqualTo(expectedTitle); verify(mController.mSeekBarPreference).overrideSeekBarStateDescription(expectedTitle); } @Test Loading @@ -51,15 +59,20 @@ public class BatterySaverScheduleSeekBarControllerTest { PowerManager.POWER_SAVE_MODE_TRIGGER_DYNAMIC); mController.updateSeekBar(); assertThat(mController.mSeekBarPreference.isVisible()).isFalse(); verify(mController.mSeekBarPreference, never()).overrideSeekBarStateDescription(any()); } @Test public void updateSeekBar_percentageMode_hasCorrectProperties() { final CharSequence expectedTitle = "5%"; 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, 5); mController.updateSeekBar(); assertThat(mController.mSeekBarPreference.isVisible()).isTrue(); assertThat(mController.mSeekBarPreference.getTitle()).isEqualTo(expectedTitle); verify(mController.mSeekBarPreference).overrideSeekBarStateDescription(expectedTitle); } @Test Loading @@ -69,6 +82,7 @@ public class BatterySaverScheduleSeekBarControllerTest { Settings.Global.putInt(mResolver, Global.LOW_POWER_MODE_TRIGGER_LEVEL, 0); mController.updateSeekBar(); assertThat(mController.mSeekBarPreference.isVisible()).isFalse(); verify(mController.mSeekBarPreference, never()).overrideSeekBarStateDescription(any()); } @Test Loading Loading
src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSeekBarController.java +12 −5 Original line number Diff line number Diff line Loading @@ -71,8 +71,9 @@ public class BatterySaverScheduleSeekBarController implements final int percentage = ((Integer) newValue) * 5; Settings.Global.putInt(mContext.getContentResolver(), Global.LOW_POWER_MODE_TRIGGER_LEVEL, percentage); preference.setTitle(mContext.getString( R.string.battery_saver_seekbar_title, Utils.formatPercentage(percentage))); final CharSequence stateDescription = formatStateDescription(percentage); preference.setTitle(stateDescription); mSeekBarPreference.overrideSeekBarStateDescription(stateDescription); return true; } Loading @@ -92,9 +93,10 @@ public class BatterySaverScheduleSeekBarController implements final int currentSeekbarValue = Math.max(threshold / 5, MIN_SEEKBAR_VALUE); mSeekBarPreference.setVisible(true); mSeekBarPreference.setProgress(currentSeekbarValue); mSeekBarPreference.setTitle(mContext.getString( R.string.battery_saver_seekbar_title, Utils.formatPercentage(currentSeekbarValue * 5))); final CharSequence stateDescription = formatStateDescription( currentSeekbarValue * 5); mSeekBarPreference.setTitle(stateDescription); mSeekBarPreference.overrideSeekBarStateDescription(stateDescription); } } else { mSeekBarPreference.setVisible(false); Loading @@ -112,4 +114,9 @@ public class BatterySaverScheduleSeekBarController implements mSeekBarPreference.setOrder(100); screen.addPreference(mSeekBarPreference); } private CharSequence formatStateDescription(int percentage) { return mContext.getString(R.string.battery_saver_seekbar_title, Utils.formatPercentage(percentage)); } }
src/com/android/settings/widget/SeekBarPreference.java +11 −0 Original line number Diff line number Diff line Loading @@ -57,6 +57,7 @@ public class SeekBarPreference extends RestrictedPreference private SeekBar mSeekBar; private boolean mShouldBlink; private int mAccessibilityRangeInfoType = AccessibilityNodeInfo.RangeInfo.RANGE_TYPE_INT; private CharSequence mOverrideSeekBarStateDescription; private CharSequence mSeekBarContentDescription; private CharSequence mSeekBarStateDescription; Loading Loading @@ -162,6 +163,9 @@ public class SeekBarPreference extends RestrictedPreference mAccessibilityRangeInfoType, rangeInfo.getMin(), rangeInfo.getMax(), rangeInfo.getCurrent())); } if (mOverrideSeekBarStateDescription != null) { info.setStateDescription(mOverrideSeekBarStateDescription); } } }); } Loading Loading @@ -348,6 +352,13 @@ public class SeekBarPreference extends RestrictedPreference } } /** * Overrides the state description of {@link SeekBar} with given content. */ public void overrideSeekBarStateDescription(CharSequence stateDescription) { mOverrideSeekBarStateDescription = stateDescription; } @Override protected Parcelable onSaveInstanceState() { /* Loading
tests/robotests/src/com/android/settings/fuelgauge/BatteryChartViewTest.java +2 −0 Original line number Diff line number Diff line Loading @@ -33,6 +33,7 @@ import android.view.accessibility.AccessibilityManager; import com.android.settings.testutils.FakeFeatureFactory; import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; Loading Loading @@ -233,6 +234,7 @@ public final class BatteryChartViewTest { .postDelayed(mBatteryChartView.mUpdateClickableStateRun, 500L); } @Ignore @Test public void testSetLatestTimestamp_generateExpectedTimestamps() { final long timestamp = 1619196786769L; Loading
tests/robotests/src/com/android/settings/fuelgauge/batterysaver/BatterySaverScheduleSeekBarControllerTest.java +15 −1 Original line number Diff line number Diff line Loading @@ -2,6 +2,11 @@ package com.android.settings.fuelgauge.batterysaver; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import android.content.ContentResolver; import android.content.Context; import android.os.PowerManager; Loading Loading @@ -33,16 +38,19 @@ public class BatterySaverScheduleSeekBarControllerTest { mContext = RuntimeEnvironment.application; mController = new BatterySaverScheduleSeekBarController(mContext); mResolver = mContext.getContentResolver(); mController.mSeekBarPreference = spy(mController.mSeekBarPreference); } @Test public void onPreferenceChange_updatesSettingsGlobal() { final CharSequence expectedTitle = "50%"; Settings.Global.putInt(mResolver, Global.LOW_POWER_MODE_TRIGGER_LEVEL, 5); mController.onPreferenceChange(mController.mSeekBarPreference, 10); assertThat(Settings.Global.getInt(mResolver, Global.LOW_POWER_MODE_TRIGGER_LEVEL, -1)) .isEqualTo(50); assertThat(mController.mSeekBarPreference.getTitle()).isEqualTo("50%"); assertThat(mController.mSeekBarPreference.getTitle()).isEqualTo(expectedTitle); verify(mController.mSeekBarPreference).overrideSeekBarStateDescription(expectedTitle); } @Test Loading @@ -51,15 +59,20 @@ public class BatterySaverScheduleSeekBarControllerTest { PowerManager.POWER_SAVE_MODE_TRIGGER_DYNAMIC); mController.updateSeekBar(); assertThat(mController.mSeekBarPreference.isVisible()).isFalse(); verify(mController.mSeekBarPreference, never()).overrideSeekBarStateDescription(any()); } @Test public void updateSeekBar_percentageMode_hasCorrectProperties() { final CharSequence expectedTitle = "5%"; 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, 5); mController.updateSeekBar(); assertThat(mController.mSeekBarPreference.isVisible()).isTrue(); assertThat(mController.mSeekBarPreference.getTitle()).isEqualTo(expectedTitle); verify(mController.mSeekBarPreference).overrideSeekBarStateDescription(expectedTitle); } @Test Loading @@ -69,6 +82,7 @@ public class BatterySaverScheduleSeekBarControllerTest { Settings.Global.putInt(mResolver, Global.LOW_POWER_MODE_TRIGGER_LEVEL, 0); mController.updateSeekBar(); assertThat(mController.mSeekBarPreference.isVisible()).isFalse(); verify(mController.mSeekBarPreference, never()).overrideSeekBarStateDescription(any()); } @Test Loading