[webkit-changes] [WebKit/WebKit] fa2caa: movementX and movementY are missing from pointerMo...

Abrar Rahman Protyasha noreply at github.com
Mon May 8 15:10:48 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: fa2caa624d631c7085d6cb55a6b83ebc1c2ffe49
      https://github.com/WebKit/WebKit/commit/fa2caa624d631c7085d6cb55a6b83ebc1c2ffe49
  Author: Abrar Rahman Protyasha <a_protyasha at apple.com>
  Date:   2023-05-08 (Mon, 08 May 2023)

  Changed paths:
    A LayoutTests/fast/events/pointer/ios/drag-populates-pointer-events-with-movementxy-fields-expected.txt
    A LayoutTests/fast/events/pointer/ios/drag-populates-pointer-events-with-movementxy-fields.html
    M LayoutTests/platform/gtk/pointer-lock/mouse-event-delivery-expected.txt
    M LayoutTests/platform/wpe/imported/w3c/web-platform-tests/pointerevents/pointerlock/pointerevent_movementxy_with_pointerlock-expected.txt
    M LayoutTests/platform/wpe/imported/w3c/web-platform-tests/pointerlock/movementX_Y_basic-expected.txt
    M Source/WebCore/dom/MouseEvent.idl
    M Source/WebCore/dom/MouseEventInit.idl
    M Source/WebCore/dom/PointerEvent.h
    M Source/WebCore/dom/ios/PointerEventIOS.cpp
    M Source/WebCore/page/EventHandler.cpp
    M Source/WebCore/page/EventHandler.h
    M Source/WebCore/page/PointerCaptureController.cpp
    M Source/WebCore/page/PointerCaptureController.h
    M Source/WebCore/platform/PointerID.h
    M Source/WebKit/UIProcess/WebPageProxy.h

  Log Message:
  -----------
  movementX and movementY are missing from pointerMove events (255207)
rdar://108112600
https://bugs.webkit.org/show_bug.cgi?id=255207

Reviewed by Wenson Hsieh.

This commit performs a few things:

- Expose `movementX`/`movementY` *generally* in MouseEvent structs
  rather than locking it behind POINTER_LOCK support. This is because
  even without implementing pointer lock on iOS, we can (a) easily
  compute these values and (b) the attributes are generally useful.

- Introduce a bunch of plumbing to pass touch event deltas from our
  EventHandler to the PointerEvent creation. The bookkeeping required to
  compute these touch deltas is placed in WebKitAdditions.

- Tangentially, changes the `PointerID` type to represent uint32_t
  instead of its signed sibling. I've done this because we're passing in
  unsigned identifiers when creating PointerEvents, and I've logged a
  few cases of ID *overflow*.

- Add a layout test to verify correctness of the movementX/Y fields of
  pointer events generated by touch gestures.

- Corrects some test expectations now that we expose
  `movementX`/`movementY` regardless of pointer lock support.

* LayoutTests/fast/events/pointer/ios/drag-populates-pointer-events-with-movementxy-fields-expected.txt: Added.
* LayoutTests/fast/events/pointer/ios/drag-populates-pointer-events-with-movementxy-fields.html: Added.
* LayoutTests/platform/gtk/pointer-lock/mouse-event-delivery-expected.txt:
* LayoutTests/platform/wpe/imported/w3c/web-platform-tests/pointerevents/pointerlock/pointerevent_movementxy_with_pointerlock-expected.txt:
* LayoutTests/platform/wpe/imported/w3c/web-platform-tests/pointerlock/movementX_Y_basic-expected.txt:
* Source/WebCore/dom/MouseEvent.idl:
* Source/WebCore/dom/MouseEventInit.idl:
* Source/WebCore/dom/PointerEvent.h:
* Source/WebCore/dom/ios/PointerEventIOS.cpp:
(WebCore::PointerEvent::create):
(WebCore::PointerEvent::PointerEvent):
* Source/WebCore/page/EventHandler.cpp:
(WebCore::EventHandler::clear):
(WebCore::EventHandler::handleTouchEvent):
* Source/WebCore/page/EventHandler.h:
* Source/WebCore/page/PointerCaptureController.cpp:
(WebCore::PointerCaptureController::dispatchEventForTouchAtIndex):
* Source/WebCore/page/PointerCaptureController.h:
* Source/WebCore/platform/PointerID.h:
* Source/WebKit/UIProcess/WebPageProxy.h:

Canonical link: https://commits.webkit.org/263829@main




More information about the webkit-changes mailing list