Export callback to receive seekbar change event from SeekBarPrefernce
- Export onSeekBarChangeListener callback to receive change event from parent - Update battery saver schedule trigger threshold after seekbar tounch ending instead of update it every time during dragging or touching Bug: 236356020 Test: make RunSettingsRoboTests Change-Id: Ifee7cd9e7cabfbec0817a4c28254228f885d6a8d
This commit is contained in:
@@ -12,6 +12,7 @@ import android.content.Context;
|
||||
import android.os.PowerManager;
|
||||
import android.provider.Settings;
|
||||
import android.provider.Settings.Global;
|
||||
import android.widget.SeekBar;
|
||||
|
||||
import androidx.preference.PreferenceScreen;
|
||||
|
||||
@@ -46,22 +47,47 @@ public class BatterySaverScheduleSeekBarControllerTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onPreferenceChange_updatesSettingsGlobal() {
|
||||
public void onPreferenceChange_withoutOnStopTrackingTouch_updatesTitleAndDescriptionOnly() {
|
||||
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);
|
||||
setTriggerLevel(5);
|
||||
|
||||
mController.onPreferenceChange(mController.mSeekBarPreference, 10);
|
||||
|
||||
assertThat(getTriggerLevel()).isEqualTo(5);
|
||||
assertThat(mController.mSeekBarPreference.getTitle()).isEqualTo(expectedTitle);
|
||||
verify(mController.mSeekBarPreference).overrideSeekBarStateDescription(expectedTitle);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onPreferenceChange_withOnStopTrackingTouch_updatesSettingsGlobal() {
|
||||
final CharSequence expectedTitle = "50%";
|
||||
setTriggerLevel(5);
|
||||
|
||||
mController.onPreferenceChange(mController.mSeekBarPreference, 10);
|
||||
mController.onStopTrackingTouch(new SeekBar(mContext));
|
||||
|
||||
assertThat(getTriggerLevel()).isEqualTo(50);
|
||||
assertThat(mController.mSeekBarPreference.getTitle()).isEqualTo(expectedTitle);
|
||||
verify(mController.mSeekBarPreference).overrideSeekBarStateDescription(expectedTitle);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onStopTrackingTouch_invalidValue_noUpdates() {
|
||||
setTriggerLevel(5);
|
||||
|
||||
mController.mPercentage = 0;
|
||||
mController.onStopTrackingTouch(new SeekBar(mContext));
|
||||
|
||||
assertThat(getTriggerLevel()).isEqualTo(5);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateSeekBar_routineMode_hasCorrectProperties() {
|
||||
Settings.Global.putInt(mResolver, Global.AUTOMATIC_POWER_SAVE_MODE,
|
||||
PowerManager.POWER_SAVE_MODE_TRIGGER_DYNAMIC);
|
||||
|
||||
mController.updateSeekBar();
|
||||
|
||||
assertThat(mController.mSeekBarPreference.isVisible()).isFalse();
|
||||
verify(mController.mSeekBarPreference, never()).overrideSeekBarStateDescription(any());
|
||||
}
|
||||
@@ -71,7 +97,8 @@ public class BatterySaverScheduleSeekBarControllerTest {
|
||||
final CharSequence expectedTitle = "10%";
|
||||
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, 10);
|
||||
setTriggerLevel(10);
|
||||
|
||||
mController.updateSeekBar();
|
||||
|
||||
assertThat(mController.mSeekBarPreference.isVisible()).isTrue();
|
||||
@@ -83,8 +110,10 @@ public class BatterySaverScheduleSeekBarControllerTest {
|
||||
public void updateSeekBar_noneMode_hasCorrectProperties() {
|
||||
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, 0);
|
||||
setTriggerLevel(0);
|
||||
|
||||
mController.updateSeekBar();
|
||||
|
||||
assertThat(mController.mSeekBarPreference.isVisible()).isFalse();
|
||||
verify(mController.mSeekBarPreference, never()).overrideSeekBarStateDescription(any());
|
||||
}
|
||||
@@ -93,9 +122,18 @@ public class BatterySaverScheduleSeekBarControllerTest {
|
||||
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);
|
||||
setTriggerLevel(15);
|
||||
|
||||
mController.addToScreen(mScreen);
|
||||
|
||||
assertThat(mController.mSeekBarPreference.getOrder()).isEqualTo(100);
|
||||
}
|
||||
|
||||
private void setTriggerLevel(int level) {
|
||||
Settings.Global.putInt(mResolver, Global.LOW_POWER_MODE_TRIGGER_LEVEL, level);
|
||||
}
|
||||
|
||||
private int getTriggerLevel() {
|
||||
return Settings.Global.getInt(mResolver, Global.LOW_POWER_MODE_TRIGGER_LEVEL, -1);
|
||||
}
|
||||
}
|
||||
|
@@ -24,6 +24,7 @@ import static com.google.common.truth.Truth.assertThat;
|
||||
import static org.mockito.ArgumentMatchers.anyInt;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.verifyZeroInteractions;
|
||||
import static org.mockito.Mockito.when;
|
||||
import static org.robolectric.Shadows.shadowOf;
|
||||
|
||||
@@ -40,6 +41,7 @@ import com.android.settings.testutils.shadow.ShadowRestrictedLockUtilsInternal;
|
||||
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;
|
||||
@@ -59,6 +61,9 @@ public class SeekBarPreferenceTest {
|
||||
private SeekBarPreference mSeekBarPreference;
|
||||
private SeekBar mSeekBar;
|
||||
|
||||
@Mock
|
||||
SeekBar.OnSeekBarChangeListener mMockOnSeekBarChangeListener;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
@@ -179,6 +184,54 @@ public class SeekBarPreferenceTest {
|
||||
assertThat(shadowOf(mSeekBar).lastHapticFeedbackPerformed()).isEqualTo(CLOCK_TICK);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onProgressChanged_hasSeekBarChangeListener_receiveCallBack() {
|
||||
mSeekBarPreference.setOnSeekBarChangeListener(mMockOnSeekBarChangeListener);
|
||||
|
||||
mSeekBarPreference.onProgressChanged(mSeekBar, PROGRESS, true);
|
||||
|
||||
verify(mMockOnSeekBarChangeListener).onProgressChanged(mSeekBar, PROGRESS, true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onProgressChanged_noSeekBarChangeListener_noAction() {
|
||||
mSeekBarPreference.onProgressChanged(mSeekBar, PROGRESS, true);
|
||||
|
||||
verifyZeroInteractions(mMockOnSeekBarChangeListener);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onStartTrackingTouch_hasSeekBarChangeListener_receiveCallBack() {
|
||||
mSeekBarPreference.setOnSeekBarChangeListener(mMockOnSeekBarChangeListener);
|
||||
|
||||
mSeekBarPreference.onStartTrackingTouch(mSeekBar);
|
||||
|
||||
verify(mMockOnSeekBarChangeListener).onStartTrackingTouch(mSeekBar);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onStartTrackingTouch_noSeekBarChangeListener_noAction() {
|
||||
mSeekBarPreference.onStartTrackingTouch(mSeekBar);
|
||||
|
||||
verifyZeroInteractions(mMockOnSeekBarChangeListener);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onStopTrackingTouch_hasSeekBarChangeListener_receiveCallBack() {
|
||||
mSeekBarPreference.setOnSeekBarChangeListener(mMockOnSeekBarChangeListener);
|
||||
|
||||
mSeekBarPreference.onStopTrackingTouch(mSeekBar);
|
||||
|
||||
verify(mMockOnSeekBarChangeListener).onStopTrackingTouch(mSeekBar);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void onStopTrackingTouch_noSeekBarChangeListener_noAction() {
|
||||
mSeekBarPreference.onStopTrackingTouch(mSeekBar);
|
||||
|
||||
verifyZeroInteractions(mMockOnSeekBarChangeListener);
|
||||
}
|
||||
|
||||
public static class TestFragment extends PreferenceFragmentCompat {
|
||||
@Override
|
||||
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
|
||||
|
Reference in New Issue
Block a user