summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Pat Manning <patmanning@google.com> 2024-10-29 18:04:10 +0000
committer Pat Manning <patmanning@google.com> 2024-11-19 18:45:43 +0000
commit6e936b8506943963fae19d2b03a2bd0e999a056d (patch)
treee9c7ad75947cffca7fc41196d9a3efcfb8166990
parent0c2402a360cdb2e26c5d126a8504b439d4e6347d (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
-rw-r--r--core/java/android/hardware/input/InputSettings.java7
-rw-r--r--core/java/android/provider/Settings.java8
-rw-r--r--core/proto/android/providers/settings/system.proto1
-rw-r--r--packages/SettingsProvider/src/android/provider/settings/backup/SystemSettings.java1
-rw-r--r--packages/SettingsProvider/src/android/provider/settings/validators/SystemSettingsValidators.java2
-rw-r--r--packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java3
-rw-r--r--services/core/java/com/android/server/input/InputSettingsObserver.java9
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();
}