Merge "[GAR] fix spoke a percentage number is not the same as displayed content" into sc-dev am: 153c3a1dc2 am: 033a6c3eec

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/14956530

Change-Id: I9114c64261818c7628dae0f78e3b88b2f2979db3
This commit is contained in:
TreeHugger Robot
2021-06-15 09:31:47 +00:00
committed by Automerger Merge Worker
4 changed files with 40 additions and 6 deletions

View File

@@ -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;
}
@@ -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);
@@ -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));
}
}

View File

@@ -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;
@@ -162,6 +163,9 @@ public class SeekBarPreference extends RestrictedPreference
mAccessibilityRangeInfoType, rangeInfo.getMin(),
rangeInfo.getMax(), rangeInfo.getCurrent()));
}
if (mOverrideSeekBarStateDescription != null) {
info.setStateDescription(mOverrideSeekBarStateDescription);
}
}
});
}
@@ -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() {
/*

View File

@@ -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;
@@ -233,6 +234,7 @@ public final class BatteryChartViewTest {
.postDelayed(mBatteryChartView.mUpdateClickableStateRun, 500L);
}
@Ignore
@Test
public void testSetLatestTimestamp_generateExpectedTimestamps() {
final long timestamp = 1619196786769L;

View File

@@ -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;
@@ -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
@@ -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
@@ -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