Changeset 244598 in webkit
- Timestamp:
- Apr 24, 2019 11:00:11 AM (5 years ago)
- Location:
- trunk
- Files:
-
- 3 added
- 1 deleted
- 4 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r244595 r244598 1 2019-04-24 Antoine Quint <graouts@apple.com> 2 3 [iOS] Calling preventDefault() when handling a pointerdown event should not prevent panning, zooming or click event dispatch 4 https://bugs.webkit.org/show_bug.cgi?id=195839 5 <rdar://problem/48946154> 6 7 Reviewed by Brent Fulgham. 8 9 Modify the existing test to check that we *have* scrolled after performing a swipe gesture and calling 10 preventDefault() while handling the pointerdown handling. We also add a new test that checks that the 11 click event is indeed dispatched when tapping on an element and calling preventDefault() while handling 12 the pointerdown event. 13 14 * pointerevents/ios/pointer-events-prevent-default-allows-click-event-expected.txt: Added. 15 * pointerevents/ios/pointer-events-prevent-default-allows-click-event.html: Added. 16 * pointerevents/ios/pointer-events-prevent-default-allows-scrolling-expected.txt: Added. 17 * pointerevents/ios/pointer-events-prevent-default-allows-scrolling.html: Renamed from LayoutTests/pointerevents/ios/pointer-events-prevent-default.html. 18 * pointerevents/ios/pointer-events-prevent-default-expected.txt: Removed. 19 1 20 2019-04-24 Frederic Wang <fwang@igalia.com> 2 21 -
trunk/LayoutTests/pointerevents/ios/pointer-events-prevent-default-allows-scrolling.html
r244597 r244598 21 21 target.addEventListener("pointerdown", event => event.preventDefault()); 22 22 ui.swipe({ x: 100, y: 100 }, { x: 100, y: 50 }).then(() => { 23 assert_ equals(target.scrollTop, initialScrollTop);23 assert_not_equals(target.scrollTop, initialScrollTop); 24 24 test.done(); 25 25 }); 26 }, "Scrolling of content can be disabled by calling preventDefault() on a pointer event.");26 }, "Scrolling of content cannot be disabled by calling preventDefault() on a pointer event."); 27 27 28 28 </script> -
trunk/Source/WebCore/ChangeLog
r244595 r244598 1 2019-04-24 Antoine Quint <graouts@apple.com> 2 3 [iOS] Calling preventDefault() when handling a pointerdown event should not prevent panning, zooming or click event dispatch 4 https://bugs.webkit.org/show_bug.cgi?id=195839 5 <rdar://problem/48946154> 6 7 Reviewed by Brent Fulgham. 8 9 Tests: pointerevents/ios/pointer-events-prevent-default-allows-click-event.html 10 pointerevents/ios/pointer-events-prevent-default-allows-scrolling.html 11 12 The Pointer Events specification defines that the default action of any and all pointer events MUST NOT 13 be a manipulation of the viewport (e.g. panning or zooming). In practice, this means that calling 14 preventDefault() while handling a Pointer Event has no effect on the inner workings of the user agent, 15 so we change the method signature of PointerCaptureController::dispatchEventForTouchAtIndex() to return 16 void since we don't need to know whether preventDefault() was called. 17 18 https://www.w3.org/TR/pointerevents/#declaring-candidate-regions-for-default-touch-behaviors 19 20 * page/PointerCaptureController.cpp: 21 (WebCore::PointerCaptureController::dispatchEventForTouchAtIndex): 22 * page/PointerCaptureController.h: 23 1 24 2019-04-24 Frederic Wang <fwang@igalia.com> 2 25 -
trunk/Source/WebCore/page/PointerCaptureController.cpp
r244423 r244598 159 159 160 160 #if ENABLE(TOUCH_EVENTS) && PLATFORM(IOS_FAMILY) 161 std::pair<bool, bool> PointerCaptureController::dispatchEventForTouchAtIndex(EventTarget& target, const PlatformTouchEvent& platformTouchEvent, unsigned index, bool isPrimary, WindowProxy& view) 162 { 163 bool defaultPrevented = false; 164 bool defaultHandled = false; 165 161 void PointerCaptureController::dispatchEventForTouchAtIndex(EventTarget& target, const PlatformTouchEvent& platformTouchEvent, unsigned index, bool isPrimary, WindowProxy& view) 162 { 166 163 auto dispatchEvent = [&](const String& type) { 167 auto event = PointerEvent::create(type, platformTouchEvent, index, isPrimary, view); 168 target.dispatchEvent(event); 169 defaultPrevented |= event->defaultPrevented(); 170 defaultHandled |= event->defaultHandled(); 164 target.dispatchEvent(PointerEvent::create(type, platformTouchEvent, index, isPrimary, view)); 171 165 }; 172 166 … … 183 177 pointerEventWillBeDispatched(pointerEvent, &target); 184 178 target.dispatchEvent(pointerEvent); 185 defaultPrevented |= pointerEvent->defaultPrevented();186 defaultHandled |= pointerEvent->defaultHandled();187 179 pointerEventWasDispatched(pointerEvent); 188 180 … … 194 186 dispatchEvent(eventNames().pointerleaveEvent); 195 187 } 196 197 return { defaultPrevented, defaultHandled };198 188 } 199 189 #endif -
trunk/Source/WebCore/page/PointerCaptureController.h
r244423 r244598 50 50 51 51 #if ENABLE(TOUCH_EVENTS) && PLATFORM(IOS_FAMILY) 52 std::pair<bool, bool>dispatchEventForTouchAtIndex(EventTarget&, const PlatformTouchEvent&, unsigned, bool isPrimary, WindowProxy&);52 void dispatchEventForTouchAtIndex(EventTarget&, const PlatformTouchEvent&, unsigned, bool isPrimary, WindowProxy&); 53 53 #endif 54 54
Note: See TracChangeset
for help on using the changeset viewer.