WebKit Bugzilla
Attachment 370225 Details for
Bug 197882
: [Pointer Events] Listening to a "pointerover", "pointerenter", "pointerout" or "pointerleave" event alone does not fire the event on iOS
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-197882-20190519201758.patch (text/plain), 14.33 KB, created by
Antoine Quint
on 2019-05-19 12:18:01 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Antoine Quint
Created:
2019-05-19 12:18:01 PDT
Size:
14.33 KB
patch
obsolete
>Subversion Revision: 245483 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index c27503dce93752d06f53324e2b108fc5c0348293..7640d5e015fa81aacf92101bb9cb96338b09e6a3 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,21 @@ >+2019-05-19 Antoine Quint <graouts@apple.com> >+ >+ [Pointer Events] Listening to a "pointerover", "pointerenter", "pointerout" or "pointerleave" event alone does not fire the event on iOS >+ https://bugs.webkit.org/show_bug.cgi?id=197882 >+ <rdar://problem/50769116> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Tests: pointerevents/ios/pointerenter-alone.html >+ pointerevents/ios/pointerleave-alone.html >+ pointerevents/ios/pointerout-alone.html >+ pointerevents/ios/pointerover-alone.html >+ >+ * dom/EventNames.h: >+ (WebCore::EventNames::isTouchRelatedEventType const): >+ (WebCore::EventNames::touchRelatedEventNames const): >+ (WebCore::EventNames::extendedTouchRelatedEventNames const): >+ > 2019-05-17 Antoine Quint <graouts@apple.com> > > Add a website policy to disable the legacy -webkit-overflow-scrolling:touch behavior >diff --git a/Source/WebKit/ChangeLog b/Source/WebKit/ChangeLog >index 3fd28e93c8bf85ab7fd29383a8c002f2168ed70a..346c30be815c621f6d2b5794951ea4ce91ae6918 100644 >--- a/Source/WebKit/ChangeLog >+++ b/Source/WebKit/ChangeLog >@@ -1,3 +1,14 @@ >+2019-05-19 Antoine Quint <graouts@apple.com> >+ >+ [Pointer Events] Listening to a "pointerover", "pointerenter", "pointerout" or "pointerleave" event alone does not fire the event on iOS >+ https://bugs.webkit.org/show_bug.cgi?id=197882 >+ <rdar://problem/50769116> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * UIProcess/WebPageProxy.cpp: >+ (WebKit::WebPageProxy::updateTouchEventTracking): >+ > 2019-05-17 Antoine Quint <graouts@apple.com> > > Add a website policy to disable the legacy -webkit-overflow-scrolling:touch behavior >diff --git a/Source/WebCore/dom/EventNames.h b/Source/WebCore/dom/EventNames.h >index 882317a1c443e62266507e6163801ffc4742e960..eff82d0a205f3503efcf36197ad27319ca0185ab 100644 >--- a/Source/WebCore/dom/EventNames.h >+++ b/Source/WebCore/dom/EventNames.h >@@ -363,8 +363,8 @@ public: > bool isGamepadEventType(const AtomicString& eventType) const; > #endif > >- std::array<std::reference_wrapper<const AtomicString>, 9> touchRelatedEventNames() const; >- std::array<std::reference_wrapper<const AtomicString>, 12> extendedTouchRelatedEventNames() const; >+ std::array<std::reference_wrapper<const AtomicString>, 13> touchRelatedEventNames() const; >+ std::array<std::reference_wrapper<const AtomicString>, 16> extendedTouchRelatedEventNames() const; > std::array<std::reference_wrapper<const AtomicString>, 3> gestureEventNames() const; > > private: >@@ -406,9 +406,13 @@ inline bool EventNames::isTouchRelatedEventType(const Document& document, const > || eventType == touchendEvent > || eventType == touchcancelEvent > || eventType == touchforcechangeEvent >+ || eventType == pointeroverEvent >+ || eventType == pointerenterEvent > || eventType == pointerdownEvent > || eventType == pointermoveEvent > || eventType == pointerupEvent >+ || eventType == pointeroutEvent >+ || eventType == pointerleaveEvent > || eventType == pointercancelEvent; > } > >@@ -418,14 +422,14 @@ inline bool EventNames::isWheelEventType(const AtomicString& eventType) const > || eventType == mousewheelEvent; > } > >-inline std::array<std::reference_wrapper<const AtomicString>, 9> EventNames::touchRelatedEventNames() const >+inline std::array<std::reference_wrapper<const AtomicString>, 13> EventNames::touchRelatedEventNames() const > { >- return { { touchstartEvent, touchmoveEvent, touchendEvent, touchcancelEvent, touchforcechangeEvent, pointerdownEvent, pointermoveEvent, pointerupEvent, pointercancelEvent } }; >+ return { { touchstartEvent, touchmoveEvent, touchendEvent, touchcancelEvent, touchforcechangeEvent, pointeroverEvent, pointerenterEvent, pointerdownEvent, pointermoveEvent, pointerupEvent, pointeroutEvent, pointerleaveEvent, pointercancelEvent } }; > } > >-inline std::array<std::reference_wrapper<const AtomicString>, 12> EventNames::extendedTouchRelatedEventNames() const >+inline std::array<std::reference_wrapper<const AtomicString>, 16> EventNames::extendedTouchRelatedEventNames() const > { >- return { { touchstartEvent, touchmoveEvent, touchendEvent, touchcancelEvent, touchforcechangeEvent, pointerdownEvent, pointermoveEvent, pointerupEvent, pointercancelEvent, mousedownEvent, mousemoveEvent, mouseupEvent } }; >+ return { { touchstartEvent, touchmoveEvent, touchendEvent, touchcancelEvent, touchforcechangeEvent, pointeroverEvent, pointerenterEvent, pointerdownEvent, pointermoveEvent, pointerupEvent, pointeroutEvent, pointerleaveEvent, pointercancelEvent, mousedownEvent, mousemoveEvent, mouseupEvent } }; > } > > inline std::array<std::reference_wrapper<const AtomicString>, 3> EventNames::gestureEventNames() const >diff --git a/Source/WebKit/UIProcess/WebPageProxy.cpp b/Source/WebKit/UIProcess/WebPageProxy.cpp >index 9f96f9a152f16dcaf41846688fbbce4d792862ce..010c4863115856d36d86ec6d340955072dcd8c3d 100644 >--- a/Source/WebKit/UIProcess/WebPageProxy.cpp >+++ b/Source/WebKit/UIProcess/WebPageProxy.cpp >@@ -2538,9 +2538,13 @@ void WebPageProxy::updateTouchEventTracking(const WebTouchEvent& touchStartEvent > updateTrackingType(m_touchAndPointerEventTracking.touchStartTracking, names.touchstartEvent); > updateTrackingType(m_touchAndPointerEventTracking.touchMoveTracking, names.touchmoveEvent); > updateTrackingType(m_touchAndPointerEventTracking.touchEndTracking, names.touchendEvent); >+ updateTrackingType(m_touchAndPointerEventTracking.touchStartTracking, names.pointeroverEvent); >+ updateTrackingType(m_touchAndPointerEventTracking.touchStartTracking, names.pointerenterEvent); > updateTrackingType(m_touchAndPointerEventTracking.touchStartTracking, names.pointerdownEvent); > updateTrackingType(m_touchAndPointerEventTracking.touchMoveTracking, names.pointermoveEvent); > updateTrackingType(m_touchAndPointerEventTracking.touchEndTracking, names.pointerupEvent); >+ updateTrackingType(m_touchAndPointerEventTracking.touchEndTracking, names.pointeroutEvent); >+ updateTrackingType(m_touchAndPointerEventTracking.touchEndTracking, names.pointerleaveEvent); > updateTrackingType(m_touchAndPointerEventTracking.touchStartTracking, names.mousedownEvent); > updateTrackingType(m_touchAndPointerEventTracking.touchMoveTracking, names.mousemoveEvent); > updateTrackingType(m_touchAndPointerEventTracking.touchEndTracking, names.mouseupEvent); >diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index c1d7ed1c165fcdca04c3114b6f0b7166b4eb3e4f..9d137d6dc56a4fd60ddb662414080245de024804 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,23 @@ >+2019-05-19 Antoine Quint <graouts@apple.com> >+ >+ [Pointer Events] Listening to a "pointerover", "pointerenter", "pointerout" or "pointerleave" event alone does not fire the event on iOS >+ https://bugs.webkit.org/show_bug.cgi?id=197882 >+ <rdar://problem/50769116> >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Add new tests that check that adding a "pointerover", "pointerenter", "pointerout" or "pointerleave" event listener alone dispatches the >+ event as expected. >+ >+ * pointerevents/ios/pointerenter-alone-expected.txt: Added. >+ * pointerevents/ios/pointerenter-alone.html: Added. >+ * pointerevents/ios/pointerleave-alone-expected.txt: Added. >+ * pointerevents/ios/pointerleave-alone.html: Added. >+ * pointerevents/ios/pointerout-alone-expected.txt: Added. >+ * pointerevents/ios/pointerout-alone.html: Added. >+ * pointerevents/ios/pointerover-alone-expected.txt: Added. >+ * pointerevents/ios/pointerover-alone.html: Added. >+ > 2019-05-17 Antoine Quint <graouts@apple.com> > > Add a website policy to disable the legacy -webkit-overflow-scrolling:touch behavior >diff --git a/LayoutTests/pointerevents/ios/pointerenter-alone-expected.txt b/LayoutTests/pointerevents/ios/pointerenter-alone-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..7895c473648c05ccdf6a217b06f261c52bf4ea4a >--- /dev/null >+++ b/LayoutTests/pointerevents/ios/pointerenter-alone-expected.txt >@@ -0,0 +1,3 @@ >+ >+PASS Listening to a pointerenter event alone dispatches the event. >+ >diff --git a/LayoutTests/pointerevents/ios/pointerenter-alone.html b/LayoutTests/pointerevents/ios/pointerenter-alone.html >new file mode 100644 >index 0000000000000000000000000000000000000000..630067583fc1072be154690d429de5f4da3f28a1 >--- /dev/null >+++ b/LayoutTests/pointerevents/ios/pointerenter-alone.html >@@ -0,0 +1,33 @@ >+<!DOCTYPE html> >+<html> >+<head> >+<meta charset=utf-8> >+<meta name="viewport" content="width=device-width, initial-scale=1"> >+</head> >+<body> >+<script src="../../resources/testharness.js"></script> >+<script src="../../resources/testharnessreport.js"></script> >+<script src="../utils.js"></script> >+<script> >+ >+'use strict'; >+ >+target_test((target, test) => { >+ target.style.touchAction = "none"; >+ const eventTracker = new EventTracker(target, ["pointerenter"]); >+ >+ const one = ui.finger(); >+ ui.sequence([ >+ one.begin({ x: 10, y: 10 }), >+ one.end(), >+ ]).then(() => { >+ eventTracker.assertMatchesEvents([ >+ { id: 1, type: "pointerenter", x: 10, y: 10 } >+ ]); >+ test.done(); >+ }); >+}, "Listening to a pointerenter event alone dispatches the event."); >+ >+</script> >+</body> >+</html> >\ No newline at end of file >diff --git a/LayoutTests/pointerevents/ios/pointerleave-alone-expected.txt b/LayoutTests/pointerevents/ios/pointerleave-alone-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..f79be1f89db694ba813f5d32d765123ce66989e2 >--- /dev/null >+++ b/LayoutTests/pointerevents/ios/pointerleave-alone-expected.txt >@@ -0,0 +1,3 @@ >+ >+PASS Listening to a pointerleave event alone dispatches the event. >+ >diff --git a/LayoutTests/pointerevents/ios/pointerleave-alone.html b/LayoutTests/pointerevents/ios/pointerleave-alone.html >new file mode 100644 >index 0000000000000000000000000000000000000000..6c3221c429abfe8e1fb0418cd7e7bef95cbffc36 >--- /dev/null >+++ b/LayoutTests/pointerevents/ios/pointerleave-alone.html >@@ -0,0 +1,33 @@ >+<!DOCTYPE html> >+<html> >+<head> >+<meta charset=utf-8> >+<meta name="viewport" content="width=device-width, initial-scale=1"> >+</head> >+<body> >+<script src="../../resources/testharness.js"></script> >+<script src="../../resources/testharnessreport.js"></script> >+<script src="../utils.js"></script> >+<script> >+ >+'use strict'; >+ >+target_test((target, test) => { >+ target.style.touchAction = "none"; >+ const eventTracker = new EventTracker(target, ["pointerleave"]); >+ >+ const one = ui.finger(); >+ ui.sequence([ >+ one.begin({ x: 10, y: 10 }), >+ one.end(), >+ ]).then(() => { >+ eventTracker.assertMatchesEvents([ >+ { id: 1, type: "pointerleave", x: 10, y: 10 } >+ ]); >+ test.done(); >+ }); >+}, "Listening to a pointerleave event alone dispatches the event."); >+ >+</script> >+</body> >+</html> >\ No newline at end of file >diff --git a/LayoutTests/pointerevents/ios/pointerout-alone-expected.txt b/LayoutTests/pointerevents/ios/pointerout-alone-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..da150f45a1913dbbe2a3b9d9119dc987d46af5aa >--- /dev/null >+++ b/LayoutTests/pointerevents/ios/pointerout-alone-expected.txt >@@ -0,0 +1,3 @@ >+ >+PASS Listening to a pointerout event alone dispatches the event. >+ >diff --git a/LayoutTests/pointerevents/ios/pointerout-alone.html b/LayoutTests/pointerevents/ios/pointerout-alone.html >new file mode 100644 >index 0000000000000000000000000000000000000000..af0ed06e6c565d29ecc71229600b034e98325ee2 >--- /dev/null >+++ b/LayoutTests/pointerevents/ios/pointerout-alone.html >@@ -0,0 +1,33 @@ >+<!DOCTYPE html> >+<html> >+<head> >+<meta charset=utf-8> >+<meta name="viewport" content="width=device-width, initial-scale=1"> >+</head> >+<body> >+<script src="../../resources/testharness.js"></script> >+<script src="../../resources/testharnessreport.js"></script> >+<script src="../utils.js"></script> >+<script> >+ >+'use strict'; >+ >+target_test((target, test) => { >+ target.style.touchAction = "none"; >+ const eventTracker = new EventTracker(target, ["pointerout"]); >+ >+ const one = ui.finger(); >+ ui.sequence([ >+ one.begin({ x: 10, y: 10 }), >+ one.end(), >+ ]).then(() => { >+ eventTracker.assertMatchesEvents([ >+ { id: 1, type: "pointerout", x: 10, y: 10 } >+ ]); >+ test.done(); >+ }); >+}, "Listening to a pointerout event alone dispatches the event."); >+ >+</script> >+</body> >+</html> >\ No newline at end of file >diff --git a/LayoutTests/pointerevents/ios/pointerover-alone-expected.txt b/LayoutTests/pointerevents/ios/pointerover-alone-expected.txt >new file mode 100644 >index 0000000000000000000000000000000000000000..cdea38da2b9a099f6c7461e5013e5aeda07303f7 >--- /dev/null >+++ b/LayoutTests/pointerevents/ios/pointerover-alone-expected.txt >@@ -0,0 +1,3 @@ >+ >+PASS Listening to a pointerover event alone dispatches the event. >+ >diff --git a/LayoutTests/pointerevents/ios/pointerover-alone.html b/LayoutTests/pointerevents/ios/pointerover-alone.html >new file mode 100644 >index 0000000000000000000000000000000000000000..acc2c7a41e6993b6af80886f5f4b5439929b9df1 >--- /dev/null >+++ b/LayoutTests/pointerevents/ios/pointerover-alone.html >@@ -0,0 +1,33 @@ >+<!DOCTYPE html> >+<html> >+<head> >+<meta charset=utf-8> >+<meta name="viewport" content="width=device-width, initial-scale=1"> >+</head> >+<body> >+<script src="../../resources/testharness.js"></script> >+<script src="../../resources/testharnessreport.js"></script> >+<script src="../utils.js"></script> >+<script> >+ >+'use strict'; >+ >+target_test((target, test) => { >+ target.style.touchAction = "none"; >+ const eventTracker = new EventTracker(target, ["pointerover"]); >+ >+ const one = ui.finger(); >+ ui.sequence([ >+ one.begin({ x: 10, y: 10 }), >+ one.end(), >+ ]).then(() => { >+ eventTracker.assertMatchesEvents([ >+ { id: 1, type: "pointerover", x: 10, y: 10 } >+ ]); >+ test.done(); >+ }); >+}, "Listening to a pointerover event alone dispatches the event."); >+ >+</script> >+</body> >+</html> >\ No newline at end of file
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
dino
:
review+
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 197882
: 370225