Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c6848845 authored by Wilson Wu's avatar Wilson Wu
Browse files

Move keyboard vibration config to frameworks/base

-. Introduce frameworks config for keyboard vibration
-. Replace the settings config to the new frameworks one
-. Clean up the amplitude check with new config

Flag: EXEMPT refactor
Bug: 332661307
Test: atest com.android.server.vibrator.VibrationSettingsTest
Change-Id: Ia22af836dc11c7298d51fd0d3dbd9b8463ccfff7
parent ecee059e
Loading
Loading
Loading
Loading
+7 −6
Original line number Original line Diff line number Diff line
@@ -70,7 +70,7 @@ public class VibrationConfig {


    private final boolean mDefaultKeyboardVibrationEnabled;
    private final boolean mDefaultKeyboardVibrationEnabled;


    private final boolean mHasFixedKeyboardAmplitude;
    private final boolean mKeyboardVibrationSettingsSupported;


    /** @hide */
    /** @hide */
    public VibrationConfig(@Nullable Resources resources) {
    public VibrationConfig(@Nullable Resources resources) {
@@ -89,8 +89,8 @@ public class VibrationConfig {
                com.android.internal.R.bool.config_ignoreVibrationsOnWirelessCharger, false);
                com.android.internal.R.bool.config_ignoreVibrationsOnWirelessCharger, false);
        mDefaultKeyboardVibrationEnabled = loadBoolean(resources,
        mDefaultKeyboardVibrationEnabled = loadBoolean(resources,
                com.android.internal.R.bool.config_defaultKeyboardVibrationEnabled, true);
                com.android.internal.R.bool.config_defaultKeyboardVibrationEnabled, true);
        mHasFixedKeyboardAmplitude = loadFloat(resources,
        mKeyboardVibrationSettingsSupported = loadBoolean(resources,
                com.android.internal.R.dimen.config_keyboardHapticFeedbackFixedAmplitude, -1) > 0;
                com.android.internal.R.bool.config_keyboardVibrationSettingsSupported, false);


        mDefaultAlarmVibrationIntensity = loadDefaultIntensity(resources,
        mDefaultAlarmVibrationIntensity = loadDefaultIntensity(resources,
                com.android.internal.R.integer.config_defaultAlarmVibrationIntensity);
                com.android.internal.R.integer.config_defaultAlarmVibrationIntensity);
@@ -202,11 +202,11 @@ public class VibrationConfig {
    }
    }


    /**
    /**
     * Whether the device has a fixed amplitude for keyboard.
     * Whether the device support keyboard vibration settings.
     * @hide
     * @hide
     */
     */
    public boolean hasFixedKeyboardAmplitude() {
    public boolean isKeyboardVibrationSettingsSupported() {
        return mHasFixedKeyboardAmplitude;
        return mKeyboardVibrationSettingsSupported;
    }
    }


    /** Get the default vibration intensity for given usage. */
    /** Get the default vibration intensity for given usage. */
@@ -249,6 +249,7 @@ public class VibrationConfig {
                + ", mDefaultNotificationIntensity=" + mDefaultNotificationVibrationIntensity
                + ", mDefaultNotificationIntensity=" + mDefaultNotificationVibrationIntensity
                + ", mDefaultRingIntensity=" + mDefaultRingVibrationIntensity
                + ", mDefaultRingIntensity=" + mDefaultRingVibrationIntensity
                + ", mDefaultKeyboardVibrationEnabled=" + mDefaultKeyboardVibrationEnabled
                + ", mDefaultKeyboardVibrationEnabled=" + mDefaultKeyboardVibrationEnabled
                + ", mKeyboardVibrationSettingsSupported=" + mKeyboardVibrationSettingsSupported
                + "}";
                + "}";
    }
    }


