Loading services/core/java/com/android/server/vibrator/VibrationSettings.java +1 −10 Original line number Diff line number Diff line Loading @@ -238,8 +238,6 @@ final class VibrationSettings { // Listen to all settings that might affect the result of Vibrator.getVibrationIntensity. registerSettingsObserver(Settings.System.getUriFor(Settings.System.VIBRATE_INPUT_DEVICES)); registerSettingsObserver(Settings.System.getUriFor(Settings.System.VIBRATE_ON)); registerSettingsObserver(Settings.System.getUriFor(Settings.System.VIBRATE_WHEN_RINGING)); registerSettingsObserver(Settings.System.getUriFor(Settings.System.APPLY_RAMPING_RINGER)); registerSettingsObserver(Settings.System.getUriFor( Settings.System.HAPTIC_FEEDBACK_ENABLED)); registerSettingsObserver( Loading Loading @@ -449,19 +447,12 @@ final class VibrationSettings { mCurrentVibrationIntensities.put(USAGE_NOTIFICATION, notificationIntensity); mCurrentVibrationIntensities.put(USAGE_MEDIA, mediaIntensity); mCurrentVibrationIntensities.put(USAGE_UNKNOWN, mediaIntensity); mCurrentVibrationIntensities.put(USAGE_RINGTONE, ringIntensity); // Communication request is not disabled by the notification setting. mCurrentVibrationIntensities.put(USAGE_COMMUNICATION_REQUEST, positiveNotificationIntensity); if (!loadBooleanSetting(Settings.System.VIBRATE_WHEN_RINGING) && !loadBooleanSetting(Settings.System.APPLY_RAMPING_RINGER)) { // Make sure deprecated boolean setting still disables ringtone vibrations. mCurrentVibrationIntensities.put(USAGE_RINGTONE, Vibrator.VIBRATION_INTENSITY_OFF); } else { mCurrentVibrationIntensities.put(USAGE_RINGTONE, ringIntensity); } // This should adapt the behavior preceding the introduction of this new setting // key, which is to apply HAPTIC_FEEDBACK_INTENSITY, unless it's disabled. mCurrentVibrationIntensities.put(USAGE_HARDWARE_FEEDBACK, hardwareFeedbackIntensity); Loading services/tests/servicestests/src/com/android/server/vibrator/VibrationSettingsTest.java +8 −32 Original line number Diff line number Diff line Loading @@ -193,7 +193,7 @@ public class VibrationSettingsTest { public void removeListener_noMoreCallbacksToListener() { mVibrationSettings.addListener(mListenerMock); setUserSetting(Settings.System.VIBRATE_WHEN_RINGING, 0); setUserSetting(Settings.System.RING_VIBRATION_INTENSITY, 0); verify(mListenerMock).onChange(); mVibrationSettings.removeListener(mListenerMock); Loading Loading @@ -291,8 +291,6 @@ public class VibrationSettingsTest { public void shouldIgnoreVibration_withRingerModeSilent_ignoresRingtoneAndNotification() { // Vibrating settings on are overruled by ringer mode. setUserSetting(Settings.System.HAPTIC_FEEDBACK_ENABLED, 1); setUserSetting(Settings.System.VIBRATE_WHEN_RINGING, 1); setUserSetting(Settings.System.APPLY_RAMPING_RINGER, 1); setRingerMode(AudioManager.RINGER_MODE_SILENT); for (int usage : ALL_USAGES) { Loading Loading @@ -360,44 +358,25 @@ public class VibrationSettingsTest { assertVibrationNotIgnoredForUsage(usage); } } @Test public void shouldIgnoreVibration_withRingSettingsOff_disableRingtoneVibrations() { public void shouldIgnoreVibration_withRingSettingsOff_allowsAllVibrations() { // VIBRATE_WHEN_RINGING is deprecated and should have no effect on the ring vibration // setting. The ramping ringer is also independent now, instead of a 3-state setting. setUserSetting(Settings.System.VIBRATE_WHEN_RINGING, 0); setUserSetting(Settings.System.APPLY_RAMPING_RINGER, 0); for (int usage : ALL_USAGES) { if (usage == USAGE_RINGTONE) { assertVibrationIgnoredForUsage(usage, Vibration.Status.IGNORED_FOR_SETTINGS); } else { assertVibrationNotIgnoredForUsage(usage); } assertVibrationNotIgnoredForUsageAndFlags(usage, VibrationAttributes.FLAG_BYPASS_USER_VIBRATION_INTENSITY_OFF); } } @Test public void shouldIgnoreVibration_withRingSettingsOn_allowsAllVibrations() { setUserSetting(Settings.System.VIBRATE_WHEN_RINGING, 1); setUserSetting(Settings.System.APPLY_RAMPING_RINGER, 0); for (int usage : ALL_USAGES) { assertVibrationNotIgnoredForUsage(usage); } } @Test public void shouldIgnoreVibration_withRampingRingerOn_allowsAllVibrations() { setUserSetting(Settings.System.VIBRATE_WHEN_RINGING, 0); setUserSetting(Settings.System.APPLY_RAMPING_RINGER, 1); for (int usage : ALL_USAGES) { assertVibrationNotIgnoredForUsage(usage); } } @Test public void shouldIgnoreVibration_withHapticFeedbackDisabled_ignoresTouchVibration() { // HAPTIC_FEEDBACK_ENABLED is deprecated but it was the only setting used to disable touch // feedback vibrations. Continue to apply this on top of the intensity setting. setUserSetting(Settings.System.HAPTIC_FEEDBACK_ENABLED, 0); for (int usage : ALL_USAGES) { Loading Loading @@ -459,8 +438,6 @@ public class VibrationSettingsTest { @Test public void shouldIgnoreVibration_withRingSettingsOff_ignoresRingtoneVibrations() { // Vibrating settings on are overruled by ring intensity setting. setUserSetting(Settings.System.VIBRATE_WHEN_RINGING, 1); setUserSetting(Settings.System.APPLY_RAMPING_RINGER, 1); setRingerMode(AudioManager.RINGER_MODE_VIBRATE); setUserSetting(Settings.System.RING_VIBRATION_INTENSITY, VIBRATION_INTENSITY_OFF); Loading @@ -479,7 +456,6 @@ public class VibrationSettingsTest { public void shouldIgnoreVibration_updateTriggeredAfterInternalRingerModeChanged() { // Vibrating settings on are overruled by ringer mode. setUserSetting(Settings.System.HAPTIC_FEEDBACK_ENABLED, 1); setUserSetting(Settings.System.VIBRATE_WHEN_RINGING, 1); setUserSetting(Settings.System.APPLY_RAMPING_RINGER, 1); setRingerMode(AudioManager.RINGER_MODE_NORMAL); Loading services/tests/servicestests/src/com/android/server/vibrator/VibratorManagerServiceTest.java +7 −16 Original line number Diff line number Diff line Loading @@ -559,30 +559,26 @@ public class VibratorManagerServiceTest { } @Test public void vibrate_withRingtone_usesRingtoneSettings() throws Exception { public void vibrate_withRingtone_usesRingerModeSettings() throws Exception { mockVibrators(1); FakeVibratorControllerProvider fakeVibrator = mVibratorProviders.get(1); fakeVibrator.setSupportedEffects(VibrationEffect.EFFECT_CLICK, VibrationEffect.EFFECT_HEAVY_CLICK, VibrationEffect.EFFECT_DOUBLE_CLICK); setRingerMode(AudioManager.RINGER_MODE_NORMAL); setUserSetting(Settings.System.VIBRATE_WHEN_RINGING, 0); setUserSetting(Settings.System.APPLY_RAMPING_RINGER, 0); setRingerMode(AudioManager.RINGER_MODE_SILENT); VibratorManagerService service = createSystemReadyService(); vibrate(service, VibrationEffect.get(VibrationEffect.EFFECT_CLICK), RINGTONE_ATTRS); // Wait before checking it never played. assertFalse(waitUntil(s -> !fakeVibrator.getAllEffectSegments().isEmpty(), service, /* timeout= */ 50)); setUserSetting(Settings.System.VIBRATE_WHEN_RINGING, 0); setUserSetting(Settings.System.APPLY_RAMPING_RINGER, 1); setRingerMode(AudioManager.RINGER_MODE_NORMAL); service = createSystemReadyService(); vibrate(service, VibrationEffect.get(VibrationEffect.EFFECT_HEAVY_CLICK), RINGTONE_ATTRS); assertTrue(waitUntil(s -> fakeVibrator.getAllEffectSegments().size() == 1, service, TEST_TIMEOUT_MILLIS)); setUserSetting(Settings.System.VIBRATE_WHEN_RINGING, 1); setUserSetting(Settings.System.APPLY_RAMPING_RINGER, 0); setRingerMode(AudioManager.RINGER_MODE_VIBRATE); service = createSystemReadyService(); vibrate(service, VibrationEffect.get(VibrationEffect.EFFECT_DOUBLE_CLICK), RINGTONE_ATTRS); assertTrue(waitUntil(s -> fakeVibrator.getAllEffectSegments().size() == 2, Loading Loading @@ -1225,7 +1221,6 @@ public class VibratorManagerServiceTest { mockVibrators(1); mVibratorProviders.get(1).setCapabilities(IVibrator.CAP_EXTERNAL_CONTROL); setRingerMode(AudioManager.RINGER_MODE_NORMAL); setUserSetting(Settings.System.VIBRATE_WHEN_RINGING, 1); createSystemReadyService(); IBinder firstToken = mock(IBinder.class); Loading Loading @@ -1296,21 +1291,17 @@ public class VibratorManagerServiceTest { ExternalVibration externalVibration = new ExternalVibration(UID, PACKAGE_NAME, audioAttrs, mock(IExternalVibrationController.class)); setRingerMode(AudioManager.RINGER_MODE_NORMAL); setUserSetting(Settings.System.VIBRATE_WHEN_RINGING, 0); setUserSetting(Settings.System.APPLY_RAMPING_RINGER, 0); setRingerMode(AudioManager.RINGER_MODE_SILENT); createSystemReadyService(); int scale = mExternalVibratorService.onExternalVibrationStart(externalVibration); assertEquals(IExternalVibratorService.SCALE_MUTE, scale); setUserSetting(Settings.System.VIBRATE_WHEN_RINGING, 0); setUserSetting(Settings.System.APPLY_RAMPING_RINGER, 1); setRingerMode(AudioManager.RINGER_MODE_NORMAL); createSystemReadyService(); scale = mExternalVibratorService.onExternalVibrationStart(externalVibration); assertNotEquals(IExternalVibratorService.SCALE_MUTE, scale); setUserSetting(Settings.System.VIBRATE_WHEN_RINGING, 1); setUserSetting(Settings.System.APPLY_RAMPING_RINGER, 0); setRingerMode(AudioManager.RINGER_MODE_VIBRATE); createSystemReadyService(); scale = mExternalVibratorService.onExternalVibrationStart(externalVibration); assertNotEquals(IExternalVibratorService.SCALE_MUTE, scale); Loading Loading
services/core/java/com/android/server/vibrator/VibrationSettings.java +1 −10 Original line number Diff line number Diff line Loading @@ -238,8 +238,6 @@ final class VibrationSettings { // Listen to all settings that might affect the result of Vibrator.getVibrationIntensity. registerSettingsObserver(Settings.System.getUriFor(Settings.System.VIBRATE_INPUT_DEVICES)); registerSettingsObserver(Settings.System.getUriFor(Settings.System.VIBRATE_ON)); registerSettingsObserver(Settings.System.getUriFor(Settings.System.VIBRATE_WHEN_RINGING)); registerSettingsObserver(Settings.System.getUriFor(Settings.System.APPLY_RAMPING_RINGER)); registerSettingsObserver(Settings.System.getUriFor( Settings.System.HAPTIC_FEEDBACK_ENABLED)); registerSettingsObserver( Loading Loading @@ -449,19 +447,12 @@ final class VibrationSettings { mCurrentVibrationIntensities.put(USAGE_NOTIFICATION, notificationIntensity); mCurrentVibrationIntensities.put(USAGE_MEDIA, mediaIntensity); mCurrentVibrationIntensities.put(USAGE_UNKNOWN, mediaIntensity); mCurrentVibrationIntensities.put(USAGE_RINGTONE, ringIntensity); // Communication request is not disabled by the notification setting. mCurrentVibrationIntensities.put(USAGE_COMMUNICATION_REQUEST, positiveNotificationIntensity); if (!loadBooleanSetting(Settings.System.VIBRATE_WHEN_RINGING) && !loadBooleanSetting(Settings.System.APPLY_RAMPING_RINGER)) { // Make sure deprecated boolean setting still disables ringtone vibrations. mCurrentVibrationIntensities.put(USAGE_RINGTONE, Vibrator.VIBRATION_INTENSITY_OFF); } else { mCurrentVibrationIntensities.put(USAGE_RINGTONE, ringIntensity); } // This should adapt the behavior preceding the introduction of this new setting // key, which is to apply HAPTIC_FEEDBACK_INTENSITY, unless it's disabled. mCurrentVibrationIntensities.put(USAGE_HARDWARE_FEEDBACK, hardwareFeedbackIntensity); Loading
services/tests/servicestests/src/com/android/server/vibrator/VibrationSettingsTest.java +8 −32 Original line number Diff line number Diff line Loading @@ -193,7 +193,7 @@ public class VibrationSettingsTest { public void removeListener_noMoreCallbacksToListener() { mVibrationSettings.addListener(mListenerMock); setUserSetting(Settings.System.VIBRATE_WHEN_RINGING, 0); setUserSetting(Settings.System.RING_VIBRATION_INTENSITY, 0); verify(mListenerMock).onChange(); mVibrationSettings.removeListener(mListenerMock); Loading Loading @@ -291,8 +291,6 @@ public class VibrationSettingsTest { public void shouldIgnoreVibration_withRingerModeSilent_ignoresRingtoneAndNotification() { // Vibrating settings on are overruled by ringer mode. setUserSetting(Settings.System.HAPTIC_FEEDBACK_ENABLED, 1); setUserSetting(Settings.System.VIBRATE_WHEN_RINGING, 1); setUserSetting(Settings.System.APPLY_RAMPING_RINGER, 1); setRingerMode(AudioManager.RINGER_MODE_SILENT); for (int usage : ALL_USAGES) { Loading Loading @@ -360,44 +358,25 @@ public class VibrationSettingsTest { assertVibrationNotIgnoredForUsage(usage); } } @Test public void shouldIgnoreVibration_withRingSettingsOff_disableRingtoneVibrations() { public void shouldIgnoreVibration_withRingSettingsOff_allowsAllVibrations() { // VIBRATE_WHEN_RINGING is deprecated and should have no effect on the ring vibration // setting. The ramping ringer is also independent now, instead of a 3-state setting. setUserSetting(Settings.System.VIBRATE_WHEN_RINGING, 0); setUserSetting(Settings.System.APPLY_RAMPING_RINGER, 0); for (int usage : ALL_USAGES) { if (usage == USAGE_RINGTONE) { assertVibrationIgnoredForUsage(usage, Vibration.Status.IGNORED_FOR_SETTINGS); } else { assertVibrationNotIgnoredForUsage(usage); } assertVibrationNotIgnoredForUsageAndFlags(usage, VibrationAttributes.FLAG_BYPASS_USER_VIBRATION_INTENSITY_OFF); } } @Test public void shouldIgnoreVibration_withRingSettingsOn_allowsAllVibrations() { setUserSetting(Settings.System.VIBRATE_WHEN_RINGING, 1); setUserSetting(Settings.System.APPLY_RAMPING_RINGER, 0); for (int usage : ALL_USAGES) { assertVibrationNotIgnoredForUsage(usage); } } @Test public void shouldIgnoreVibration_withRampingRingerOn_allowsAllVibrations() { setUserSetting(Settings.System.VIBRATE_WHEN_RINGING, 0); setUserSetting(Settings.System.APPLY_RAMPING_RINGER, 1); for (int usage : ALL_USAGES) { assertVibrationNotIgnoredForUsage(usage); } } @Test public void shouldIgnoreVibration_withHapticFeedbackDisabled_ignoresTouchVibration() { // HAPTIC_FEEDBACK_ENABLED is deprecated but it was the only setting used to disable touch // feedback vibrations. Continue to apply this on top of the intensity setting. setUserSetting(Settings.System.HAPTIC_FEEDBACK_ENABLED, 0); for (int usage : ALL_USAGES) { Loading Loading @@ -459,8 +438,6 @@ public class VibrationSettingsTest { @Test public void shouldIgnoreVibration_withRingSettingsOff_ignoresRingtoneVibrations() { // Vibrating settings on are overruled by ring intensity setting. setUserSetting(Settings.System.VIBRATE_WHEN_RINGING, 1); setUserSetting(Settings.System.APPLY_RAMPING_RINGER, 1); setRingerMode(AudioManager.RINGER_MODE_VIBRATE); setUserSetting(Settings.System.RING_VIBRATION_INTENSITY, VIBRATION_INTENSITY_OFF); Loading @@ -479,7 +456,6 @@ public class VibrationSettingsTest { public void shouldIgnoreVibration_updateTriggeredAfterInternalRingerModeChanged() { // Vibrating settings on are overruled by ringer mode. setUserSetting(Settings.System.HAPTIC_FEEDBACK_ENABLED, 1); setUserSetting(Settings.System.VIBRATE_WHEN_RINGING, 1); setUserSetting(Settings.System.APPLY_RAMPING_RINGER, 1); setRingerMode(AudioManager.RINGER_MODE_NORMAL); Loading
services/tests/servicestests/src/com/android/server/vibrator/VibratorManagerServiceTest.java +7 −16 Original line number Diff line number Diff line Loading @@ -559,30 +559,26 @@ public class VibratorManagerServiceTest { } @Test public void vibrate_withRingtone_usesRingtoneSettings() throws Exception { public void vibrate_withRingtone_usesRingerModeSettings() throws Exception { mockVibrators(1); FakeVibratorControllerProvider fakeVibrator = mVibratorProviders.get(1); fakeVibrator.setSupportedEffects(VibrationEffect.EFFECT_CLICK, VibrationEffect.EFFECT_HEAVY_CLICK, VibrationEffect.EFFECT_DOUBLE_CLICK); setRingerMode(AudioManager.RINGER_MODE_NORMAL); setUserSetting(Settings.System.VIBRATE_WHEN_RINGING, 0); setUserSetting(Settings.System.APPLY_RAMPING_RINGER, 0); setRingerMode(AudioManager.RINGER_MODE_SILENT); VibratorManagerService service = createSystemReadyService(); vibrate(service, VibrationEffect.get(VibrationEffect.EFFECT_CLICK), RINGTONE_ATTRS); // Wait before checking it never played. assertFalse(waitUntil(s -> !fakeVibrator.getAllEffectSegments().isEmpty(), service, /* timeout= */ 50)); setUserSetting(Settings.System.VIBRATE_WHEN_RINGING, 0); setUserSetting(Settings.System.APPLY_RAMPING_RINGER, 1); setRingerMode(AudioManager.RINGER_MODE_NORMAL); service = createSystemReadyService(); vibrate(service, VibrationEffect.get(VibrationEffect.EFFECT_HEAVY_CLICK), RINGTONE_ATTRS); assertTrue(waitUntil(s -> fakeVibrator.getAllEffectSegments().size() == 1, service, TEST_TIMEOUT_MILLIS)); setUserSetting(Settings.System.VIBRATE_WHEN_RINGING, 1); setUserSetting(Settings.System.APPLY_RAMPING_RINGER, 0); setRingerMode(AudioManager.RINGER_MODE_VIBRATE); service = createSystemReadyService(); vibrate(service, VibrationEffect.get(VibrationEffect.EFFECT_DOUBLE_CLICK), RINGTONE_ATTRS); assertTrue(waitUntil(s -> fakeVibrator.getAllEffectSegments().size() == 2, Loading Loading @@ -1225,7 +1221,6 @@ public class VibratorManagerServiceTest { mockVibrators(1); mVibratorProviders.get(1).setCapabilities(IVibrator.CAP_EXTERNAL_CONTROL); setRingerMode(AudioManager.RINGER_MODE_NORMAL); setUserSetting(Settings.System.VIBRATE_WHEN_RINGING, 1); createSystemReadyService(); IBinder firstToken = mock(IBinder.class); Loading Loading @@ -1296,21 +1291,17 @@ public class VibratorManagerServiceTest { ExternalVibration externalVibration = new ExternalVibration(UID, PACKAGE_NAME, audioAttrs, mock(IExternalVibrationController.class)); setRingerMode(AudioManager.RINGER_MODE_NORMAL); setUserSetting(Settings.System.VIBRATE_WHEN_RINGING, 0); setUserSetting(Settings.System.APPLY_RAMPING_RINGER, 0); setRingerMode(AudioManager.RINGER_MODE_SILENT); createSystemReadyService(); int scale = mExternalVibratorService.onExternalVibrationStart(externalVibration); assertEquals(IExternalVibratorService.SCALE_MUTE, scale); setUserSetting(Settings.System.VIBRATE_WHEN_RINGING, 0); setUserSetting(Settings.System.APPLY_RAMPING_RINGER, 1); setRingerMode(AudioManager.RINGER_MODE_NORMAL); createSystemReadyService(); scale = mExternalVibratorService.onExternalVibrationStart(externalVibration); assertNotEquals(IExternalVibratorService.SCALE_MUTE, scale); setUserSetting(Settings.System.VIBRATE_WHEN_RINGING, 1); setUserSetting(Settings.System.APPLY_RAMPING_RINGER, 0); setRingerMode(AudioManager.RINGER_MODE_VIBRATE); createSystemReadyService(); scale = mExternalVibratorService.onExternalVibrationStart(externalVibration); assertNotEquals(IExternalVibratorService.SCALE_MUTE, scale); Loading