touchpad: add touchpad system gesture setting

This new setting is implemented as a simple boolean check before
handling three- and four-finger swipe gestures. The only gotcha is to
make sure we end any ongoing swipe when they're disabled, so we don't
produce an inconsistent event stream.

Test: disable the setting, check three- and four-finger swipes on the
      touchpad stop working; re-enable, check they work again
Test: $ adb shell 'stop && setprop log.tag.InputDispatcherVerifyEvents
                   DEBUG && start'
      then toggle the setting while performing gestures, check there are
      no crashes
Test: atest inputflinger_tests
Flag: com.android.hardware.input.touchpad_system_gesture_disable
Bug: 353947750
Change-Id: I4333e3d3bb6f89d29332c701937ea4c870b1cbc5
diff --git a/services/inputflinger/reader/mapper/TouchpadInputMapper.cpp b/services/inputflinger/reader/mapper/TouchpadInputMapper.cpp
index ca8266b..0c094e6 100644
--- a/services/inputflinger/reader/mapper/TouchpadInputMapper.cpp
+++ b/services/inputflinger/reader/mapper/TouchpadInputMapper.cpp
@@ -351,6 +351,7 @@
 
         bumpGeneration();
     }
+    std::list<NotifyArgs> out;
     if (!changes.any() || changes.test(InputReaderConfiguration::Change::TOUCHPAD_SETTINGS)) {
         mPropertyProvider.getProperty("Use Custom Touchpad Pointer Accel Curve")
                 .setBoolValues({true});
@@ -375,11 +376,11 @@
         mPropertyProvider.getProperty("Button Right Click Zone Enable")
                 .setBoolValues({config.touchpadRightClickZoneEnabled});
         mTouchpadHardwareStateNotificationsEnabled = config.shouldNotifyTouchpadHardwareState;
-
         mGestureConverter.setThreeFingerTapShortcutEnabled(
                 config.touchpadThreeFingerTapShortcutEnabled);
+        out += mGestureConverter.setEnableSystemGestures(when,
+                                                         config.touchpadSystemGesturesEnabled);
     }
-    std::list<NotifyArgs> out;
     if ((!changes.any() && config.pointerCaptureRequest.isEnable()) ||
         changes.test(InputReaderConfiguration::Change::POINTER_CAPTURE)) {
         mPointerCaptured = config.pointerCaptureRequest.isEnable();