Loading core/proto/android/server/vibrator/vibratormanagerservice.proto +1 −1 Original line number Diff line number Diff line Loading @@ -163,7 +163,7 @@ message VibratorManagerServiceDumpProto { optional bool vibrator_under_external_control = 5; optional bool low_power_mode = 6; optional bool vibrate_on = 24; optional bool keyboard_vibration_on = 25; reserved 25; // prev keyboard_vibration_on optional int32 default_vibration_amplitude = 26; optional int32 alarm_intensity = 18; optional int32 alarm_default_intensity = 19; Loading services/core/java/com/android/server/vibrator/VibrationSettings.java +9 −18 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ package com.android.server.vibrator; import static android.os.VibrationAttributes.CATEGORY_KEYBOARD; import static android.os.VibrationAttributes.USAGE_ACCESSIBILITY; import static android.os.VibrationAttributes.USAGE_ALARM; import static android.os.VibrationAttributes.USAGE_COMMUNICATION_REQUEST; Loading Loading @@ -191,8 +190,6 @@ final class VibrationSettings { @GuardedBy("mLock") private boolean mVibrateOn; @GuardedBy("mLock") private boolean mKeyboardVibrationOn; @GuardedBy("mLock") private int mRingerMode; @GuardedBy("mLock") private boolean mOnWirelessCharger; Loading Loading @@ -532,14 +529,6 @@ final class VibrationSettings { return false; } if (mVibrationConfig.isKeyboardVibrationSettingsSupported()) { int category = callerInfo.attrs.getCategory(); if (usage == USAGE_TOUCH && category == CATEGORY_KEYBOARD) { // Keyboard touch has a different user setting. return mKeyboardVibrationOn; } } // Apply individual user setting based on usage. return getCurrentIntensity(usage) != Vibrator.VIBRATION_INTENSITY_OFF; } Loading @@ -556,10 +545,11 @@ final class VibrationSettings { mVibrateInputDevices = loadSystemSetting(Settings.System.VIBRATE_INPUT_DEVICES, 0, userHandle) > 0; mVibrateOn = loadSystemSetting(Settings.System.VIBRATE_ON, 1, userHandle) > 0; mKeyboardVibrationOn = loadSystemSetting( Settings.System.KEYBOARD_VIBRATION_ENABLED, 1, userHandle) > 0; int keyboardIntensity = getDefaultIntensity(USAGE_IME_FEEDBACK); boolean isKeyboardVibrationOn = loadSystemSetting( Settings.System.KEYBOARD_VIBRATION_ENABLED, 1, userHandle) > 0; int keyboardIntensity = toIntensity(isKeyboardVibrationOn, getDefaultIntensity(USAGE_IME_FEEDBACK)); int alarmIntensity = toIntensity( loadSystemSetting(Settings.System.ALARM_VIBRATION_INTENSITY, -1, userHandle), getDefaultIntensity(USAGE_ALARM)); Loading Loading @@ -654,7 +644,6 @@ final class VibrationSettings { return "VibrationSettings{" + "mVibratorConfig=" + mVibrationConfig + ", mVibrateOn=" + mVibrateOn + ", mKeyboardVibrationOn=" + mKeyboardVibrationOn + ", mVibrateInputDevices=" + mVibrateInputDevices + ", mBatterySaverMode=" + mBatterySaverMode + ", mRingerMode=" + ringerModeToString(mRingerMode) Loading @@ -671,7 +660,6 @@ final class VibrationSettings { pw.println("VibrationSettings:"); pw.increaseIndent(); pw.println("vibrateOn = " + mVibrateOn); pw.println("keyboardVibrationOn = " + mKeyboardVibrationOn); pw.println("vibrateInputDevices = " + mVibrateInputDevices); pw.println("batterySaverMode = " + mBatterySaverMode); pw.println("ringerMode = " + ringerModeToString(mRingerMode)); Loading @@ -698,8 +686,6 @@ final class VibrationSettings { void dump(ProtoOutputStream proto) { synchronized (mLock) { proto.write(VibratorManagerServiceDumpProto.VIBRATE_ON, mVibrateOn); proto.write(VibratorManagerServiceDumpProto.KEYBOARD_VIBRATION_ON, mKeyboardVibrationOn); proto.write(VibratorManagerServiceDumpProto.LOW_POWER_MODE, mBatterySaverMode); proto.write(VibratorManagerServiceDumpProto.ALARM_INTENSITY, getCurrentIntensity(USAGE_ALARM)); Loading Loading @@ -774,6 +760,11 @@ final class VibrationSettings { return value; } @VibrationIntensity private int toIntensity(boolean enabled, @VibrationIntensity int defaultValue) { return enabled ? defaultValue : Vibrator.VIBRATION_INTENSITY_OFF; } private boolean loadBooleanSetting(String settingKey, int userHandle) { return loadSystemSetting(settingKey, 0, userHandle) != 0; } Loading services/tests/vibrator/src/com/android/server/vibrator/VibrationSettingsTest.java +10 −9 Original line number Diff line number Diff line Loading @@ -119,6 +119,7 @@ public class VibrationSettingsTest { USAGE_PHYSICAL_EMULATION, USAGE_RINGTONE, USAGE_TOUCH, USAGE_IME_FEEDBACK }; @Rule public MockitoRule mMockitoRule = MockitoJUnit.rule(); Loading Loading @@ -525,7 +526,7 @@ public class VibrationSettingsTest { setUserSetting(Settings.System.HAPTIC_FEEDBACK_INTENSITY, VIBRATION_INTENSITY_OFF); for (int usage : ALL_USAGES) { if (usage == USAGE_TOUCH) { if (usage == USAGE_TOUCH || usage == USAGE_IME_FEEDBACK) { assertVibrationIgnoredForUsage(usage, Vibration.Status.IGNORED_FOR_SETTINGS); } else { assertVibrationNotIgnoredForUsage(usage); Loading Loading @@ -601,14 +602,14 @@ public class VibrationSettingsTest { @Test public void shouldIgnoreVibration_withKeyboardSettingsOff_shouldIgnoreKeyboardVibration() { setKeyboardVibrationSettingsSupported(true); setUserSetting(Settings.System.HAPTIC_FEEDBACK_INTENSITY, VIBRATION_INTENSITY_MEDIUM); setUserSetting(Settings.System.KEYBOARD_VIBRATION_ENABLED, 0 /* OFF*/); setKeyboardVibrationSettingsSupported(true); // Keyboard touch ignored. assertVibrationIgnoredForAttributes( new VibrationAttributes.Builder() .setUsage(USAGE_TOUCH) .setUsage(USAGE_IME_FEEDBACK) .setCategory(VibrationAttributes.CATEGORY_KEYBOARD) .build(), Vibration.Status.IGNORED_FOR_SETTINGS); Loading @@ -617,7 +618,7 @@ public class VibrationSettingsTest { assertVibrationNotIgnoredForUsage(USAGE_TOUCH); assertVibrationNotIgnoredForAttributes( new VibrationAttributes.Builder() .setUsage(USAGE_TOUCH) .setUsage(USAGE_IME_FEEDBACK) .setCategory(VibrationAttributes.CATEGORY_KEYBOARD) .setFlags(VibrationAttributes.FLAG_BYPASS_USER_VIBRATION_INTENSITY_OFF) .build()); Loading @@ -625,9 +626,9 @@ public class VibrationSettingsTest { @Test public void shouldIgnoreVibration_withKeyboardSettingsOn_shouldNotIgnoreKeyboardVibration() { setKeyboardVibrationSettingsSupported(true); setUserSetting(Settings.System.HAPTIC_FEEDBACK_INTENSITY, VIBRATION_INTENSITY_OFF); setUserSetting(Settings.System.KEYBOARD_VIBRATION_ENABLED, 1 /* ON */); setKeyboardVibrationSettingsSupported(true); // General touch ignored. assertVibrationIgnoredForUsage(USAGE_TOUCH, Vibration.Status.IGNORED_FOR_SETTINGS); Loading @@ -635,16 +636,16 @@ public class VibrationSettingsTest { // Keyboard touch not ignored. assertVibrationNotIgnoredForAttributes( new VibrationAttributes.Builder() .setUsage(USAGE_TOUCH) .setUsage(USAGE_IME_FEEDBACK) .setCategory(VibrationAttributes.CATEGORY_KEYBOARD) .build()); } @Test public void shouldIgnoreVibration_notSupportKeyboardVibration_ignoresKeyboardTouchVibration() { public void shouldIgnoreVibration_notSupportKeyboardVibration_followsTouchFeedbackSettings() { setKeyboardVibrationSettingsSupported(false); setUserSetting(Settings.System.HAPTIC_FEEDBACK_INTENSITY, VIBRATION_INTENSITY_OFF); setUserSetting(Settings.System.KEYBOARD_VIBRATION_ENABLED, 1 /* ON */); setKeyboardVibrationSettingsSupported(false); // General touch ignored. assertVibrationIgnoredForUsage(USAGE_TOUCH, Vibration.Status.IGNORED_FOR_SETTINGS); Loading @@ -652,7 +653,7 @@ public class VibrationSettingsTest { // Keyboard touch ignored. assertVibrationIgnoredForAttributes( new VibrationAttributes.Builder() .setUsage(USAGE_TOUCH) .setUsage(USAGE_IME_FEEDBACK) .setCategory(VibrationAttributes.CATEGORY_KEYBOARD) .build(), Vibration.Status.IGNORED_FOR_SETTINGS); Loading Loading
core/proto/android/server/vibrator/vibratormanagerservice.proto +1 −1 Original line number Diff line number Diff line Loading @@ -163,7 +163,7 @@ message VibratorManagerServiceDumpProto { optional bool vibrator_under_external_control = 5; optional bool low_power_mode = 6; optional bool vibrate_on = 24; optional bool keyboard_vibration_on = 25; reserved 25; // prev keyboard_vibration_on optional int32 default_vibration_amplitude = 26; optional int32 alarm_intensity = 18; optional int32 alarm_default_intensity = 19; Loading
services/core/java/com/android/server/vibrator/VibrationSettings.java +9 −18 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ package com.android.server.vibrator; import static android.os.VibrationAttributes.CATEGORY_KEYBOARD; import static android.os.VibrationAttributes.USAGE_ACCESSIBILITY; import static android.os.VibrationAttributes.USAGE_ALARM; import static android.os.VibrationAttributes.USAGE_COMMUNICATION_REQUEST; Loading Loading @@ -191,8 +190,6 @@ final class VibrationSettings { @GuardedBy("mLock") private boolean mVibrateOn; @GuardedBy("mLock") private boolean mKeyboardVibrationOn; @GuardedBy("mLock") private int mRingerMode; @GuardedBy("mLock") private boolean mOnWirelessCharger; Loading Loading @@ -532,14 +529,6 @@ final class VibrationSettings { return false; } if (mVibrationConfig.isKeyboardVibrationSettingsSupported()) { int category = callerInfo.attrs.getCategory(); if (usage == USAGE_TOUCH && category == CATEGORY_KEYBOARD) { // Keyboard touch has a different user setting. return mKeyboardVibrationOn; } } // Apply individual user setting based on usage. return getCurrentIntensity(usage) != Vibrator.VIBRATION_INTENSITY_OFF; } Loading @@ -556,10 +545,11 @@ final class VibrationSettings { mVibrateInputDevices = loadSystemSetting(Settings.System.VIBRATE_INPUT_DEVICES, 0, userHandle) > 0; mVibrateOn = loadSystemSetting(Settings.System.VIBRATE_ON, 1, userHandle) > 0; mKeyboardVibrationOn = loadSystemSetting( Settings.System.KEYBOARD_VIBRATION_ENABLED, 1, userHandle) > 0; int keyboardIntensity = getDefaultIntensity(USAGE_IME_FEEDBACK); boolean isKeyboardVibrationOn = loadSystemSetting( Settings.System.KEYBOARD_VIBRATION_ENABLED, 1, userHandle) > 0; int keyboardIntensity = toIntensity(isKeyboardVibrationOn, getDefaultIntensity(USAGE_IME_FEEDBACK)); int alarmIntensity = toIntensity( loadSystemSetting(Settings.System.ALARM_VIBRATION_INTENSITY, -1, userHandle), getDefaultIntensity(USAGE_ALARM)); Loading Loading @@ -654,7 +644,6 @@ final class VibrationSettings { return "VibrationSettings{" + "mVibratorConfig=" + mVibrationConfig + ", mVibrateOn=" + mVibrateOn + ", mKeyboardVibrationOn=" + mKeyboardVibrationOn + ", mVibrateInputDevices=" + mVibrateInputDevices + ", mBatterySaverMode=" + mBatterySaverMode + ", mRingerMode=" + ringerModeToString(mRingerMode) Loading @@ -671,7 +660,6 @@ final class VibrationSettings { pw.println("VibrationSettings:"); pw.increaseIndent(); pw.println("vibrateOn = " + mVibrateOn); pw.println("keyboardVibrationOn = " + mKeyboardVibrationOn); pw.println("vibrateInputDevices = " + mVibrateInputDevices); pw.println("batterySaverMode = " + mBatterySaverMode); pw.println("ringerMode = " + ringerModeToString(mRingerMode)); Loading @@ -698,8 +686,6 @@ final class VibrationSettings { void dump(ProtoOutputStream proto) { synchronized (mLock) { proto.write(VibratorManagerServiceDumpProto.VIBRATE_ON, mVibrateOn); proto.write(VibratorManagerServiceDumpProto.KEYBOARD_VIBRATION_ON, mKeyboardVibrationOn); proto.write(VibratorManagerServiceDumpProto.LOW_POWER_MODE, mBatterySaverMode); proto.write(VibratorManagerServiceDumpProto.ALARM_INTENSITY, getCurrentIntensity(USAGE_ALARM)); Loading Loading @@ -774,6 +760,11 @@ final class VibrationSettings { return value; } @VibrationIntensity private int toIntensity(boolean enabled, @VibrationIntensity int defaultValue) { return enabled ? defaultValue : Vibrator.VIBRATION_INTENSITY_OFF; } private boolean loadBooleanSetting(String settingKey, int userHandle) { return loadSystemSetting(settingKey, 0, userHandle) != 0; } Loading
services/tests/vibrator/src/com/android/server/vibrator/VibrationSettingsTest.java +10 −9 Original line number Diff line number Diff line Loading @@ -119,6 +119,7 @@ public class VibrationSettingsTest { USAGE_PHYSICAL_EMULATION, USAGE_RINGTONE, USAGE_TOUCH, USAGE_IME_FEEDBACK }; @Rule public MockitoRule mMockitoRule = MockitoJUnit.rule(); Loading Loading @@ -525,7 +526,7 @@ public class VibrationSettingsTest { setUserSetting(Settings.System.HAPTIC_FEEDBACK_INTENSITY, VIBRATION_INTENSITY_OFF); for (int usage : ALL_USAGES) { if (usage == USAGE_TOUCH) { if (usage == USAGE_TOUCH || usage == USAGE_IME_FEEDBACK) { assertVibrationIgnoredForUsage(usage, Vibration.Status.IGNORED_FOR_SETTINGS); } else { assertVibrationNotIgnoredForUsage(usage); Loading Loading @@ -601,14 +602,14 @@ public class VibrationSettingsTest { @Test public void shouldIgnoreVibration_withKeyboardSettingsOff_shouldIgnoreKeyboardVibration() { setKeyboardVibrationSettingsSupported(true); setUserSetting(Settings.System.HAPTIC_FEEDBACK_INTENSITY, VIBRATION_INTENSITY_MEDIUM); setUserSetting(Settings.System.KEYBOARD_VIBRATION_ENABLED, 0 /* OFF*/); setKeyboardVibrationSettingsSupported(true); // Keyboard touch ignored. assertVibrationIgnoredForAttributes( new VibrationAttributes.Builder() .setUsage(USAGE_TOUCH) .setUsage(USAGE_IME_FEEDBACK) .setCategory(VibrationAttributes.CATEGORY_KEYBOARD) .build(), Vibration.Status.IGNORED_FOR_SETTINGS); Loading @@ -617,7 +618,7 @@ public class VibrationSettingsTest { assertVibrationNotIgnoredForUsage(USAGE_TOUCH); assertVibrationNotIgnoredForAttributes( new VibrationAttributes.Builder() .setUsage(USAGE_TOUCH) .setUsage(USAGE_IME_FEEDBACK) .setCategory(VibrationAttributes.CATEGORY_KEYBOARD) .setFlags(VibrationAttributes.FLAG_BYPASS_USER_VIBRATION_INTENSITY_OFF) .build()); Loading @@ -625,9 +626,9 @@ public class VibrationSettingsTest { @Test public void shouldIgnoreVibration_withKeyboardSettingsOn_shouldNotIgnoreKeyboardVibration() { setKeyboardVibrationSettingsSupported(true); setUserSetting(Settings.System.HAPTIC_FEEDBACK_INTENSITY, VIBRATION_INTENSITY_OFF); setUserSetting(Settings.System.KEYBOARD_VIBRATION_ENABLED, 1 /* ON */); setKeyboardVibrationSettingsSupported(true); // General touch ignored. assertVibrationIgnoredForUsage(USAGE_TOUCH, Vibration.Status.IGNORED_FOR_SETTINGS); Loading @@ -635,16 +636,16 @@ public class VibrationSettingsTest { // Keyboard touch not ignored. assertVibrationNotIgnoredForAttributes( new VibrationAttributes.Builder() .setUsage(USAGE_TOUCH) .setUsage(USAGE_IME_FEEDBACK) .setCategory(VibrationAttributes.CATEGORY_KEYBOARD) .build()); } @Test public void shouldIgnoreVibration_notSupportKeyboardVibration_ignoresKeyboardTouchVibration() { public void shouldIgnoreVibration_notSupportKeyboardVibration_followsTouchFeedbackSettings() { setKeyboardVibrationSettingsSupported(false); setUserSetting(Settings.System.HAPTIC_FEEDBACK_INTENSITY, VIBRATION_INTENSITY_OFF); setUserSetting(Settings.System.KEYBOARD_VIBRATION_ENABLED, 1 /* ON */); setKeyboardVibrationSettingsSupported(false); // General touch ignored. assertVibrationIgnoredForUsage(USAGE_TOUCH, Vibration.Status.IGNORED_FOR_SETTINGS); Loading @@ -652,7 +653,7 @@ public class VibrationSettingsTest { // Keyboard touch ignored. assertVibrationIgnoredForAttributes( new VibrationAttributes.Builder() .setUsage(USAGE_TOUCH) .setUsage(USAGE_IME_FEEDBACK) .setCategory(VibrationAttributes.CATEGORY_KEYBOARD) .build(), Vibration.Status.IGNORED_FOR_SETTINGS); Loading