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

Commit 0dc4b235 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Use USAGE_IME_FEEDBACK in VibrationSettings#shouldVibrateForUserSetting" into main

parents 0f647b86 d235457b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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;
+9 −18
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -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;
    }
@@ -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));
@@ -654,7 +644,6 @@ final class VibrationSettings {
            return "VibrationSettings{"
                    + "mVibratorConfig=" + mVibrationConfig
                    + ", mVibrateOn=" + mVibrateOn
                    + ", mKeyboardVibrationOn=" + mKeyboardVibrationOn
                    + ", mVibrateInputDevices=" + mVibrateInputDevices
                    + ", mBatterySaverMode=" + mBatterySaverMode
                    + ", mRingerMode=" + ringerModeToString(mRingerMode)
@@ -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));
@@ -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));
@@ -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;
    }
+10 −9
Original line number Diff line number Diff line
@@ -119,6 +119,7 @@ public class VibrationSettingsTest {
            USAGE_PHYSICAL_EMULATION,
            USAGE_RINGTONE,
            USAGE_TOUCH,
            USAGE_IME_FEEDBACK
    };

    @Rule public MockitoRule mMockitoRule = MockitoJUnit.rule();
@@ -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);
@@ -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);
@@ -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());
@@ -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);
@@ -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);
@@ -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);