+3 −0
Original line number Original line Diff line number Diff line
@@ -4136,6 +4136,9 @@
    <!-- The default value for keyboard vibration toggle in settings. -->
    <!-- The default value for keyboard vibration toggle in settings. -->
    <bool name="config_defaultKeyboardVibrationEnabled">true</bool>
    <bool name="config_defaultKeyboardVibrationEnabled">true</bool>


    <!-- Indicating if keyboard vibration settings supported or not. -->
    <bool name="config_keyboardVibrationSettingsSupported">false</bool>

    <!-- If the device should still vibrate even in low power mode, for certain priority vibrations
    <!-- If the device should still vibrate even in low power mode, for certain priority vibrations
     (e.g. accessibility, alarms). This is mainly for Wear devices that don't have speakers. -->
     (e.g. accessibility, alarms). This is mainly for Wear devices that don't have speakers. -->
    <bool name="config_allowPriorityVibrationsInLowPowerMode">false</bool>
    <bool name="config_allowPriorityVibrationsInLowPowerMode">false</bool>
+1 −0
Original line number Original line Diff line number Diff line
@@ -2113,6 +2113,7 @@
  <java-symbol type="dimen" name="config_hapticChannelMaxVibrationAmplitude" />
  <java-symbol type="dimen" name="config_hapticChannelMaxVibrationAmplitude" />
  <java-symbol type="dimen" name="config_keyboardHapticFeedbackFixedAmplitude" />
  <java-symbol type="dimen" name="config_keyboardHapticFeedbackFixedAmplitude" />
  <java-symbol type="bool" name="config_defaultKeyboardVibrationEnabled" />
  <java-symbol type="bool" name="config_defaultKeyboardVibrationEnabled" />
  <java-symbol type="bool" name="config_keyboardVibrationSettingsSupported" />
  <java-symbol type="integer" name="config_vibrationWaveformRampStepDuration" />
  <java-symbol type="integer" name="config_vibrationWaveformRampStepDuration" />
  <java-symbol type="bool" name="config_ignoreVibrationsOnWirelessCharger" />
  <java-symbol type="bool" name="config_ignoreVibrationsOnWirelessCharger" />
  <java-symbol type="integer" name="config_vibrationWaveformRampDownDuration" />
  <java-symbol type="integer" name="config_vibrationWaveformRampDownDuration" />
