Enable touch feedback settings when the phone is in silent mode
Allow users to change this settings when the phone is in silent mode, if they prefer to make all interactions as silent as possible in that context. Fix: 165478128 Test: [Alarm|HapticFeedback|Media]Vibration[Intensity|Toggle]PreferenceControllerTest Change-Id: I68f90559b2bf8088f22397412c149e2a4b91cf13
This commit is contained in:
@@ -37,12 +37,6 @@ public class HapticFeedbackIntensityPreferenceController
|
||||
VibrationAttributes.USAGE_TOUCH);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isRestrictedByRingerModeSilent() {
|
||||
// Touch feedback is disabled when the phone is in silent mode.
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int readIntensity() {
|
||||
final int hapticFeedbackEnabled = Settings.System.getInt(mContentResolver,
|
||||
|
@@ -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;
|
||||
@@ -45,6 +47,7 @@ public class AlarmVibrationIntensityPreferenceControllerTest {
|
||||
private static final String PREFERENCE_KEY = "preference_key";
|
||||
|
||||
@Mock private PreferenceScreen mScreen;
|
||||
@Mock private AudioManager mAudioManager;
|
||||
|
||||
private Lifecycle mLifecycle;
|
||||
private Context mContext;
|
||||
@@ -56,7 +59,9 @@ public class AlarmVibrationIntensityPreferenceControllerTest {
|
||||
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 AlarmVibrationIntensityPreferenceController(mContext, PREFERENCE_KEY,
|
||||
Vibrator.VIBRATION_INTENSITY_HIGH);
|
||||
@@ -87,6 +92,26 @@ public class AlarmVibrationIntensityPreferenceControllerTest {
|
||||
mVibrator.getDefaultVibrationIntensity(VibrationAttributes.USAGE_ALARM));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateState_ringerModeUpdates_shouldNotAffectSettings() {
|
||||
updateSetting(Settings.System.ALARM_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.isEnabled()).isTrue();
|
||||
|
||||
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_SILENT);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.getProgress()).isEqualTo(Vibrator.VIBRATION_INTENSITY_LOW);
|
||||
assertThat(mPreference.isEnabled()).isTrue();
|
||||
|
||||
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_VIBRATE);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.getProgress()).isEqualTo(Vibrator.VIBRATION_INTENSITY_LOW);
|
||||
assertThat(mPreference.isEnabled()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateState_shouldDisplayIntensityInSliderPosition() {
|
||||
updateSetting(Settings.System.ALARM_VIBRATION_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;
|
||||
@@ -45,6 +47,7 @@ public class AlarmVibrationTogglePreferenceControllerTest {
|
||||
private static final String PREFERENCE_KEY = "preference_key";
|
||||
|
||||
@Mock private PreferenceScreen mScreen;
|
||||
@Mock AudioManager mAudioManager;
|
||||
|
||||
private Lifecycle mLifecycle;
|
||||
private Context mContext;
|
||||
@@ -56,7 +59,9 @@ public class AlarmVibrationTogglePreferenceControllerTest {
|
||||
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 AlarmVibrationTogglePreferenceController(mContext, PREFERENCE_KEY);
|
||||
mLifecycle.addObserver(mController);
|
||||
@@ -83,6 +88,26 @@ public class AlarmVibrationTogglePreferenceControllerTest {
|
||||
assertThat(mPreference.isChecked()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateState_ringerModeUpdates_shouldNotAffectSettings() {
|
||||
updateSetting(Settings.System.ALARM_VIBRATION_INTENSITY, Vibrator.VIBRATION_INTENSITY_LOW);
|
||||
|
||||
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.isChecked()).isTrue();
|
||||
assertThat(mPreference.isEnabled()).isTrue();
|
||||
|
||||
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_SILENT);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.isChecked()).isTrue();
|
||||
assertThat(mPreference.isEnabled()).isTrue();
|
||||
|
||||
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_VIBRATE);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.isChecked()).isTrue();
|
||||
assertThat(mPreference.isEnabled()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateState_shouldDisplayOnOffState() {
|
||||
updateSetting(Settings.System.ALARM_VIBRATION_INTENSITY, Vibrator.VIBRATION_INTENSITY_HIGH);
|
||||
|
@@ -94,28 +94,22 @@ public class HapticFeedbackIntensityPreferenceControllerTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateState_ringerModeUpdates_shouldPreserveSettingAndDisplaySummary() {
|
||||
public void updateState_ringerModeUpdates_shouldNotAffectSettings() {
|
||||
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();
|
||||
assertThat(mPreference.getProgress()).isEqualTo(Vibrator.VIBRATION_INTENSITY_LOW);
|
||||
assertThat(mPreference.isEnabled()).isTrue();
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
|
@@ -31,7 +31,6 @@ 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;
|
||||
|
||||
@@ -90,29 +89,23 @@ public class HapticFeedbackTogglePreferenceControllerTest {
|
||||
assertThat(mPreference.isChecked()).isTrue();
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void updateState_ringerModeUpdates_shouldPreserveSettingAndDisplaySummary() {
|
||||
public void updateState_ringerModeUpdates_shouldNotAffectSettings() {
|
||||
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();
|
||||
assertThat(mPreference.isChecked()).isTrue();
|
||||
assertThat(mPreference.isEnabled()).isTrue();
|
||||
|
||||
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_VIBRATE);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.isChecked()).isTrue();
|
||||
assertThat(mPreference.getSummary()).isNull();
|
||||
assertThat(mPreference.isEnabled()).isTrue();
|
||||
}
|
||||
|
||||
|
@@ -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 MediaVibrationIntensityPreferenceControllerTest {
|
||||
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 MediaVibrationIntensityPreferenceControllerTest {
|
||||
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 MediaVibrationIntensityPreferenceController(mContext, PREFERENCE_KEY,
|
||||
Vibrator.VIBRATION_INTENSITY_HIGH);
|
||||
@@ -88,6 +93,26 @@ public class MediaVibrationIntensityPreferenceControllerTest {
|
||||
mVibrator.getDefaultVibrationIntensity(VibrationAttributes.USAGE_MEDIA));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateState_ringerModeUpdates_shouldNotAffectSettings() {
|
||||
updateSetting(Settings.System.MEDIA_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.isEnabled()).isTrue();
|
||||
|
||||
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_SILENT);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.getProgress()).isEqualTo(Vibrator.VIBRATION_INTENSITY_LOW);
|
||||
assertThat(mPreference.isEnabled()).isTrue();
|
||||
|
||||
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_VIBRATE);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.getProgress()).isEqualTo(Vibrator.VIBRATION_INTENSITY_LOW);
|
||||
assertThat(mPreference.isEnabled()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateState_shouldDisplayIntensityInSliderPosition() {
|
||||
updateSetting(Settings.System.MEDIA_VIBRATION_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 MediaVibrationTogglePreferenceControllerTest {
|
||||
private static final String PREFERENCE_KEY = "preference_key";
|
||||
|
||||
@Mock private PreferenceScreen mScreen;
|
||||
@Mock AudioManager mAudioManager;
|
||||
|
||||
private Lifecycle mLifecycle;
|
||||
private Context mContext;
|
||||
@@ -57,7 +60,9 @@ public class MediaVibrationTogglePreferenceControllerTest {
|
||||
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 MediaVibrationTogglePreferenceController(mContext, PREFERENCE_KEY);
|
||||
mLifecycle.addObserver(mController);
|
||||
@@ -84,6 +89,26 @@ public class MediaVibrationTogglePreferenceControllerTest {
|
||||
assertThat(mPreference.isChecked()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateState_ringerModeUpdates_shouldNotAffectSettings() {
|
||||
updateSetting(Settings.System.MEDIA_VIBRATION_INTENSITY, Vibrator.VIBRATION_INTENSITY_LOW);
|
||||
|
||||
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_NORMAL);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.isChecked()).isTrue();
|
||||
assertThat(mPreference.isEnabled()).isTrue();
|
||||
|
||||
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_SILENT);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.isChecked()).isTrue();
|
||||
assertThat(mPreference.isEnabled()).isTrue();
|
||||
|
||||
when(mAudioManager.getRingerModeInternal()).thenReturn(AudioManager.RINGER_MODE_VIBRATE);
|
||||
mController.updateState(mPreference);
|
||||
assertThat(mPreference.isChecked()).isTrue();
|
||||
assertThat(mPreference.isEnabled()).isTrue();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateState_shouldDisplayOnOffState() {
|
||||
updateSetting(Settings.System.MEDIA_VIBRATION_INTENSITY, Vibrator.VIBRATION_INTENSITY_HIGH);
|
||||
|
Reference in New Issue
Block a user