Diff
Modified: trunk/LayoutTests/ChangeLog (202530 => 202531)
--- trunk/LayoutTests/ChangeLog 2016-06-28 01:00:25 UTC (rev 202530)
+++ trunk/LayoutTests/ChangeLog 2016-06-28 01:13:53 UTC (rev 202531)
@@ -1,3 +1,27 @@
+2016-06-27 Benjamin Poulain <[email protected]>
+
+ Adopt the iOS TouchEventHandler API for cases that must have synchronous dispatch
+ https://bugs.webkit.org/show_bug.cgi?id=159179
+ rdar://problem/27006387
+
+ Reviewed by Simon Fraser.
+
+ Several of those tests expose existing bugs with overflow scrolling.
+ They are not using PASS/FAIL at the moment, just dump the called listeners.
+
+ * fast/events/touch/ios/block-without-overflow-scroll-and-passive-observer-on-block-scrolling-state-expected.txt: Added.
+ * fast/events/touch/ios/block-without-overflow-scroll-and-passive-observer-on-block-scrolling-state.html: Added.
+ * fast/events/touch/ios/block-without-overflow-scroll-and-passive-observer-on-document-scrolling-state-expected.txt: Added.
+ * fast/events/touch/ios/block-without-overflow-scroll-and-passive-observer-on-document-scrolling-state.html: Added.
+ * fast/events/touch/ios/block-without-overflow-scroll-scrolling-state-expected.txt: Added.
+ * fast/events/touch/ios/block-without-overflow-scroll-scrolling-state.html: Added.
+ * fast/events/touch/ios/drag-block-without-overflow-scroll-and-passive-observer-on-block-expected.txt: Added.
+ * fast/events/touch/ios/drag-block-without-overflow-scroll-and-passive-observer-on-block.html: Added.
+ * fast/events/touch/ios/drag-block-without-overflow-scroll-and-passive-observer-on-document-expected.txt: Added.
+ * fast/events/touch/ios/drag-block-without-overflow-scroll-and-passive-observer-on-document.html: Added.
+ * fast/events/touch/ios/drag-block-without-overflow-scroll-expected.txt: Added.
+ * fast/events/touch/ios/drag-block-without-overflow-scroll.html: Added.
+
2016-06-27 Joseph Pecoraro <[email protected]>
Web Inspector: When modifying sessionStorage, localStorage gets updated
Added: trunk/LayoutTests/fast/events/touch/ios/block-without-overflow-scroll-and-passive-observer-on-block-scrolling-state-expected.txt (0 => 202531)
--- trunk/LayoutTests/fast/events/touch/ios/block-without-overflow-scroll-and-passive-observer-on-block-scrolling-state-expected.txt (rev 0)
+++ trunk/LayoutTests/fast/events/touch/ios/block-without-overflow-scroll-and-passive-observer-on-block-scrolling-state-expected.txt 2016-06-28 01:13:53 UTC (rev 202531)
@@ -0,0 +1,15 @@
+Verify that the block scrolling on overflow has touch event region with synchronous dispatch associated with it even with asynchronous listeners.
+
+(Frame scrolling node
+ (scrollable area size 800 600)
+ (contents size 800 600)
+ (synchronous event dispatch region for event touchend
+ at (8,8) size 784x200)
+ (synchronous event dispatch region for event touchstart
+ at (8,8) size 784x200)
+ (synchronous event dispatch region for event touchforcechange
+ at (8,8) size 784x200)
+ (synchronous event dispatch region for event touchmove
+ at (8,8) size 784x200)
+)
+
Added: trunk/LayoutTests/fast/events/touch/ios/block-without-overflow-scroll-and-passive-observer-on-block-scrolling-state.html (0 => 202531)
--- trunk/LayoutTests/fast/events/touch/ios/block-without-overflow-scroll-and-passive-observer-on-block-scrolling-state.html (rev 0)
+++ trunk/LayoutTests/fast/events/touch/ios/block-without-overflow-scroll-and-passive-observer-on-block-scrolling-state.html 2016-06-28 01:13:53 UTC (rev 202531)
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta name="viewport" content="initial-scale=1">
+ <script>
+ if (window.testRunner) {
+ testRunner.dumpAsText();
+ testRunner.waitUntilDone();
+ }
+
+ function runTest()
+ {
+ let eventTarget = document.getElementById("eventTarget");
+ eventTarget.scrollTop = 5;
+ eventTarget.scrollTop = 0;
+ if (window.testRunner) {
+ document.getElementById("output").innerText = window.internals.scrollingStateTreeAsText();
+ testRunner.notifyDone();
+ }
+ }
+ function testSetup()
+ {
+ let eventTarget = document.getElementById("eventTarget");
+ function touchEventHandler(event) { throw "This is not supposed to happen!"; }
+ eventTarget.addEventListener('touchstart', touchEventHandler, { 'passive': true });
+ eventTarget.addEventListener('touchmove', touchEventHandler, { 'passive': true });
+ eventTarget.addEventListener('touchend', touchEventHandler, { 'passive': true });
+ eventTarget.addEventListener('touchcancel', touchEventHandler, { 'passive': true });
+ setTimeout(runTest, 15);
+ }
+
+ window.addEventListener('load', testSetup, false);
+ </script>
+</head>
+<body>
+ <div id="eventTarget" style="overflow: scroll; height: 200px">
+ <div style="height: 3000px"></div>
+ </div>
+ <p>Verify that the block scrolling on overflow has touch event region with synchronous dispatch associated with it even with asynchronous listeners.</p>
+ <pre id="output">
+ </pre>
+</body>
+</html>
Added: trunk/LayoutTests/fast/events/touch/ios/block-without-overflow-scroll-and-passive-observer-on-document-scrolling-state-expected.txt (0 => 202531)
--- trunk/LayoutTests/fast/events/touch/ios/block-without-overflow-scroll-and-passive-observer-on-document-scrolling-state-expected.txt (rev 0)
+++ trunk/LayoutTests/fast/events/touch/ios/block-without-overflow-scroll-and-passive-observer-on-document-scrolling-state-expected.txt 2016-06-28 01:13:53 UTC (rev 202531)
@@ -0,0 +1,17 @@
+Verify that the block scrolling on overflow has touch event region with synchronous dispatch associated with it even within a asynchronous dispatch region.
+
+(Frame scrolling node
+ (scrollable area size 800 600)
+ (contents size 800 600)
+ (asynchronous event dispatch region
+ at (0,0) size 800x600)
+ (synchronous event dispatch region for event touchend
+ at (8,8) size 784x200)
+ (synchronous event dispatch region for event touchstart
+ at (8,8) size 784x200)
+ (synchronous event dispatch region for event touchforcechange
+ at (8,8) size 784x200)
+ (synchronous event dispatch region for event touchmove
+ at (8,8) size 784x200)
+)
+
Added: trunk/LayoutTests/fast/events/touch/ios/block-without-overflow-scroll-and-passive-observer-on-document-scrolling-state.html (0 => 202531)
--- trunk/LayoutTests/fast/events/touch/ios/block-without-overflow-scroll-and-passive-observer-on-document-scrolling-state.html (rev 0)
+++ trunk/LayoutTests/fast/events/touch/ios/block-without-overflow-scroll-and-passive-observer-on-document-scrolling-state.html 2016-06-28 01:13:53 UTC (rev 202531)
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta name="viewport" content="initial-scale=1">
+ <script>
+ if (window.testRunner) {
+ testRunner.dumpAsText();
+ testRunner.waitUntilDone();
+ }
+
+ function touchEventHandler(event) { throw "This is not supposed to happen!"; }
+ document.addEventListener('touchstart', touchEventHandler, { 'passive': true });
+ document.addEventListener('touchmove', touchEventHandler, { 'passive': true });
+ document.addEventListener('touchend', touchEventHandler, { 'passive': true });
+ document.addEventListener('touchcancel', touchEventHandler, { 'passive': true });
+
+ function runTest()
+ {
+ let eventTarget = document.getElementById("eventTarget");
+ eventTarget.scrollTop = 5;
+ eventTarget.scrollTop = 0;
+ if (window.testRunner) {
+ document.getElementById("output").innerText = window.internals.scrollingStateTreeAsText();
+ testRunner.notifyDone();
+ }
+ }
+
+ window.addEventListener('load', function() { setTimeout(runTest, 15); }, false);
+ </script>
+</head>
+<body>
+ <div id="eventTarget" style="overflow: scroll; height: 200px">
+ <div style="height: 3000px"></div>
+ </div>
+ <p>Verify that the block scrolling on overflow has touch event region with synchronous dispatch associated with it even within a asynchronous dispatch region.</p>
+ <pre id="output">
+ </pre>
+</body>
+</html>
Added: trunk/LayoutTests/fast/events/touch/ios/block-without-overflow-scroll-scrolling-state-expected.txt (0 => 202531)
--- trunk/LayoutTests/fast/events/touch/ios/block-without-overflow-scroll-scrolling-state-expected.txt (rev 0)
+++ trunk/LayoutTests/fast/events/touch/ios/block-without-overflow-scroll-scrolling-state-expected.txt 2016-06-28 01:13:53 UTC (rev 202531)
@@ -0,0 +1,15 @@
+Verify that the block scrolling on overflow has touch event region with synchronous dispatch associated with it.
+
+(Frame scrolling node
+ (scrollable area size 800 600)
+ (contents size 800 600)
+ (synchronous event dispatch region for event touchend
+ at (0,0) size 800x200)
+ (synchronous event dispatch region for event touchstart
+ at (0,0) size 800x200)
+ (synchronous event dispatch region for event touchforcechange
+ at (0,0) size 800x200)
+ (synchronous event dispatch region for event touchmove
+ at (0,0) size 800x200)
+)
+
Added: trunk/LayoutTests/fast/events/touch/ios/block-without-overflow-scroll-scrolling-state.html (0 => 202531)
--- trunk/LayoutTests/fast/events/touch/ios/block-without-overflow-scroll-scrolling-state.html (rev 0)
+++ trunk/LayoutTests/fast/events/touch/ios/block-without-overflow-scroll-scrolling-state.html 2016-06-28 01:13:53 UTC (rev 202531)
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <style>
+ body {
+ margin: 0;
+ }
+ </style>
+ <meta name="viewport" content="initial-scale=1">
+</head>
+<body>
+ <div id="eventTarget" style="overflow: scroll; height: 200px">
+ <div style="height: 3000px"></div>
+ </div>
+ <p id="description">Verify that the block scrolling on overflow has touch event region with synchronous dispatch associated with it.</p>
+ <pre id="output">
+ </pre>
+ <script>
+ testRunner.dumpAsText();
+ testRunner.waitUntilDone();
+
+ function runTest()
+ {
+ let eventTarget = document.getElementById("eventTarget");
+ eventTarget.scrollTop = 5;
+ eventTarget.scrollTop = 0;
+ document.getElementById("output").innerText = window.internals.scrollingStateTreeAsText();
+ testRunner.notifyDone();
+ }
+
+ window.addEventListener('load', function() { setTimeout(runTest, 15); }, false);
+ </script>
+</body>
+</html>
Added: trunk/LayoutTests/fast/events/touch/ios/drag-block-without-overflow-scroll-and-passive-observer-on-block-expected.txt (0 => 202531)
--- trunk/LayoutTests/fast/events/touch/ios/drag-block-without-overflow-scroll-and-passive-observer-on-block-expected.txt (rev 0)
+++ trunk/LayoutTests/fast/events/touch/ios/drag-block-without-overflow-scroll-and-passive-observer-on-block-expected.txt 2016-06-28 01:13:53 UTC (rev 202531)
@@ -0,0 +1,24 @@
+Test scrolling on a block without -webkit-overflow-scrolling.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+
+ PASS window.scrollX is 0
+PASS window.scrollY is 0
+PASS document.documentElement.scrollTop is 0
+PASS document.documentElement.scrollLeft is 0
+PASS document.getElementById('eventTarget').scrollTop is 0
+PASS document.getElementById('eventTarget').scrollLeft is 0
+Received cancelable event touchstart at 50, 150
+Received cancelable event touchmove at 50, 50
+PASS window.scrollX is 0
+PASS window.scrollY is 0
+PASS document.documentElement.scrollTop is 0
+PASS document.documentElement.scrollLeft is 0
+PASS document.getElementById('eventTarget').scrollTop > 0 is true
+PASS document.getElementById('eventTarget').scrollLeft is 0
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Added: trunk/LayoutTests/fast/events/touch/ios/drag-block-without-overflow-scroll-and-passive-observer-on-block.html (0 => 202531)
--- trunk/LayoutTests/fast/events/touch/ios/drag-block-without-overflow-scroll-and-passive-observer-on-block.html (rev 0)
+++ trunk/LayoutTests/fast/events/touch/ios/drag-block-without-overflow-scroll-and-passive-observer-on-block.html 2016-06-28 01:13:53 UTC (rev 202531)
@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+
+<html>
+<head>
+ <script src=""
+ <style>
+ body {
+ margin: 0;
+ }
+ </style>
+ <meta name="viewport" content="initial-scale=1">
+</head>
+<body>
+ <div id="eventTarget" style="overflow: scroll; height: 200px">
+ <div style="height: 3000px"></div>
+ </div>
+ <p id="description"></p>
+ <div id="console">
+ </div>
+ <script>
+ description("Test scrolling on a block without -webkit-overflow-scrolling.");
+ window.jsTestIsAsync = true;
+
+ function getDragUIScript(startX, startY, endX, endY)
+ {
+ return `
+ (function() {
+ uiController.dragFromPointToPoint(${startX}, ${startY}, ${endX}, ${endY}, 0.15, function() {
+ uiController.uiScriptComplete("Dispatched Drag");
+ });
+ })();`
+ }
+
+ function runTest()
+ {
+ function scrollEventHandler(event) {
+ shouldBe("window.scrollX", "0");
+ shouldBe("window.scrollY", "0");
+ shouldBe("document.documentElement.scrollTop", "0");
+ shouldBe("document.documentElement.scrollLeft", "0");
+ shouldBeTrue("document.getElementById('eventTarget').scrollTop > 0");
+ shouldBe("document.getElementById('eventTarget').scrollLeft", "0");
+ finishJSTest();
+ }
+ let eventTarget = document.getElementById("eventTarget");
+ eventTarget.addEventListener("scroll", scrollEventHandler);
+
+ function touchEventHandler(event) {
+ debug("Received" + (event.cancelable ? " cancelable" : "") + " event " + event.type + " at " + event.touches[0].clientX + ", " + event.touches[0].clientY);
+ }
+ eventTarget.addEventListener('touchstart', touchEventHandler, { 'passive': true });
+ eventTarget.addEventListener('touchmove', touchEventHandler, { 'passive': true });
+ eventTarget.addEventListener('touchend', touchEventHandler, { 'passive': true });
+ eventTarget.addEventListener('touchcancel', touchEventHandler, { 'passive': true });
+
+ if (window.testRunner) {
+ testRunner.runUIScript(getDragUIScript(50, 150, 50, 50), function(result) {
+ debug(result);
+ });
+ }
+
+ shouldBe("window.scrollX", "0");
+ shouldBe("window.scrollY", "0");
+ shouldBe("document.documentElement.scrollTop", "0");
+ shouldBe("document.documentElement.scrollLeft", "0");
+ shouldBe("document.getElementById('eventTarget').scrollTop", "0");
+ shouldBe("document.getElementById('eventTarget').scrollLeft", "0");
+ }
+
+ window.addEventListener('load', runTest, false);
+ </script>
+ <script src=""
+</body>
+</html>
Added: trunk/LayoutTests/fast/events/touch/ios/drag-block-without-overflow-scroll-and-passive-observer-on-document-expected.txt (0 => 202531)
--- trunk/LayoutTests/fast/events/touch/ios/drag-block-without-overflow-scroll-and-passive-observer-on-document-expected.txt (rev 0)
+++ trunk/LayoutTests/fast/events/touch/ios/drag-block-without-overflow-scroll-and-passive-observer-on-document-expected.txt 2016-06-28 01:13:53 UTC (rev 202531)
@@ -0,0 +1,24 @@
+Test scrolling on a block without -webkit-overflow-scrolling.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+
+ PASS window.scrollX is 0
+PASS window.scrollY is 0
+PASS document.documentElement.scrollTop is 0
+PASS document.documentElement.scrollLeft is 0
+PASS document.getElementById('eventTarget').scrollTop is 0
+PASS document.getElementById('eventTarget').scrollLeft is 0
+Received cancelable event touchstart at 50, 150
+Received cancelable event touchmove at 50, 50
+PASS window.scrollX is 0
+PASS window.scrollY is 0
+PASS document.documentElement.scrollTop is 0
+PASS document.documentElement.scrollLeft is 0
+PASS document.getElementById('eventTarget').scrollTop > 0 is true
+PASS document.getElementById('eventTarget').scrollLeft is 0
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Added: trunk/LayoutTests/fast/events/touch/ios/drag-block-without-overflow-scroll-and-passive-observer-on-document.html (0 => 202531)
--- trunk/LayoutTests/fast/events/touch/ios/drag-block-without-overflow-scroll-and-passive-observer-on-document.html (rev 0)
+++ trunk/LayoutTests/fast/events/touch/ios/drag-block-without-overflow-scroll-and-passive-observer-on-document.html 2016-06-28 01:13:53 UTC (rev 202531)
@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+
+<html>
+<head>
+ <script src=""
+ <style>
+ body {
+ margin: 0;
+ }
+ </style>
+ <meta name="viewport" content="initial-scale=1">
+</head>
+<body>
+ <div id="eventTarget" style="overflow: scroll; height: 200px">
+ <div style="height: 3000px"></div>
+ </div>
+ <p id="description"></p>
+ <div id="console">
+ </div>
+ <script>
+ description("Test scrolling on a block without -webkit-overflow-scrolling.");
+ window.jsTestIsAsync = true;
+
+ function getDragUIScript(startX, startY, endX, endY)
+ {
+ return `
+ (function() {
+ uiController.dragFromPointToPoint(${startX}, ${startY}, ${endX}, ${endY}, 0.15, function() {
+ uiController.uiScriptComplete("Dispatched Drag");
+ });
+ })();`
+ }
+
+ function runTest()
+ {
+ function scrollEventHandler(event) {
+ shouldBe("window.scrollX", "0");
+ shouldBe("window.scrollY", "0");
+ shouldBe("document.documentElement.scrollTop", "0");
+ shouldBe("document.documentElement.scrollLeft", "0");
+ shouldBeTrue("document.getElementById('eventTarget').scrollTop > 0");
+ shouldBe("document.getElementById('eventTarget').scrollLeft", "0");
+ finishJSTest();
+ }
+ let eventTarget = document.getElementById("eventTarget");
+ eventTarget.addEventListener("scroll", scrollEventHandler);
+
+ function touchEventHandler(event) {
+ debug("Received" + (event.cancelable ? " cancelable" : "") + " event " + event.type + " at " + event.touches[0].clientX + ", " + event.touches[0].clientY);
+ }
+ document.addEventListener('touchstart', touchEventHandler, { 'passive': true });
+ document.addEventListener('touchmove', touchEventHandler, { 'passive': true });
+ document.addEventListener('touchend', touchEventHandler, { 'passive': true });
+ document.addEventListener('touchcancel', touchEventHandler, { 'passive': true });
+
+ if (window.testRunner) {
+ testRunner.runUIScript(getDragUIScript(50, 150, 50, 50), function(result) {
+ debug(result);
+ });
+ }
+
+ shouldBe("window.scrollX", "0");
+ shouldBe("window.scrollY", "0");
+ shouldBe("document.documentElement.scrollTop", "0");
+ shouldBe("document.documentElement.scrollLeft", "0");
+ shouldBe("document.getElementById('eventTarget').scrollTop", "0");
+ shouldBe("document.getElementById('eventTarget').scrollLeft", "0");
+ }
+
+ window.addEventListener('load', runTest, false);
+ </script>
+ <script src=""
+</body>
+</html>
Added: trunk/LayoutTests/fast/events/touch/ios/drag-block-without-overflow-scroll-expected.txt (0 => 202531)
--- trunk/LayoutTests/fast/events/touch/ios/drag-block-without-overflow-scroll-expected.txt (rev 0)
+++ trunk/LayoutTests/fast/events/touch/ios/drag-block-without-overflow-scroll-expected.txt 2016-06-28 01:13:53 UTC (rev 202531)
@@ -0,0 +1,23 @@
+Test scrolling on a block without -webkit-overflow-scrolling.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+
+ PASS window.scrollX is 0
+PASS window.scrollY is 0
+PASS document.documentElement.scrollTop is 0
+PASS document.documentElement.scrollLeft is 0
+PASS document.getElementById('eventTarget').scrollTop is 0
+PASS document.getElementById('eventTarget').scrollLeft is 0
+scrollEventHandler called.
+PASS window.scrollX is 0
+PASS window.scrollY is 0
+PASS document.documentElement.scrollTop is 0
+PASS document.documentElement.scrollLeft is 0
+PASS document.getElementById('eventTarget').scrollTop > 0 is true
+PASS document.getElementById('eventTarget').scrollLeft is 0
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Added: trunk/LayoutTests/fast/events/touch/ios/drag-block-without-overflow-scroll.html (0 => 202531)
--- trunk/LayoutTests/fast/events/touch/ios/drag-block-without-overflow-scroll.html (rev 0)
+++ trunk/LayoutTests/fast/events/touch/ios/drag-block-without-overflow-scroll.html 2016-06-28 01:13:53 UTC (rev 202531)
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+
+<html>
+<head>
+ <script src=""
+ <style>
+ body {
+ margin: 0;
+ }
+ </style>
+ <meta name="viewport" content="initial-scale=1">
+</head>
+<body>
+ <div id="eventTarget" style="overflow: scroll; height: 200px">
+ <div style="height: 3000px"></div>
+ </div>
+ <p id="description"></p>
+ <div id="console">
+ </div>
+ <script>
+ description("Test scrolling on a block without -webkit-overflow-scrolling.");
+ window.jsTestIsAsync = true;
+
+ function getDragUIScript(startX, startY, endX, endY)
+ {
+ return `
+ (function() {
+ uiController.dragFromPointToPoint(${startX}, ${startY}, ${endX}, ${endY}, 0.15, function() {
+ uiController.uiScriptComplete("Dispatched Drag");
+ });
+ })();`
+ }
+
+ function runTest()
+ {
+ function scrollEventHandler(event) {
+ debug("scrollEventHandler called.");
+ shouldBe("window.scrollX", "0");
+ shouldBe("window.scrollY", "0");
+ shouldBe("document.documentElement.scrollTop", "0");
+ shouldBe("document.documentElement.scrollLeft", "0");
+ shouldBeTrue("document.getElementById('eventTarget').scrollTop > 0");
+ shouldBe("document.getElementById('eventTarget').scrollLeft", "0");
+ finishJSTest();
+ }
+ let eventTarget = document.getElementById("eventTarget");
+ eventTarget.addEventListener("scroll", scrollEventHandler);
+
+ if (window.testRunner) {
+ testRunner.runUIScript(getDragUIScript(50, 150, 50, 50), function(result) { });
+ }
+
+ shouldBe("window.scrollX", "0");
+ shouldBe("window.scrollY", "0");
+ shouldBe("document.documentElement.scrollTop", "0");
+ shouldBe("document.documentElement.scrollLeft", "0");
+ shouldBe("document.getElementById('eventTarget').scrollTop", "0");
+ shouldBe("document.getElementById('eventTarget').scrollLeft", "0");
+ }
+
+ window.addEventListener('load', runTest, false);
+ </script>
+ <script src=""
+</body>
+</html>
Modified: trunk/Source/WebCore/ChangeLog (202530 => 202531)
--- trunk/Source/WebCore/ChangeLog 2016-06-28 01:00:25 UTC (rev 202530)
+++ trunk/Source/WebCore/ChangeLog 2016-06-28 01:13:53 UTC (rev 202531)
@@ -1,3 +1,32 @@
+2016-06-27 Benjamin Poulain <[email protected]>
+
+ Adopt the iOS TouchEventHandler API for cases that must have synchronous dispatch
+ https://bugs.webkit.org/show_bug.cgi?id=159179
+ rdar://problem/27006387
+
+ Reviewed by Simon Fraser.
+
+ Tests: fast/events/touch/ios/block-without-overflow-scroll-and-passive-observer-on-block-scrolling-state.html
+ fast/events/touch/ios/block-without-overflow-scroll-and-passive-observer-on-document-scrolling-state.html
+ fast/events/touch/ios/block-without-overflow-scroll-scrolling-state.html
+ fast/events/touch/ios/drag-block-without-overflow-scroll-and-passive-observer-on-block.html
+ fast/events/touch/ios/drag-block-without-overflow-scroll-and-passive-observer-on-document.html
+ fast/events/touch/ios/drag-block-without-overflow-scroll.html
+
+ * dom/Document.cpp:
+ (WebCore::Document::prepareForDestruction):
+ (WebCore::Document::removeAllEventListeners):
+ * dom/Node.cpp:
+ (WebCore::Node::willBeDeletedFrom):
+ (WebCore::tryAddEventListener):
+ (WebCore::tryRemoveEventListener):
+ * html/shadow/SliderThumbElement.cpp:
+ (WebCore::SliderThumbElement::registerForTouchEvents):
+ (WebCore::SliderThumbElement::unregisterForTouchEvents):
+ * rendering/RenderLayer.cpp:
+ (WebCore::RenderLayer::registerAsTouchEventListenerForScrolling):
+ (WebCore::RenderLayer::unregisterAsTouchEventListenerForScrolling):
+
2016-06-27 Alex Christensen <[email protected]>
Fix Windows build.
Modified: trunk/Source/WebCore/dom/Document.cpp (202530 => 202531)
--- trunk/Source/WebCore/dom/Document.cpp 2016-06-28 01:00:25 UTC (rev 202530)
+++ trunk/Source/WebCore/dom/Document.cpp 2016-06-28 01:13:53 UTC (rev 202531)
@@ -2332,7 +2332,7 @@
return;
#if ENABLE(IOS_TOUCH_EVENTS)
- clearTouchEventListeners();
+ clearTouchEventHandlersAndListeners();
#endif
#if HAVE(ACCESSIBILITY)
@@ -2401,7 +2401,7 @@
if (m_domWindow)
m_domWindow->removeAllEventListeners();
#if ENABLE(IOS_TOUCH_EVENTS)
- clearTouchEventListeners();
+ clearTouchEventHandlersAndListeners();
#endif
for (Node* node = firstChild(); node; node = NodeTraversal::next(*node))
node->removeAllEventListeners();
Modified: trunk/Source/WebCore/dom/Node.cpp (202530 => 202531)
--- trunk/Source/WebCore/dom/Node.cpp 2016-06-28 01:00:25 UTC (rev 202530)
+++ trunk/Source/WebCore/dom/Node.cpp 2016-06-28 01:13:53 UTC (rev 202531)
@@ -317,6 +317,7 @@
document.didRemoveWheelEventHandler(*this, EventHandlerRemoval::All);
#if ENABLE(TOUCH_EVENTS) && PLATFORM(IOS)
document.removeTouchEventListener(this, true);
+ document.removeTouchEventHandler(this, true);
#else
// FIXME: This should call didRemoveTouchEventHandler().
#endif
@@ -1933,7 +1934,7 @@
#if ENABLE(IOS_GESTURE_EVENTS) && ENABLE(TOUCH_EVENTS)
if (eventType == eventNames().gesturestartEvent || eventType == eventNames().gesturechangeEvent || eventType == eventNames().gestureendEvent)
- targetNode->document().addTouchEventListener(targetNode);
+ targetNode->document().addTouchEventHandler(targetNode);
#endif
return true;
@@ -1974,7 +1975,7 @@
#if ENABLE(IOS_GESTURE_EVENTS) && ENABLE(TOUCH_EVENTS)
if (eventType == eventNames().gesturestartEvent || eventType == eventNames().gesturechangeEvent || eventType == eventNames().gestureendEvent)
- targetNode->document().removeTouchEventListener(targetNode);
+ targetNode->document().removeTouchEventHandler(targetNode);
#endif
return true;
Modified: trunk/Source/WebCore/html/shadow/SliderThumbElement.cpp (202530 => 202531)
--- trunk/Source/WebCore/html/shadow/SliderThumbElement.cpp 2016-06-28 01:00:25 UTC (rev 202530)
+++ trunk/Source/WebCore/html/shadow/SliderThumbElement.cpp 2016-06-28 01:13:53 UTC (rev 202531)
@@ -550,7 +550,7 @@
ASSERT(shouldAcceptTouchEvents());
- document().addTouchEventListener(this);
+ document().addTouchEventHandler(this);
m_isRegisteredAsTouchEventListener = true;
}
@@ -562,7 +562,7 @@
clearExclusiveTouchIdentifier();
stopDragging();
- document().removeTouchEventListener(this);
+ document().removeTouchEventHandler(this);
m_isRegisteredAsTouchEventListener = false;
}
Modified: trunk/Source/WebCore/rendering/RenderLayer.cpp (202530 => 202531)
--- trunk/Source/WebCore/rendering/RenderLayer.cpp 2016-06-28 01:00:25 UTC (rev 202530)
+++ trunk/Source/WebCore/rendering/RenderLayer.cpp 2016-06-28 01:13:53 UTC (rev 202531)
@@ -2188,7 +2188,7 @@
if (!renderer().element() || m_registeredAsTouchEventListenerForScrolling)
return;
- renderer().document().addTouchEventListener(renderer().element());
+ renderer().document().addTouchEventHandler(renderer().element());
m_registeredAsTouchEventListenerForScrolling = true;
}
@@ -2197,7 +2197,7 @@
if (!renderer().element() || !m_registeredAsTouchEventListenerForScrolling)
return;
- renderer().document().removeTouchEventListener(renderer().element());
+ renderer().document().removeTouchEventHandler(renderer().element());
m_registeredAsTouchEventListenerForScrolling = false;
}
#endif // ENABLE(IOS_TOUCH_EVENTS)