+2 −1
Original line number Original line Diff line number Diff line
@@ -532,7 +532,8 @@ final class VibrationSettings {
            return false;
            return false;
        }
        }


        if (Flags.keyboardCategoryEnabled() && mVibrationConfig.hasFixedKeyboardAmplitude()) {
        if (Flags.keyboardCategoryEnabled()
                && mVibrationConfig.isKeyboardVibrationSettingsSupported()) {
            int category = callerInfo.attrs.getCategory();
            int category = callerInfo.attrs.getCategory();
            if (usage == USAGE_TOUCH && category == CATEGORY_KEYBOARD) {
            if (usage == USAGE_TOUCH && category == CATEGORY_KEYBOARD) {
                // Keyboard touch has a different user setting.
                // Keyboard touch has a different user setting.
+6 −6
Original line number Original line Diff line number Diff line
@@ -605,7 +605,7 @@ public class VibrationSettingsTest {
    public void shouldIgnoreVibration_withKeyboardSettingsOff_shouldIgnoreKeyboardVibration() {
    public void shouldIgnoreVibration_withKeyboardSettingsOff_shouldIgnoreKeyboardVibration() {
        setUserSetting(Settings.System.HAPTIC_FEEDBACK_INTENSITY, VIBRATION_INTENSITY_MEDIUM);
        setUserSetting(Settings.System.HAPTIC_FEEDBACK_INTENSITY, VIBRATION_INTENSITY_MEDIUM);
        setUserSetting(Settings.System.KEYBOARD_VIBRATION_ENABLED, 0 /* OFF*/);
        setUserSetting(Settings.System.KEYBOARD_VIBRATION_ENABLED, 0 /* OFF*/);
        setHasFixedKeyboardAmplitudeIntensity(true);
        setKeyboardVibrationSettingsSupported(true);


        // Keyboard touch ignored.
        // Keyboard touch ignored.
        assertVibrationIgnoredForAttributes(
        assertVibrationIgnoredForAttributes(
@@ -630,7 +630,7 @@ public class VibrationSettingsTest {
    public void shouldIgnoreVibration_withKeyboardSettingsOn_shouldNotIgnoreKeyboardVibration() {
    public void shouldIgnoreVibration_withKeyboardSettingsOn_shouldNotIgnoreKeyboardVibration() {
        setUserSetting(Settings.System.HAPTIC_FEEDBACK_INTENSITY, VIBRATION_INTENSITY_OFF);
        setUserSetting(Settings.System.HAPTIC_FEEDBACK_INTENSITY, VIBRATION_INTENSITY_OFF);
        setUserSetting(Settings.System.KEYBOARD_VIBRATION_ENABLED, 1 /* ON */);
        setUserSetting(Settings.System.KEYBOARD_VIBRATION_ENABLED, 1 /* ON */);
        setHasFixedKeyboardAmplitudeIntensity(true);
        setKeyboardVibrationSettingsSupported(true);


        // General touch ignored.
        // General touch ignored.
        assertVibrationIgnoredForUsage(USAGE_TOUCH, Vibration.Status.IGNORED_FOR_SETTINGS);
        assertVibrationIgnoredForUsage(USAGE_TOUCH, Vibration.Status.IGNORED_FOR_SETTINGS);
@@ -645,10 +645,10 @@ public class VibrationSettingsTest {


    @Test
    @Test
    @RequiresFlagsEnabled(Flags.FLAG_KEYBOARD_CATEGORY_ENABLED)
    @RequiresFlagsEnabled(Flags.FLAG_KEYBOARD_CATEGORY_ENABLED)
    public void shouldIgnoreVibration_noFixedKeyboardAmplitude_ignoresKeyboardTouchVibration() {
    public void shouldIgnoreVibration_notSupportKeyboardVibration_ignoresKeyboardTouchVibration() {
        setUserSetting(Settings.System.HAPTIC_FEEDBACK_INTENSITY, VIBRATION_INTENSITY_OFF);
        setUserSetting(Settings.System.HAPTIC_FEEDBACK_INTENSITY, VIBRATION_INTENSITY_OFF);
        setUserSetting(Settings.System.KEYBOARD_VIBRATION_ENABLED, 1 /* ON */);
        setUserSetting(Settings.System.KEYBOARD_VIBRATION_ENABLED, 1 /* ON */);
        setHasFixedKeyboardAmplitudeIntensity(false);
        setKeyboardVibrationSettingsSupported(false);


        // General touch ignored.
        // General touch ignored.
        assertVibrationIgnoredForUsage(USAGE_TOUCH, Vibration.Status.IGNORED_FOR_SETTINGS);
        assertVibrationIgnoredForUsage(USAGE_TOUCH, Vibration.Status.IGNORED_FOR_SETTINGS);
@@ -974,8 +974,8 @@ public class VibrationSettingsTest {
        when(mVibrationConfigMock.ignoreVibrationsOnWirelessCharger()).thenReturn(ignore);
        when(mVibrationConfigMock.ignoreVibrationsOnWirelessCharger()).thenReturn(ignore);
    }
    }


    private void setHasFixedKeyboardAmplitudeIntensity(boolean hasFixedAmplitude) {
    private void setKeyboardVibrationSettingsSupported(boolean supported) {
        when(mVibrationConfigMock.hasFixedKeyboardAmplitude()).thenReturn(hasFixedAmplitude);
        when(mVibrationConfigMock.isKeyboardVibrationSettingsSupported()).thenReturn(supported);
    }
    }


    private void deleteUserSetting(String settingName) {
    private void deleteUserSetting(String settingName) {