diff options
| author | 2024-10-29 18:04:10 +0000 | |
|---|---|---|
| committer | 2024-11-19 18:45:43 +0000 | |
| commit | 6e936b8506943963fae19d2b03a2bd0e999a056d (patch) | |
| tree | e9c7ad75947cffca7fc41196d9a3efcfb8166990 | |
| parent | 0c2402a360cdb2e26c5d126a8504b439d4e6347d (diff) | |
Add Settings for three finger tap customization
Test: SettingsValidatorsTest
Flag: com.android.hardware.input.touchpad_three_finger_tap_shortcut
Bug: 376249366
Change-Id: I9a2dc86b744b5d82d340652abaac4700b2690b7c
7 files changed, 24 insertions, 7 deletions
| diff --git a/core/java/android/hardware/input/InputSettings.java b/core/java/android/hardware/input/InputSettings.java index 5a713cf28535..114459e5e819 100644 --- a/core/java/android/hardware/input/InputSettings.java +++ b/core/java/android/hardware/input/InputSettings.java @@ -522,8 +522,11 @@ public class InputSettings {       * @hide       */      public static boolean useTouchpadThreeFingerTapShortcut(@NonNull Context context) { -        // TODO(b/365063048): determine whether to enable the shortcut based on the settings. -        return isTouchpadThreeFingerTapShortcutFeatureFlagEnabled(); +        int customizedShortcut = Settings.System.getIntForUser(context.getContentResolver(), +                Settings.System.TOUCHPAD_THREE_FINGER_TAP_CUSTOMIZATION, +                KeyGestureEvent.KEY_GESTURE_TYPE_UNSPECIFIED, UserHandle.USER_CURRENT); +        return customizedShortcut != KeyGestureEvent.KEY_GESTURE_TYPE_UNSPECIFIED +                && isTouchpadThreeFingerTapShortcutFeatureFlagEnabled();      }      /** diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 19b0c6fcdd77..23f76299d8c4 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -6271,6 +6271,14 @@ public final class Settings {          public static final String TOUCHPAD_TAP_DRAGGING = "touchpad_tap_dragging";          /** +         * Whether to enable three finger tap customization on touchpads. +         * +         * @hide +         */ +        public static final String TOUCHPAD_THREE_FINGER_TAP_CUSTOMIZATION = +                "touchpad_three_finger_tap_customization"; + +        /**           * Whether to enable a right-click zone on touchpads.           *           * When set to 1, pressing to click in a section on the right-hand side of the touchpad will diff --git a/core/proto/android/providers/settings/system.proto b/core/proto/android/providers/settings/system.proto index 9779dc0e00b8..16d25657f08e 100644 --- a/core/proto/android/providers/settings/system.proto +++ b/core/proto/android/providers/settings/system.proto @@ -217,6 +217,7 @@ message SystemSettingsProto {          optional SettingProto right_click_zone = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];          optional SettingProto tap_to_click = 4 [ (android.privacy).dest = DEST_AUTOMATIC ];          optional SettingProto tap_dragging = 5 [ (android.privacy).dest = DEST_AUTOMATIC ]; +        optional SettingProto three_finger_tap_customization = 6 [ (android.privacy).dest = DEST_AUTOMATIC ];      }      optional Touchpad touchpad = 36; diff --git a/packages/SettingsProvider/src/android/provider/settings/backup/SystemSettings.java b/packages/SettingsProvider/src/android/provider/settings/backup/SystemSettings.java index 3530e0f5f9de..8e7180c4dc8d 100644 --- a/packages/SettingsProvider/src/android/provider/settings/backup/SystemSettings.java +++ b/packages/SettingsProvider/src/android/provider/settings/backup/SystemSettings.java @@ -78,6 +78,7 @@ public class SystemSettings {                  Settings.System.SHOW_WEB_SUGGESTIONS,                  Settings.System.SIP_CALL_OPTIONS,                  Settings.System.SIP_RECEIVE_CALLS, +                Settings.System.TOUCHPAD_THREE_FINGER_TAP_CUSTOMIZATION,                  Settings.System.POINTER_SPEED,                  Settings.System.POINTER_FILL_STYLE,                  Settings.System.POINTER_STROKE_STYLE, diff --git a/packages/SettingsProvider/src/android/provider/settings/validators/SystemSettingsValidators.java b/packages/SettingsProvider/src/android/provider/settings/validators/SystemSettingsValidators.java index 509b88b257fe..cfc7743f0a8d 100644 --- a/packages/SettingsProvider/src/android/provider/settings/validators/SystemSettingsValidators.java +++ b/packages/SettingsProvider/src/android/provider/settings/validators/SystemSettingsValidators.java @@ -213,6 +213,8 @@ public class SystemSettingsValidators {          VALIDATORS.put(System.SIP_ADDRESS_ONLY, BOOLEAN_VALIDATOR);          VALIDATORS.put(System.SIP_ASK_ME_EACH_TIME, BOOLEAN_VALIDATOR);          VALIDATORS.put(System.POINTER_SPEED, new InclusiveFloatRangeValidator(-7, 7)); +        VALIDATORS.put(System.TOUCHPAD_THREE_FINGER_TAP_CUSTOMIZATION, +                NON_NEGATIVE_INTEGER_VALIDATOR);          VALIDATORS.put(System.POINTER_FILL_STYLE,                  new InclusiveIntegerRangeValidator(POINTER_ICON_VECTOR_STYLE_FILL_BEGIN,                          POINTER_ICON_VECTOR_STYLE_FILL_END)); diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java index fb0aaf8e5ae1..600c36e5dfc9 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java @@ -3037,6 +3037,9 @@ class SettingsProtoDumpUtil {          dumpSetting(s, p,                  Settings.System.TOUCHPAD_TAP_DRAGGING,                  SystemSettingsProto.Touchpad.TAP_DRAGGING); +        dumpSetting(s, p, +                Settings.System.TOUCHPAD_THREE_FINGER_TAP_CUSTOMIZATION, +                SystemSettingsProto.Touchpad.THREE_FINGER_TAP_CUSTOMIZATION);          p.end(touchpadToken);          dumpSetting(s, p, diff --git a/services/core/java/com/android/server/input/InputSettingsObserver.java b/services/core/java/com/android/server/input/InputSettingsObserver.java index 420db9041dc2..3b2305cec9db 100644 --- a/services/core/java/com/android/server/input/InputSettingsObserver.java +++ b/services/core/java/com/android/server/input/InputSettingsObserver.java @@ -117,7 +117,10 @@ class InputSettingsObserver extends ContentObserver {                  Map.entry(Settings.System.getUriFor(Settings.System.POINTER_STROKE_STYLE),                          (reason) -> updatePointerStrokeStyleFromSettings()),                  Map.entry(Settings.System.getUriFor(Settings.System.POINTER_SCALE), -                        (reason) -> updatePointerScaleFromSettings())); +                        (reason) -> updatePointerScaleFromSettings()), +                Map.entry(Settings.System.getUriFor( +                                Settings.System.TOUCHPAD_THREE_FINGER_TAP_CUSTOMIZATION), +                        (reason) -> updateTouchpadThreeFingerTapShortcutEnabled()));      }      /** @@ -143,10 +146,6 @@ class InputSettingsObserver extends ContentObserver {              observer.accept("just booted");          } -        // TODO(b/365063048): add an entry to mObservers that calls this instead, once we have a -        //   setting that can be observed. -        updateTouchpadThreeFingerTapShortcutEnabled(); -          configureUserActivityPokeInterval();      } |