Disable ring, notification and touch vibration in silent mode
Disable haptic settings for ring, notification and touch feedback when the phone ringer mode is set to silent. Preserve the setting values and display message explaining why those settings are disabled. Bug: 203188852 Test: *Vibration[Intensity|Toggle]PreferenceControllerTest Change-Id: I6c24079ece9d637f2feb487f756937888a92caa7
This commit is contained in:
@@ -18,9 +18,11 @@ package com.android.settings.accessibility;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.content.Context;
|
||||
import android.media.AudioManager;
|
||||
import android.os.VibrationAttributes;
|
||||
import android.os.Vibrator;
|
||||
import android.provider.Settings;
|
||||
@@ -48,6 +50,7 @@ public class HapticFeedbackIntensityPreferenceControllerTest {
|
||||
private static final int ON = 1;
|
||||
|
||||
@Mock private PreferenceScreen mScreen;
|
||||
@Mock private AudioManager mAudioManager;
|
||||
|
||||
private Lifecycle mLifecycle;
|
||||
private Context mContext;
|
||||
@@ -59,7 +62,9 @@ public class HapticFeedbackIntensityPreferenceControllerTest {
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mLifecycle = new Lifecycle(() -> mLifecycle);
|
||||
mContext = ApplicationProvider.getApplicationContext();
|
||||
mContext = spy(ApplicationProvider.getApplicationContext());
|
||||
when(mContext.getSystemService(Context.AUDIO_SERVICE)).thenReturn(mAudioManager);
|
||||
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL);
|
||||
mVibrator = mContext.getSystemService(Vibrator.class);
|
||||
mController = new HapticFeedbackIntensityPreferenceController(mContext, PREFERENCE_KEY,
|
||||
Vibrator.VIBRATION_INTENSITY_HIGH);
|
||||
@@ -88,6 +93,54 @@ public class HapticFeedbackIntensityPreferenceControllerTest {
|
||||
.isEqualTo(mVibrator.getDefaultVibrationIntensity(VibrationAttributes.USAGE_TOUCH));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateState_ringerModeUpdates_shouldPreserveSettingAndDisplaySummary() {
|
||||
updateSetting(Settings.System.HAPTIC_FEEDBACK_INTENSITY, Vibrator.VIBRATION_INTENSITY_LOW);
|
||||
|
||||
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.getProgress()).isEqualTo(Vibrator.VIBRATION_INTENSITY_LOW);
|
||||
assertThat(mPreference.getSummary()).isNull();
|
||||
assertThat(mPreference.isEnabled()).isTrue();
|
||||
|
||||
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_SILENT);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.getProgress()).isEqualTo(Vibrator.VIBRATION_INTENSITY_OFF);
|
||||
// TODO(b/136805769): summary is broken in SeekBarPreference, enable this once fixed
|
||||
// assertThat(mPreference.getSummary()).isNotNull();
|
||||
// assertThat(mPreference.getSummary().toString()).isEqualTo(mContext.getString(
|
||||
// R.string.accessibility_vibration_setting_disabled_for_silent_mode_summary));
|
||||
assertThat(mPreference.isEnabled()).isFalse();
|
||||
|
||||
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_VIBRATE);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.getProgress()).isEqualTo(Vibrator.VIBRATION_INTENSITY_LOW);
|
||||
assertThat(mPreference.getSummary()).isNull();
|
||||
assertThat(mPreference.isEnabled()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateState_hapticFeedbackDisabled_shouldDisplayAlwaysOff() {
|
||||
updateSetting(Settings.System.HAPTIC_FEEDBACK_ENABLED, OFF);
|
||||
|
||||
updateSetting(Settings.System.HAPTIC_FEEDBACK_INTENSITY, Vibrator.VIBRATION_INTENSITY_HIGH);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.getProgress()).isEqualTo(Vibrator.VIBRATION_INTENSITY_OFF);
|
||||
|
||||
updateSetting(Settings.System.HAPTIC_FEEDBACK_INTENSITY,
|
||||
Vibrator.VIBRATION_INTENSITY_MEDIUM);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.getProgress()).isEqualTo(Vibrator.VIBRATION_INTENSITY_OFF);
|
||||
|
||||
updateSetting(Settings.System.HAPTIC_FEEDBACK_INTENSITY, Vibrator.VIBRATION_INTENSITY_LOW);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.getProgress()).isEqualTo(Vibrator.VIBRATION_INTENSITY_OFF);
|
||||
|
||||
updateSetting(Settings.System.HAPTIC_FEEDBACK_INTENSITY, Vibrator.VIBRATION_INTENSITY_OFF);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.getProgress()).isEqualTo(Vibrator.VIBRATION_INTENSITY_OFF);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateState_shouldDisplayIntensityInSliderPosition() {
|
||||
updateSetting(Settings.System.HAPTIC_FEEDBACK_INTENSITY, Vibrator.VIBRATION_INTENSITY_HIGH);
|
||||
|
@@ -18,9 +18,11 @@ package com.android.settings.accessibility;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.content.Context;
|
||||
import android.media.AudioManager;
|
||||
import android.os.VibrationAttributes;
|
||||
import android.os.Vibrator;
|
||||
import android.provider.Settings;
|
||||
@@ -29,6 +31,7 @@ import androidx.preference.PreferenceScreen;
|
||||
import androidx.preference.SwitchPreference;
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.core.BasePreferenceController;
|
||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||
|
||||
@@ -48,6 +51,7 @@ public class HapticFeedbackTogglePreferenceControllerTest {
|
||||
private static final int ON = 1;
|
||||
|
||||
@Mock private PreferenceScreen mScreen;
|
||||
@Mock AudioManager mAudioManager;
|
||||
|
||||
private Lifecycle mLifecycle;
|
||||
private Context mContext;
|
||||
@@ -59,7 +63,9 @@ public class HapticFeedbackTogglePreferenceControllerTest {
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mLifecycle = new Lifecycle(() -> mLifecycle);
|
||||
mContext = ApplicationProvider.getApplicationContext();
|
||||
mContext = spy(ApplicationProvider.getApplicationContext());
|
||||
when(mContext.getSystemService(Context.AUDIO_SERVICE)).thenReturn(mAudioManager);
|
||||
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL);
|
||||
mVibrator = mContext.getSystemService(Vibrator.class);
|
||||
mController = new HapticFeedbackTogglePreferenceController(mContext, PREFERENCE_KEY);
|
||||
mLifecycle.addObserver(mController);
|
||||
@@ -84,6 +90,54 @@ public class HapticFeedbackTogglePreferenceControllerTest {
|
||||
assertThat(mPreference.isChecked()).isTrue();
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void updateState_ringerModeUpdates_shouldPreserveSettingAndDisplaySummary() {
|
||||
updateSetting(Settings.System.HAPTIC_FEEDBACK_INTENSITY, Vibrator.VIBRATION_INTENSITY_LOW);
|
||||
|
||||
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.isChecked()).isTrue();
|
||||
assertThat(mPreference.getSummary()).isNull();
|
||||
assertThat(mPreference.isEnabled()).isTrue();
|
||||
|
||||
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_SILENT);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.isChecked()).isFalse();
|
||||
assertThat(mPreference.getSummary()).isNotNull();
|
||||
assertThat(mPreference.getSummary().toString()).isEqualTo(mContext.getString(
|
||||
R.string.accessibility_vibration_setting_disabled_for_silent_mode_summary));
|
||||
assertThat(mPreference.isEnabled()).isFalse();
|
||||
|
||||
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_VIBRATE);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.isChecked()).isTrue();
|
||||
assertThat(mPreference.getSummary()).isNull();
|
||||
assertThat(mPreference.isEnabled()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateState_hapticFeedbackDisabled_shouldDisplayAlwaysOff() {
|
||||
updateSetting(Settings.System.HAPTIC_FEEDBACK_ENABLED, OFF);
|
||||
|
||||
updateSetting(Settings.System.HAPTIC_FEEDBACK_INTENSITY, Vibrator.VIBRATION_INTENSITY_HIGH);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.isChecked()).isFalse();
|
||||
|
||||
updateSetting(Settings.System.HAPTIC_FEEDBACK_INTENSITY,
|
||||
Vibrator.VIBRATION_INTENSITY_MEDIUM);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.isChecked()).isFalse();
|
||||
|
||||
updateSetting(Settings.System.HAPTIC_FEEDBACK_INTENSITY, Vibrator.VIBRATION_INTENSITY_LOW);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.isChecked()).isFalse();
|
||||
|
||||
updateSetting(Settings.System.HAPTIC_FEEDBACK_INTENSITY, Vibrator.VIBRATION_INTENSITY_OFF);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.isChecked()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateState_shouldDisplayOnOffState() {
|
||||
updateSetting(Settings.System.HAPTIC_FEEDBACK_INTENSITY, Vibrator.VIBRATION_INTENSITY_HIGH);
|
||||
|
@@ -18,9 +18,11 @@ package com.android.settings.accessibility;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.content.Context;
|
||||
import android.media.AudioManager;
|
||||
import android.os.VibrationAttributes;
|
||||
import android.os.Vibrator;
|
||||
import android.provider.Settings;
|
||||
@@ -46,6 +48,7 @@ public class NotificationVibrationIntensityPreferenceControllerTest {
|
||||
private static final String PREFERENCE_KEY = "preference_key";
|
||||
|
||||
@Mock private PreferenceScreen mScreen;
|
||||
@Mock private AudioManager mAudioManager;
|
||||
|
||||
private Lifecycle mLifecycle;
|
||||
private Context mContext;
|
||||
@@ -57,7 +60,9 @@ public class NotificationVibrationIntensityPreferenceControllerTest {
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mLifecycle = new Lifecycle(() -> mLifecycle);
|
||||
mContext = ApplicationProvider.getApplicationContext();
|
||||
mContext = spy(ApplicationProvider.getApplicationContext());
|
||||
when(mContext.getSystemService(Context.AUDIO_SERVICE)).thenReturn(mAudioManager);
|
||||
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL);
|
||||
mVibrator = mContext.getSystemService(Vibrator.class);
|
||||
mController = new NotificationVibrationIntensityPreferenceController(mContext,
|
||||
PREFERENCE_KEY, Vibrator.VIBRATION_INTENSITY_HIGH);
|
||||
@@ -86,6 +91,34 @@ public class NotificationVibrationIntensityPreferenceControllerTest {
|
||||
mVibrator.getDefaultVibrationIntensity(VibrationAttributes.USAGE_NOTIFICATION));
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void updateState_ringerModeUpdates_shouldPreserveSettingAndDisplaySummary() {
|
||||
updateSetting(Settings.System.NOTIFICATION_VIBRATION_INTENSITY,
|
||||
Vibrator.VIBRATION_INTENSITY_LOW);
|
||||
|
||||
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.getProgress()).isEqualTo(Vibrator.VIBRATION_INTENSITY_LOW);
|
||||
assertThat(mPreference.getSummary()).isNull();
|
||||
assertThat(mPreference.isEnabled()).isTrue();
|
||||
|
||||
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_SILENT);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.getProgress()).isEqualTo(Vibrator.VIBRATION_INTENSITY_OFF);
|
||||
// TODO(b/136805769): summary is broken in SeekBarPreference, enable this once fixed
|
||||
// assertThat(mPreference.getSummary()).isNotNull();
|
||||
// assertThat(mPreference.getSummary().toString()).isEqualTo(mContext.getString(
|
||||
// R.string.accessibility_vibration_setting_disabled_for_silent_mode_summary));
|
||||
assertThat(mPreference.isEnabled()).isFalse();
|
||||
|
||||
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_VIBRATE);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.getProgress()).isEqualTo(Vibrator.VIBRATION_INTENSITY_LOW);
|
||||
assertThat(mPreference.getSummary()).isNull();
|
||||
assertThat(mPreference.isEnabled()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateState_shouldDisplayIntensityInSliderPosition() {
|
||||
updateSetting(Settings.System.NOTIFICATION_VIBRATION_INTENSITY,
|
||||
|
@@ -18,9 +18,11 @@ package com.android.settings.accessibility;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.content.Context;
|
||||
import android.media.AudioManager;
|
||||
import android.os.VibrationAttributes;
|
||||
import android.os.Vibrator;
|
||||
import android.provider.Settings;
|
||||
@@ -29,6 +31,7 @@ import androidx.preference.PreferenceScreen;
|
||||
import androidx.preference.SwitchPreference;
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.core.BasePreferenceController;
|
||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||
|
||||
@@ -46,6 +49,7 @@ public class NotificationVibrationTogglePreferenceControllerTest {
|
||||
private static final String PREFERENCE_KEY = "preference_key";
|
||||
|
||||
@Mock private PreferenceScreen mScreen;
|
||||
@Mock private AudioManager mAudioManager;
|
||||
|
||||
private Lifecycle mLifecycle;
|
||||
private Context mContext;
|
||||
@@ -57,7 +61,9 @@ public class NotificationVibrationTogglePreferenceControllerTest {
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mLifecycle = new Lifecycle(() -> mLifecycle);
|
||||
mContext = ApplicationProvider.getApplicationContext();
|
||||
mContext = spy(ApplicationProvider.getApplicationContext());
|
||||
when(mContext.getSystemService(Context.AUDIO_SERVICE)).thenReturn(mAudioManager);
|
||||
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL);
|
||||
mVibrator = mContext.getSystemService(Vibrator.class);
|
||||
mController = new NotificationVibrationTogglePreferenceController(mContext, PREFERENCE_KEY);
|
||||
mLifecycle.addObserver(mController);
|
||||
@@ -82,6 +88,32 @@ public class NotificationVibrationTogglePreferenceControllerTest {
|
||||
assertThat(mPreference.isChecked()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateState_ringerModeUpdates_shouldPreserveSettingAndDisplaySummary() {
|
||||
updateSetting(Settings.System.NOTIFICATION_VIBRATION_INTENSITY,
|
||||
Vibrator.VIBRATION_INTENSITY_LOW);
|
||||
|
||||
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.isChecked()).isTrue();
|
||||
assertThat(mPreference.getSummary()).isNull();
|
||||
assertThat(mPreference.isEnabled()).isTrue();
|
||||
|
||||
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_SILENT);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.isChecked()).isFalse();
|
||||
assertThat(mPreference.getSummary()).isNotNull();
|
||||
assertThat(mPreference.getSummary().toString()).isEqualTo(mContext.getString(
|
||||
R.string.accessibility_vibration_setting_disabled_for_silent_mode_summary));
|
||||
assertThat(mPreference.isEnabled()).isFalse();
|
||||
|
||||
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_VIBRATE);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.isChecked()).isTrue();
|
||||
assertThat(mPreference.getSummary()).isNull();
|
||||
assertThat(mPreference.isEnabled()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateState_shouldDisplayOnOffState() {
|
||||
updateSetting(Settings.System.NOTIFICATION_VIBRATION_INTENSITY,
|
||||
|
@@ -18,9 +18,11 @@ package com.android.settings.accessibility;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.content.Context;
|
||||
import android.media.AudioManager;
|
||||
import android.os.VibrationAttributes;
|
||||
import android.os.Vibrator;
|
||||
import android.provider.Settings;
|
||||
@@ -49,6 +51,7 @@ public class RingVibrationIntensityPreferenceControllerTest {
|
||||
private static final int ON = 1;
|
||||
|
||||
@Mock private PreferenceScreen mScreen;
|
||||
@Mock private AudioManager mAudioManager;
|
||||
|
||||
private Lifecycle mLifecycle;
|
||||
private Context mContext;
|
||||
@@ -60,7 +63,9 @@ public class RingVibrationIntensityPreferenceControllerTest {
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mLifecycle = new Lifecycle(() -> mLifecycle);
|
||||
mContext = ApplicationProvider.getApplicationContext();
|
||||
mContext = spy(ApplicationProvider.getApplicationContext());
|
||||
when(mContext.getSystemService(Context.AUDIO_SERVICE)).thenReturn(mAudioManager);
|
||||
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL);
|
||||
mVibrator = mContext.getSystemService(Vibrator.class);
|
||||
mController = new RingVibrationIntensityPreferenceController(mContext, PREFERENCE_KEY,
|
||||
Vibrator.VIBRATION_INTENSITY_HIGH);
|
||||
@@ -89,6 +94,55 @@ public class RingVibrationIntensityPreferenceControllerTest {
|
||||
mVibrator.getDefaultVibrationIntensity(VibrationAttributes.USAGE_RINGTONE));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateState_ringerModeUpdates_shouldPreserveSettingAndDisplaySummary() {
|
||||
updateSetting(Settings.System.RING_VIBRATION_INTENSITY, Vibrator.VIBRATION_INTENSITY_LOW);
|
||||
|
||||
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.getProgress()).isEqualTo(Vibrator.VIBRATION_INTENSITY_LOW);
|
||||
assertThat(mPreference.getSummary()).isNull();
|
||||
assertThat(mPreference.isEnabled()).isTrue();
|
||||
|
||||
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_SILENT);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.getProgress()).isEqualTo(Vibrator.VIBRATION_INTENSITY_OFF);
|
||||
// TODO(b/136805769): summary is broken in SeekBarPreference, enable this once fixed
|
||||
// assertThat(mPreference.getSummary()).isNotNull();
|
||||
// assertThat(mPreference.getSummary().toString()).isEqualTo(mContext.getString(
|
||||
// R.string.accessibility_vibration_setting_disabled_for_silent_mode_summary));
|
||||
assertThat(mPreference.isEnabled()).isFalse();
|
||||
|
||||
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_VIBRATE);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.getProgress()).isEqualTo(Vibrator.VIBRATION_INTENSITY_LOW);
|
||||
assertThat(mPreference.getSummary()).isNull();
|
||||
assertThat(mPreference.isEnabled()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateState_vibrateWhenRingingAndRampingRingerOff_shouldDisplayAlwaysOff() {
|
||||
when(mAudioManager.isRampingRingerEnabled()).thenReturn(false);
|
||||
updateSetting(Settings.System.VIBRATE_WHEN_RINGING, OFF);
|
||||
|
||||
updateSetting(Settings.System.RING_VIBRATION_INTENSITY, Vibrator.VIBRATION_INTENSITY_HIGH);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.getProgress()).isEqualTo(Vibrator.VIBRATION_INTENSITY_OFF);
|
||||
|
||||
updateSetting(Settings.System.RING_VIBRATION_INTENSITY,
|
||||
Vibrator.VIBRATION_INTENSITY_MEDIUM);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.getProgress()).isEqualTo(Vibrator.VIBRATION_INTENSITY_OFF);
|
||||
|
||||
updateSetting(Settings.System.RING_VIBRATION_INTENSITY, Vibrator.VIBRATION_INTENSITY_LOW);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.getProgress()).isEqualTo(Vibrator.VIBRATION_INTENSITY_OFF);
|
||||
|
||||
updateSetting(Settings.System.RING_VIBRATION_INTENSITY, Vibrator.VIBRATION_INTENSITY_OFF);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.getProgress()).isEqualTo(Vibrator.VIBRATION_INTENSITY_OFF);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateState_shouldDisplayIntensityInSliderPosition() {
|
||||
updateSetting(Settings.System.RING_VIBRATION_INTENSITY, Vibrator.VIBRATION_INTENSITY_HIGH);
|
||||
@@ -109,7 +163,6 @@ public class RingVibrationIntensityPreferenceControllerTest {
|
||||
assertThat(mPreference.getProgress()).isEqualTo(Vibrator.VIBRATION_INTENSITY_OFF);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void setProgress_updatesIntensityAndDependentSettings() throws Exception {
|
||||
|
@@ -18,9 +18,11 @@ package com.android.settings.accessibility;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.content.Context;
|
||||
import android.media.AudioManager;
|
||||
import android.os.VibrationAttributes;
|
||||
import android.os.Vibrator;
|
||||
import android.provider.Settings;
|
||||
@@ -29,6 +31,7 @@ import androidx.preference.PreferenceScreen;
|
||||
import androidx.preference.SwitchPreference;
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.core.BasePreferenceController;
|
||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||
|
||||
@@ -48,6 +51,7 @@ public class RingVibrationTogglePreferenceControllerTest {
|
||||
private static final int ON = 1;
|
||||
|
||||
@Mock private PreferenceScreen mScreen;
|
||||
@Mock private AudioManager mAudioManager;
|
||||
|
||||
private Lifecycle mLifecycle;
|
||||
private Context mContext;
|
||||
@@ -59,7 +63,9 @@ public class RingVibrationTogglePreferenceControllerTest {
|
||||
public void setUp() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
mLifecycle = new Lifecycle(() -> mLifecycle);
|
||||
mContext = ApplicationProvider.getApplicationContext();
|
||||
mContext = spy(ApplicationProvider.getApplicationContext());
|
||||
when(mContext.getSystemService(Context.AUDIO_SERVICE)).thenReturn(mAudioManager);
|
||||
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL);
|
||||
mVibrator = mContext.getSystemService(Vibrator.class);
|
||||
mController = new RingVibrationTogglePreferenceController(mContext, PREFERENCE_KEY);
|
||||
mLifecycle.addObserver(mController);
|
||||
@@ -84,6 +90,54 @@ public class RingVibrationTogglePreferenceControllerTest {
|
||||
assertThat(mPreference.isChecked()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateState_ringerModeUpdates_shouldPreserveSettingAndDisplaySummary() {
|
||||
updateSetting(Settings.System.RING_VIBRATION_INTENSITY, Vibrator.VIBRATION_INTENSITY_LOW);
|
||||
|
||||
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.isChecked()).isTrue();
|
||||
assertThat(mPreference.getSummary()).isNull();
|
||||
assertThat(mPreference.isEnabled()).isTrue();
|
||||
|
||||
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_SILENT);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.isChecked()).isFalse();
|
||||
assertThat(mPreference.getSummary()).isNotNull();
|
||||
assertThat(mPreference.getSummary().toString()).isEqualTo(mContext.getString(
|
||||
R.string.accessibility_vibration_setting_disabled_for_silent_mode_summary));
|
||||
assertThat(mPreference.isEnabled()).isFalse();
|
||||
|
||||
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_VIBRATE);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.isChecked()).isTrue();
|
||||
assertThat(mPreference.getSummary()).isNull();
|
||||
assertThat(mPreference.isEnabled()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateState_vibrateWhenRingingAndRampingRingerOff_shouldDisplayAlwaysOff() {
|
||||
when(mAudioManager.isRampingRingerEnabled()).thenReturn(false);
|
||||
updateSetting(Settings.System.VIBRATE_WHEN_RINGING, OFF);
|
||||
|
||||
updateSetting(Settings.System.RING_VIBRATION_INTENSITY, Vibrator.VIBRATION_INTENSITY_HIGH);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.isChecked()).isFalse();
|
||||
|
||||
updateSetting(Settings.System.RING_VIBRATION_INTENSITY,
|
||||
Vibrator.VIBRATION_INTENSITY_MEDIUM);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.isChecked()).isFalse();
|
||||
|
||||
updateSetting(Settings.System.RING_VIBRATION_INTENSITY, Vibrator.VIBRATION_INTENSITY_LOW);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.isChecked()).isFalse();
|
||||
|
||||
updateSetting(Settings.System.RING_VIBRATION_INTENSITY, Vibrator.VIBRATION_INTENSITY_OFF);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.isChecked()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateState_shouldDisplayOnOffState() {
|
||||
updateSetting(Settings.System.RING_VIBRATION_INTENSITY, Vibrator.VIBRATION_INTENSITY_HIGH);
|
||||
|
@@ -70,6 +70,7 @@ public class VibrationRampingRingerTogglePreferenceControllerTest {
|
||||
mContext = spy(ApplicationProvider.getApplicationContext());
|
||||
when(mContext.getSystemService(Context.TELEPHONY_SERVICE)).thenReturn(mTelephonyManager);
|
||||
when(mContext.getSystemService(Context.AUDIO_SERVICE)).thenReturn(mAudioManager);
|
||||
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL);
|
||||
mController = new VibrationRampingRingerTogglePreferenceController(mContext,
|
||||
PREFERENCE_KEY, mDeviceConfigProvider);
|
||||
mLifecycle.addObserver(mController);
|
||||
|
Reference in New Issue
Block a user