<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[200602] trunk</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/200602">200602</a></dd>
<dt>Author</dt> <dd>simon.fraser@apple.com</dd>
<dt>Date</dt> <dd>2016-05-09 17:20:27 -0700 (Mon, 09 May 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>[iOS] visibility:hidden -webkit-overflow-scrolling: touch divs can interfere with page scrolling
https://bugs.webkit.org/show_bug.cgi?id=157496
Source/WebCore:

Reviewed by Tim Horton.

UIScrollViews are constructed in the UI process for visibility:hidden scrollable elements
with -webkit-overflow-scrolling: touch, and these intercept user events when they should not.

Fix by propagating a &quot;contentsHidden&quot; flag from the web process which is used to turn off
user interaction on these views.

Test: fast/scrolling/ios/touch-scroll-visibility-hidden.html

* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayerCA::updateContentsVisibility): We have to tell the scrolling layer
if we have visibility:hidden.
* platform/graphics/ca/PlatformCALayer.h:
* platform/graphics/ca/cocoa/PlatformCALayerCocoa.h:
* platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
(PlatformCALayerCocoa::contentsHidden):
(PlatformCALayerCocoa::setContentsHidden):
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateAfterDescendants):

Source/WebKit2:

rdar://problem/22963278

Reviewed by Tim Horton.

UIScrollViews are constructed in the UI process for visibility:hidden scrollable elements
with -webkit-overflow-scrolling: touch, and these intercept user events when they should not.

Fix by propagating a &quot;contentsHidden&quot; flag from the web process which is used to turn off
user interaction on these views.

* Shared/mac/RemoteLayerTreePropertyApplier.mm:
(WebKit::RemoteLayerTreePropertyApplier::applyProperties):
* Shared/mac/RemoteLayerTreeTransaction.h:
* Shared/mac/RemoteLayerTreeTransaction.mm:
(WebKit::RemoteLayerTreeTransaction::LayerProperties::LayerProperties):
(WebKit::RemoteLayerTreeTransaction::LayerProperties::encode):
(WebKit::RemoteLayerTreeTransaction::LayerProperties::decode):
(WebKit::dumpChangedLayers):
* UIProcess/ios/RemoteLayerTreeHostIOS.mm:
(-[UIView _recursiveFindDescendantScrollViewAtPoint:withEvent:]): Our custom hit
test needs to take view.isUserInteractionEnabled into account.
* WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
(WebKit::PlatformCALayerRemote::setHidden):
(WebKit::PlatformCALayerRemote::contentsHidden):
(WebKit::PlatformCALayerRemote::setContentsHidden):
* WebProcess/WebPage/mac/PlatformCALayerRemote.h:

Tools:

rdar://problem/22963278

Reviewed by Tim Horton.

Enhance UIScriptController to generate a drag, which is useful for scrolling.

* WebKitTestRunner/UIScriptContext/Bindings/UIScriptController.idl:
* WebKitTestRunner/UIScriptContext/UIScriptController.cpp:
(WTR::UIScriptController::dragFromPointToPoint):
* WebKitTestRunner/UIScriptContext/UIScriptController.h:
* WebKitTestRunner/ios/HIDEventGenerator.h:
* WebKitTestRunner/ios/HIDEventGenerator.mm:
(-[HIDEventGenerator dragWithStartPoint:endPoint:duration:completionBlock:]):
* WebKitTestRunner/ios/UIScriptControllerIOS.mm:
(WTR::UIScriptController::dragFromPointToPoint):

LayoutTests:

rdar://problem/22963278

Reviewed by Tim Horton.

Add a fast/scrolling/ios directory, disable it everywhere except on iOS.

* TestExpectations:
* fast/scrolling/ios/touch-scroll-visibility-hidden-expected.txt: Added.
* fast/scrolling/ios/touch-scroll-visibility-hidden.html: Added.
* platform/ios-simulator-wk2/TestExpectations:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsTestExpectations">trunk/LayoutTests/TestExpectations</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatorwk2TestExpectations">trunk/LayoutTests/platform/ios-simulator-wk2/TestExpectations</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicscaGraphicsLayerCAcpp">trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicscaPlatformCALayerh">trunk/Source/WebCore/platform/graphics/ca/PlatformCALayer.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicscacocoaPlatformCALayerCocoah">trunk/Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.h</a></li>
<li><a href="#trunkSourceWebCoreplatformgraphicscacocoaPlatformCALayerCocoamm">trunk/Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm</a></li>
<li><a href="#trunkSourceWebCorerenderingRenderLayerBackingcpp">trunk/Source/WebCore/rendering/RenderLayerBacking.cpp</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2SharedmacRemoteLayerTreePropertyAppliermm">trunk/Source/WebKit2/Shared/mac/RemoteLayerTreePropertyApplier.mm</a></li>
<li><a href="#trunkSourceWebKit2SharedmacRemoteLayerTreeTransactionh">trunk/Source/WebKit2/Shared/mac/RemoteLayerTreeTransaction.h</a></li>
<li><a href="#trunkSourceWebKit2SharedmacRemoteLayerTreeTransactionmm">trunk/Source/WebKit2/Shared/mac/RemoteLayerTreeTransaction.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessiosRemoteLayerTreeHostIOSmm">trunk/Source/WebKit2/UIProcess/ios/RemoteLayerTreeHostIOS.mm</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPagemacPlatformCALayerRemotecpp">trunk/Source/WebKit2/WebProcess/WebPage/mac/PlatformCALayerRemote.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPagemacPlatformCALayerRemoteh">trunk/Source/WebKit2/WebProcess/WebPage/mac/PlatformCALayerRemote.h</a></li>
<li><a href="#trunkToolsChangeLog">trunk/Tools/ChangeLog</a></li>
<li><a href="#trunkToolsWebKitTestRunnerUIScriptContextBindingsUIScriptControlleridl">trunk/Tools/WebKitTestRunner/UIScriptContext/Bindings/UIScriptController.idl</a></li>
<li><a href="#trunkToolsWebKitTestRunnerUIScriptContextUIScriptControllercpp">trunk/Tools/WebKitTestRunner/UIScriptContext/UIScriptController.cpp</a></li>
<li><a href="#trunkToolsWebKitTestRunnerUIScriptContextUIScriptControllerh">trunk/Tools/WebKitTestRunner/UIScriptContext/UIScriptController.h</a></li>
<li><a href="#trunkToolsWebKitTestRunneriosHIDEventGeneratorh">trunk/Tools/WebKitTestRunner/ios/HIDEventGenerator.h</a></li>
<li><a href="#trunkToolsWebKitTestRunneriosHIDEventGeneratormm">trunk/Tools/WebKitTestRunner/ios/HIDEventGenerator.mm</a></li>
<li><a href="#trunkToolsWebKitTestRunneriosUIScriptControllerIOSmm">trunk/Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li>trunk/LayoutTests/fast/scrolling/ios/</li>
<li><a href="#trunkLayoutTestsfastscrollingiostouchscrollvisibilityhiddenexpectedtxt">trunk/LayoutTests/fast/scrolling/ios/touch-scroll-visibility-hidden-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfastscrollingiostouchscrollvisibilityhiddenhtml">trunk/LayoutTests/fast/scrolling/ios/touch-scroll-visibility-hidden.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (200601 => 200602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2016-05-10 00:13:01 UTC (rev 200601)
+++ trunk/LayoutTests/ChangeLog        2016-05-10 00:20:27 UTC (rev 200602)
</span><span class="lines">@@ -1,3 +1,18 @@
</span><ins>+2016-05-09  Simon Fraser  &lt;simon.fraser@apple.com&gt;
+
+        [iOS] visibility:hidden -webkit-overflow-scrolling: touch divs can interfere with page scrolling
+        https://bugs.webkit.org/show_bug.cgi?id=157496
+        rdar://problem/22963278
+
+        Reviewed by Tim Horton.
+        
+        Add a fast/scrolling/ios directory, disable it everywhere except on iOS.
+
+        * TestExpectations:
+        * fast/scrolling/ios/touch-scroll-visibility-hidden-expected.txt: Added.
+        * fast/scrolling/ios/touch-scroll-visibility-hidden.html: Added.
+        * platform/ios-simulator-wk2/TestExpectations:
+
</ins><span class="cx"> 2016-05-09  Myles C. Maxfield  &lt;mmaxfield@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Web Font is downloaded even when all the characters in the document are outside its unicode-range
</span></span></pre></div>
<a id="trunkLayoutTestsTestExpectations"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/TestExpectations (200601 => 200602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/TestExpectations        2016-05-10 00:13:01 UTC (rev 200601)
+++ trunk/LayoutTests/TestExpectations        2016-05-10 00:20:27 UTC (rev 200602)
</span><span class="lines">@@ -20,6 +20,7 @@
</span><span class="cx"> fast/viewport/ios [ Skip ]
</span><span class="cx"> fast/events/ios [ Skip ]
</span><span class="cx"> fast/events/touch/ios [ Skip ]
</span><ins>+fast/scrolling/ios [ Skip ]
</ins><span class="cx"> 
</span><span class="cx"> fast/forms/attributed-strings.html [ Skip ]
</span><span class="cx"> fast/scrolling/latching [ Skip ]
</span></span></pre></div>
<a id="trunkLayoutTestsfastscrollingiostouchscrollvisibilityhiddenexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/scrolling/ios/touch-scroll-visibility-hidden-expected.txt (0 => 200602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/scrolling/ios/touch-scroll-visibility-hidden-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/scrolling/ios/touch-scroll-visibility-hidden-expected.txt        2016-05-10 00:20:27 UTC (rev 200602)
</span><span class="lines">@@ -0,0 +1,9 @@
</span><ins>+PASS hitElement.id is &quot;under-target&quot;
+PASS scroller.scrollTop is 0
+swipe complete
+PASS scroller.scrollTop is 0
+PASS document.scrollingElement.scrollTop is 90
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
</ins></span></pre></div>
<a id="trunkLayoutTestsfastscrollingiostouchscrollvisibilityhiddenhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/scrolling/ios/touch-scroll-visibility-hidden.html (0 => 200602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/scrolling/ios/touch-scroll-visibility-hidden.html                                (rev 0)
+++ trunk/LayoutTests/fast/scrolling/ios/touch-scroll-visibility-hidden.html        2016-05-10 00:20:27 UTC (rev 200602)
</span><span class="lines">@@ -0,0 +1,91 @@
</span><ins>+&lt;!DOCTYPE html&gt;
+
+&lt;html&gt;
+&lt;head&gt;
+    &lt;meta name=&quot;viewport&quot; content=&quot;initial-scale=1.0&quot;&gt;
+    &lt;style&gt;
+        body {
+            margin: 0;
+            height: 2000px;
+        }
+        
+        .box {
+            height: 100px;
+            width: 100px;
+            background-color: blue;
+        }
+        
+        .outer {
+            position: absolute;
+            top: 0;
+        }
+        
+        .box:hover {
+            background-color: green;
+        }
+        
+        .container {
+            position: absolute;
+            top: 50px;
+            left: 50px;
+            height: 300px;
+            width: 300px;
+            overflow: scroll;
+            -webkit-overflow-scrolling: touch;
+            border: 1px solid black;
+            visibility: hidden;
+        }
+        
+        .content {
+            height: 600px;
+        }
+    &lt;/style&gt;
+    &lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
+    &lt;script&gt;
+        window.jsTestIsAsync = true;
+
+        function getUIScript()
+        {
+            return `
+            (function() {
+                uiController.dragFromPointToPoint(60, 200, 60, 100, 0.5, function() {
+                    uiController.uiScriptComplete(&quot;&quot;);
+                });
+            })();`
+        }
+
+        var hitElement;
+        function runTest()
+        {
+            hitElement = document.elementFromPoint(20, 20);
+            shouldBeEqualToString(&quot;hitElement.id&quot;, &quot;under-target&quot;);
+            
+            var scroller = document.getElementById('scroller');
+            shouldBe(&quot;scroller.scrollTop&quot;, &quot;0&quot;);
+
+            if (testRunner.runUIScript) {
+                testRunner.runUIScript(getUIScript(), function() {
+                    debug(&quot;swipe complete&quot;);
+                    shouldBe(&quot;scroller.scrollTop&quot;, &quot;0&quot;);
+                    shouldBe(&quot;document.scrollingElement.scrollTop&quot;, &quot;90&quot;);
+                    finishJSTest();
+                });
+            }
+        }
+        window.addEventListener('load', runTest, false);
+    &lt;/script&gt;
+&lt;/head&gt;
+&lt;body onscroll=&quot;debug('body scroll')&quot;&gt;
+&lt;div class=&quot;outer box&quot; id=&quot;under-target&quot;&gt;
+&lt;/div&gt;
+
+&lt;div id=&quot;scroller&quot; class=&quot;container&quot; onscroll=&quot;debug('overflow scroll')&quot;&gt;
+    &lt;div class=&quot;content&quot;&gt;
+        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+        &lt;div class=&quot;inner box&quot; style=&quot;visibility: visible&quot;&gt;
+        &lt;/div&gt;
+    &lt;/div&gt;
+&lt;/div&gt;
+&lt;script src=&quot;../../../resources/js-test-post.js&quot;&gt;&lt;/script&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatorwk2TestExpectations"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/ios-simulator-wk2/TestExpectations (200601 => 200602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator-wk2/TestExpectations        2016-05-10 00:13:01 UTC (rev 200601)
+++ trunk/LayoutTests/platform/ios-simulator-wk2/TestExpectations        2016-05-10 00:20:27 UTC (rev 200602)
</span><span class="lines">@@ -9,6 +9,7 @@
</span><span class="cx"> fast/harness/ui-side-scripts.html [ Pass ]
</span><span class="cx"> fast/harness/concurrent-ui-side-scripts.html [ Pass ]
</span><span class="cx"> fast/zooming/ios [ Pass ]
</span><ins>+fast/scrolling/ios [ Pass ]
</ins><span class="cx"> 
</span><span class="cx"> #//////////////////////////////////////////////////////////////////////////////////////////
</span><span class="cx"> # End platform-specific directories.
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (200601 => 200602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-05-10 00:13:01 UTC (rev 200601)
+++ trunk/Source/WebCore/ChangeLog        2016-05-10 00:20:27 UTC (rev 200602)
</span><span class="lines">@@ -1,3 +1,29 @@
</span><ins>+2016-05-09  Simon Fraser  &lt;simon.fraser@apple.com&gt;
+
+        [iOS] visibility:hidden -webkit-overflow-scrolling: touch divs can interfere with page scrolling
+        https://bugs.webkit.org/show_bug.cgi?id=157496
+
+        Reviewed by Tim Horton.
+
+        UIScrollViews are constructed in the UI process for visibility:hidden scrollable elements
+        with -webkit-overflow-scrolling: touch, and these intercept user events when they should not.
+
+        Fix by propagating a &quot;contentsHidden&quot; flag from the web process which is used to turn off
+        user interaction on these views.
+
+        Test: fast/scrolling/ios/touch-scroll-visibility-hidden.html
+
+        * platform/graphics/ca/GraphicsLayerCA.cpp:
+        (WebCore::GraphicsLayerCA::updateContentsVisibility): We have to tell the scrolling layer
+        if we have visibility:hidden.
+        * platform/graphics/ca/PlatformCALayer.h:
+        * platform/graphics/ca/cocoa/PlatformCALayerCocoa.h:
+        * platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
+        (PlatformCALayerCocoa::contentsHidden):
+        (PlatformCALayerCocoa::setContentsHidden):
+        * rendering/RenderLayerBacking.cpp:
+        (WebCore::RenderLayerBacking::updateAfterDescendants):
+
</ins><span class="cx"> 2016-05-09  Myles C. Maxfield  &lt;mmaxfield@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Web Font is downloaded even when all the characters in the document are outside its unicode-range
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscaGraphicsLayerCAcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp (200601 => 200602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp        2016-05-10 00:13:01 UTC (rev 200601)
+++ trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp        2016-05-10 00:20:27 UTC (rev 200602)
</span><span class="lines">@@ -1877,6 +1877,8 @@
</span><span class="cx">         if (m_backdropLayer)
</span><span class="cx">             m_backdropLayer-&gt;setHidden(true);
</span><span class="cx">     }
</span><ins>+
+    m_layer-&gt;setContentsHidden(!m_contentsVisible);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void GraphicsLayerCA::updateContentsOpaque(float pageScaleFactor)
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscaPlatformCALayerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/ca/PlatformCALayer.h (200601 => 200602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/ca/PlatformCALayer.h        2016-05-10 00:13:01 UTC (rev 200601)
+++ trunk/Source/WebCore/platform/graphics/ca/PlatformCALayer.h        2016-05-10 00:20:27 UTC (rev 200602)
</span><span class="lines">@@ -158,6 +158,9 @@
</span><span class="cx">     virtual bool isHidden() const = 0;
</span><span class="cx">     virtual void setHidden(bool) = 0;
</span><span class="cx"> 
</span><ins>+    virtual bool contentsHidden() const = 0;
+    virtual void setContentsHidden(bool) = 0;
+
</ins><span class="cx">     virtual bool geometryFlipped() const = 0;
</span><span class="cx">     virtual void setGeometryFlipped(bool) = 0;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscacocoaPlatformCALayerCocoah"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.h (200601 => 200602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.h        2016-05-10 00:13:01 UTC (rev 200601)
+++ trunk/Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.h        2016-05-10 00:20:27 UTC (rev 200602)
</span><span class="lines">@@ -90,6 +90,9 @@
</span><span class="cx">     bool isHidden() const override;
</span><span class="cx">     void setHidden(bool) override;
</span><span class="cx"> 
</span><ins>+    bool contentsHidden() const override;
+    void setContentsHidden(bool) override;
+
</ins><span class="cx">     void setBackingStoreAttached(bool) override;
</span><span class="cx">     bool backingStoreAttached() const override;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformgraphicscacocoaPlatformCALayerCocoamm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm (200601 => 200602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm        2016-05-10 00:13:01 UTC (rev 200601)
+++ trunk/Source/WebCore/platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm        2016-05-10 00:20:27 UTC (rev 200602)
</span><span class="lines">@@ -616,6 +616,17 @@
</span><span class="cx">     END_BLOCK_OBJC_EXCEPTIONS
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+bool PlatformCALayerCocoa::contentsHidden() const
+{
+    // Used to disable user interaction for some platforms.
+    return true;
+}
+
+void PlatformCALayerCocoa::setContentsHidden(bool)
+{
+    // Used to disable user interaction for some platforms.
+}
+
</ins><span class="cx"> void PlatformCALayerCocoa::setBackingStoreAttached(bool)
</span><span class="cx"> {
</span><span class="cx">     // We could throw away backing store here with setContents:nil.
</span></span></pre></div>
<a id="trunkSourceWebCorerenderingRenderLayerBackingcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/rendering/RenderLayerBacking.cpp (200601 => 200602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/rendering/RenderLayerBacking.cpp        2016-05-10 00:13:01 UTC (rev 200601)
+++ trunk/Source/WebCore/rendering/RenderLayerBacking.cpp        2016-05-10 00:20:27 UTC (rev 200602)
</span><span class="lines">@@ -1066,6 +1066,8 @@
</span><span class="cx">     updateDrawsContent(isSimpleContainer);
</span><span class="cx"> 
</span><span class="cx">     m_graphicsLayer-&gt;setContentsVisible(m_owningLayer.hasVisibleContent() || isPaintDestinationForDescendantLayers());
</span><ins>+    if (m_scrollingLayer)
+        m_scrollingLayer-&gt;setContentsVisible(renderer().style().visibility() == VISIBLE);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> // FIXME: Avoid repaints when clip path changes.
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (200601 => 200602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2016-05-10 00:13:01 UTC (rev 200601)
+++ trunk/Source/WebKit2/ChangeLog        2016-05-10 00:20:27 UTC (rev 200602)
</span><span class="lines">@@ -1,3 +1,34 @@
</span><ins>+2016-05-09  Simon Fraser  &lt;simon.fraser@apple.com&gt;
+
+        [iOS] visibility:hidden -webkit-overflow-scrolling: touch divs can interfere with page scrolling
+        https://bugs.webkit.org/show_bug.cgi?id=157496
+        rdar://problem/22963278
+
+        Reviewed by Tim Horton.
+
+        UIScrollViews are constructed in the UI process for visibility:hidden scrollable elements
+        with -webkit-overflow-scrolling: touch, and these intercept user events when they should not.
+
+        Fix by propagating a &quot;contentsHidden&quot; flag from the web process which is used to turn off
+        user interaction on these views.
+
+        * Shared/mac/RemoteLayerTreePropertyApplier.mm:
+        (WebKit::RemoteLayerTreePropertyApplier::applyProperties):
+        * Shared/mac/RemoteLayerTreeTransaction.h:
+        * Shared/mac/RemoteLayerTreeTransaction.mm:
+        (WebKit::RemoteLayerTreeTransaction::LayerProperties::LayerProperties):
+        (WebKit::RemoteLayerTreeTransaction::LayerProperties::encode):
+        (WebKit::RemoteLayerTreeTransaction::LayerProperties::decode):
+        (WebKit::dumpChangedLayers):
+        * UIProcess/ios/RemoteLayerTreeHostIOS.mm:
+        (-[UIView _recursiveFindDescendantScrollViewAtPoint:withEvent:]): Our custom hit
+        test needs to take view.isUserInteractionEnabled into account.
+        * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
+        (WebKit::PlatformCALayerRemote::setHidden):
+        (WebKit::PlatformCALayerRemote::contentsHidden):
+        (WebKit::PlatformCALayerRemote::setContentsHidden):
+        * WebProcess/WebPage/mac/PlatformCALayerRemote.h:
+
</ins><span class="cx"> 2016-05-09  Ada Chan  &lt;adachan@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Introduce WebVideoFullscreenInterfaceMac::isPlayingVideoInEnhancedFullscreen() and use it in WebVideoFullscreenManagerProxy::isPlayingVideoInEnhancedFullscreen()
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedmacRemoteLayerTreePropertyAppliermm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/mac/RemoteLayerTreePropertyApplier.mm (200601 => 200602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/mac/RemoteLayerTreePropertyApplier.mm        2016-05-10 00:13:01 UTC (rev 200601)
+++ trunk/Source/WebKit2/Shared/mac/RemoteLayerTreePropertyApplier.mm        2016-05-10 00:20:27 UTC (rev 200602)
</span><span class="lines">@@ -312,7 +312,6 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (properties.changedProperties &amp; RemoteLayerTreeTransaction::MaskLayerChanged) {
</span><del>-
</del><span class="cx">         CALayer *maskOwnerLayer = view.layer;
</span><span class="cx"> 
</span><span class="cx">         if (properties.customAppearance == GraphicsLayer::LightBackdropAppearance || properties.customAppearance == GraphicsLayer::DarkBackdropAppearance) {
</span><span class="lines">@@ -332,6 +331,10 @@
</span><span class="cx">                 maskOwnerLayer.mask = maskView.layer;
</span><span class="cx">         }
</span><span class="cx">     }
</span><ins>+    
+    if (properties.changedProperties &amp; RemoteLayerTreeTransaction::ContentsHiddenChanged)
+        view.userInteractionEnabled = !properties.contentsHidden;
+
</ins><span class="cx">     END_BLOCK_OBJC_EXCEPTIONS;
</span><span class="cx"> }
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedmacRemoteLayerTreeTransactionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/mac/RemoteLayerTreeTransaction.h (200601 => 200602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/mac/RemoteLayerTreeTransaction.h        2016-05-10 00:13:01 UTC (rev 200601)
+++ trunk/Source/WebKit2/Shared/mac/RemoteLayerTreeTransaction.h        2016-05-10 00:20:27 UTC (rev 200602)
</span><span class="lines">@@ -69,25 +69,26 @@
</span><span class="cx">         DoubleSidedChanged              = 1LLU &lt;&lt; 14,
</span><span class="cx">         MasksToBoundsChanged            = 1LLU &lt;&lt; 15,
</span><span class="cx">         OpaqueChanged                   = 1LLU &lt;&lt; 16,
</span><del>-        MaskLayerChanged                = 1LLU &lt;&lt; 17,
-        ClonedContentsChanged           = 1LLU &lt;&lt; 18,
-        ContentsRectChanged             = 1LLU &lt;&lt; 19,
-        ContentsScaleChanged            = 1LLU &lt;&lt; 20,
-        CornerRadiusChanged             = 1LLU &lt;&lt; 21,
-        ShapeRoundedRectChanged         = 1LLU &lt;&lt; 22,
-        ShapePathChanged                = 1LLU &lt;&lt; 23,
-        MinificationFilterChanged       = 1LLU &lt;&lt; 24,
-        MagnificationFilterChanged      = 1LLU &lt;&lt; 25,
-        BlendModeChanged                = 1LLU &lt;&lt; 26,
-        WindRuleChanged                 = 1LLU &lt;&lt; 27,
-        SpeedChanged                    = 1LLU &lt;&lt; 28,
-        TimeOffsetChanged               = 1LLU &lt;&lt; 29,
-        BackingStoreChanged             = 1LLU &lt;&lt; 30,
-        BackingStoreAttachmentChanged   = 1LLU &lt;&lt; 31,
-        FiltersChanged                  = 1LLU &lt;&lt; 32,
-        AnimationsChanged               = 1LLU &lt;&lt; 33,
-        EdgeAntialiasingMaskChanged     = 1LLU &lt;&lt; 34,
-        CustomAppearanceChanged         = 1LLU &lt;&lt; 35,
</del><ins>+        ContentsHiddenChanged           = 1LLU &lt;&lt; 17,
+        MaskLayerChanged                = 1LLU &lt;&lt; 18,
+        ClonedContentsChanged           = 1LLU &lt;&lt; 19,
+        ContentsRectChanged             = 1LLU &lt;&lt; 20,
+        ContentsScaleChanged            = 1LLU &lt;&lt; 21,
+        CornerRadiusChanged             = 1LLU &lt;&lt; 22,
+        ShapeRoundedRectChanged         = 1LLU &lt;&lt; 23,
+        ShapePathChanged                = 1LLU &lt;&lt; 24,
+        MinificationFilterChanged       = 1LLU &lt;&lt; 25,
+        MagnificationFilterChanged      = 1LLU &lt;&lt; 26,
+        BlendModeChanged                = 1LLU &lt;&lt; 27,
+        WindRuleChanged                 = 1LLU &lt;&lt; 28,
+        SpeedChanged                    = 1LLU &lt;&lt; 29,
+        TimeOffsetChanged               = 1LLU &lt;&lt; 30,
+        BackingStoreChanged             = 1LLU &lt;&lt; 31,
+        BackingStoreAttachmentChanged   = 1LLU &lt;&lt; 32,
+        FiltersChanged                  = 1LLU &lt;&lt; 33,
+        AnimationsChanged               = 1LLU &lt;&lt; 34,
+        EdgeAntialiasingMaskChanged     = 1LLU &lt;&lt; 35,
+        CustomAppearanceChanged         = 1LLU &lt;&lt; 36,
</ins><span class="cx">     };
</span><span class="cx">     typedef uint64_t LayerChange;
</span><span class="cx"> 
</span><span class="lines">@@ -164,6 +165,7 @@
</span><span class="cx">         bool doubleSided;
</span><span class="cx">         bool masksToBounds;
</span><span class="cx">         bool opaque;
</span><ins>+        bool contentsHidden;
</ins><span class="cx">     };
</span><span class="cx"> 
</span><span class="cx">     explicit RemoteLayerTreeTransaction();
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedmacRemoteLayerTreeTransactionmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/mac/RemoteLayerTreeTransaction.mm (200601 => 200602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/mac/RemoteLayerTreeTransaction.mm        2016-05-10 00:13:01 UTC (rev 200601)
+++ trunk/Source/WebKit2/Shared/mac/RemoteLayerTreeTransaction.mm        2016-05-10 00:20:27 UTC (rev 200602)
</span><span class="lines">@@ -103,6 +103,7 @@
</span><span class="cx">     , doubleSided(true)
</span><span class="cx">     , masksToBounds(false)
</span><span class="cx">     , opaque(false)
</span><ins>+    , contentsHidden(false)
</ins><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -140,6 +141,7 @@
</span><span class="cx">     , doubleSided(other.doubleSided)
</span><span class="cx">     , masksToBounds(other.masksToBounds)
</span><span class="cx">     , opaque(other.opaque)
</span><ins>+    , contentsHidden(other.contentsHidden)
</ins><span class="cx"> {
</span><span class="cx">     // FIXME: LayerProperties should reference backing store by ID, so that two layers can have the same backing store (for clones).
</span><span class="cx">     // FIXME: LayerProperties shouldn't be copyable; PlatformCALayerRemote::clone should copy the relevant properties.
</span><span class="lines">@@ -211,6 +213,9 @@
</span><span class="cx">     if (changedProperties &amp; OpaqueChanged)
</span><span class="cx">         encoder &lt;&lt; opaque;
</span><span class="cx"> 
</span><ins>+    if (changedProperties &amp; ContentsHiddenChanged)
+        encoder &lt;&lt; contentsHidden;
+
</ins><span class="cx">     if (changedProperties &amp; MaskLayerChanged)
</span><span class="cx">         encoder &lt;&lt; maskLayerID;
</span><span class="cx"> 
</span><span class="lines">@@ -374,6 +379,11 @@
</span><span class="cx">             return false;
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    if (result.changedProperties &amp; ContentsHiddenChanged) {
+        if (!decoder.decode(result.contentsHidden))
+            return false;
+    }
+
</ins><span class="cx">     if (result.changedProperties &amp; MaskLayerChanged) {
</span><span class="cx">         if (!decoder.decode(result.maskLayerID))
</span><span class="cx">             return false;
</span><span class="lines">@@ -742,6 +752,9 @@
</span><span class="cx">         if (layerProperties.changedProperties &amp; RemoteLayerTreeTransaction::OpaqueChanged)
</span><span class="cx">             ts.dumpProperty(&quot;opaque&quot;, layerProperties.opaque);
</span><span class="cx"> 
</span><ins>+        if (layerProperties.changedProperties &amp; RemoteLayerTreeTransaction::ContentsHiddenChanged)
+            ts.dumpProperty(&quot;contentsHidden&quot;, layerProperties.contentsHidden);
+
</ins><span class="cx">         if (layerProperties.changedProperties &amp; RemoteLayerTreeTransaction::MaskLayerChanged)
</span><span class="cx">             ts.dumpProperty(&quot;maskLayer&quot;, layerProperties.maskLayerID);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessiosRemoteLayerTreeHostIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/ios/RemoteLayerTreeHostIOS.mm (200601 => 200602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/ios/RemoteLayerTreeHostIOS.mm        2016-05-10 00:13:01 UTC (rev 200601)
+++ trunk/Source/WebKit2/UIProcess/ios/RemoteLayerTreeHostIOS.mm        2016-05-10 00:20:27 UTC (rev 200602)
</span><span class="lines">@@ -60,7 +60,7 @@
</span><span class="cx">     [[self subviews] enumerateObjectsUsingBlock:^(UIView *view, NSUInteger idx, BOOL *stop) {
</span><span class="cx">         CGPoint subviewPoint = [view convertPoint:point fromView:self];
</span><span class="cx"> 
</span><del>-        if ([view pointInside:subviewPoint withEvent:event] &amp;&amp; [view isKindOfClass:[UIScrollView class]])
</del><ins>+        if ([view pointInside:subviewPoint withEvent:event] &amp;&amp; [view isKindOfClass:[UIScrollView class]] &amp;&amp; view.isUserInteractionEnabled)
</ins><span class="cx">             foundView = view;
</span><span class="cx"> 
</span><span class="cx">         if (![view subviews])
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPagemacPlatformCALayerRemotecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/mac/PlatformCALayerRemote.cpp (200601 => 200602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/mac/PlatformCALayerRemote.cpp        2016-05-10 00:13:01 UTC (rev 200601)
+++ trunk/Source/WebKit2/WebProcess/WebPage/mac/PlatformCALayerRemote.cpp        2016-05-10 00:20:27 UTC (rev 200602)
</span><span class="lines">@@ -503,10 +503,27 @@
</span><span class="cx"> 
</span><span class="cx"> void PlatformCALayerRemote::setHidden(bool value)
</span><span class="cx"> {
</span><ins>+    if (m_properties.hidden == value)
+        return;
+
</ins><span class="cx">     m_properties.hidden = value;
</span><span class="cx">     m_properties.notePropertiesChanged(RemoteLayerTreeTransaction::HiddenChanged);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+bool PlatformCALayerRemote::contentsHidden() const
+{
+    return m_properties.contentsHidden;
+}
+
+void PlatformCALayerRemote::setContentsHidden(bool value)
+{
+    if (m_properties.contentsHidden == value)
+        return;
+
+    m_properties.contentsHidden = value;
+    m_properties.notePropertiesChanged(RemoteLayerTreeTransaction::ContentsHiddenChanged);
+}
+
</ins><span class="cx"> void PlatformCALayerRemote::setBackingStoreAttached(bool value)
</span><span class="cx"> {
</span><span class="cx">     if (m_properties.backingStoreAttached == value)
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPagemacPlatformCALayerRemoteh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/mac/PlatformCALayerRemote.h (200601 => 200602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/mac/PlatformCALayerRemote.h        2016-05-10 00:13:01 UTC (rev 200601)
+++ trunk/Source/WebKit2/WebProcess/WebPage/mac/PlatformCALayerRemote.h        2016-05-10 00:20:27 UTC (rev 200602)
</span><span class="lines">@@ -94,6 +94,9 @@
</span><span class="cx">     bool isHidden() const override;
</span><span class="cx">     void setHidden(bool) override;
</span><span class="cx"> 
</span><ins>+    bool contentsHidden() const override;
+    void setContentsHidden(bool) override;
+
</ins><span class="cx">     void setBackingStoreAttached(bool) override;
</span><span class="cx">     bool backingStoreAttached() const override;
</span><span class="cx">     bool backingContributesToMemoryEstimate() const override { return backingStoreAttached(); }
</span></span></pre></div>
<a id="trunkToolsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Tools/ChangeLog (200601 => 200602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/ChangeLog        2016-05-10 00:13:01 UTC (rev 200601)
+++ trunk/Tools/ChangeLog        2016-05-10 00:20:27 UTC (rev 200602)
</span><span class="lines">@@ -1,5 +1,25 @@
</span><span class="cx"> 2016-05-09  Simon Fraser  &lt;simon.fraser@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        [iOS] visibility:hidden -webkit-overflow-scrolling: touch divs can interfere with page scrolling
+        https://bugs.webkit.org/show_bug.cgi?id=157496
+        rdar://problem/22963278
+
+        Reviewed by Tim Horton.
+
+        Enhance UIScriptController to generate a drag, which is useful for scrolling.
+
+        * WebKitTestRunner/UIScriptContext/Bindings/UIScriptController.idl:
+        * WebKitTestRunner/UIScriptContext/UIScriptController.cpp:
+        (WTR::UIScriptController::dragFromPointToPoint):
+        * WebKitTestRunner/UIScriptContext/UIScriptController.h:
+        * WebKitTestRunner/ios/HIDEventGenerator.h:
+        * WebKitTestRunner/ios/HIDEventGenerator.mm:
+        (-[HIDEventGenerator dragWithStartPoint:endPoint:duration:completionBlock:]):
+        * WebKitTestRunner/ios/UIScriptControllerIOS.mm:
+        (WTR::UIScriptController::dragFromPointToPoint):
+
+2016-05-09  Simon Fraser  &lt;simon.fraser@apple.com&gt;
+
</ins><span class="cx">         Remove testRunner.setTextAutosizingEnabled and migrate the one test that uses it
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=157480
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnerUIScriptContextBindingsUIScriptControlleridl"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/UIScriptContext/Bindings/UIScriptController.idl (200601 => 200602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/UIScriptContext/Bindings/UIScriptController.idl        2016-05-10 00:13:01 UTC (rev 200601)
+++ trunk/Tools/WebKitTestRunner/UIScriptContext/Bindings/UIScriptController.idl        2016-05-10 00:20:27 UTC (rev 200602)
</span><span class="lines">@@ -36,6 +36,7 @@
</span><span class="cx">     void liftUpAtPoint(long x, long y, long touchCount, object callback);
</span><span class="cx">     void singleTapAtPoint(long x, long y, object callback);
</span><span class="cx">     void doubleTapAtPoint(long x, long y, object callback);
</span><ins>+    void dragFromPointToPoint(long startX, long startY, long endX, long endY, double durationSeconds, object callback);
</ins><span class="cx"> 
</span><span class="cx">     void typeCharacterUsingHardwareKeyboard(DOMString character, object callback);
</span><span class="cx">     void keyDownUsingHardwareKeyboard(DOMString character, object callback);
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnerUIScriptContextUIScriptControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/UIScriptContext/UIScriptController.cpp (200601 => 200602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/UIScriptContext/UIScriptController.cpp        2016-05-10 00:13:01 UTC (rev 200601)
+++ trunk/Tools/WebKitTestRunner/UIScriptContext/UIScriptController.cpp        2016-05-10 00:20:27 UTC (rev 200602)
</span><span class="lines">@@ -134,6 +134,10 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void UIScriptController::dragFromPointToPoint(long startX, long startY, long endX, long endY, double durationSeconds, JSValueRef callback)
+{
+}
+
</ins><span class="cx"> void UIScriptController::typeCharacterUsingHardwareKeyboard(JSStringRef, JSValueRef)
</span><span class="cx"> {
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnerUIScriptContextUIScriptControllerh"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/UIScriptContext/UIScriptController.h (200601 => 200602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/UIScriptContext/UIScriptController.h        2016-05-10 00:13:01 UTC (rev 200601)
+++ trunk/Tools/WebKitTestRunner/UIScriptContext/UIScriptController.h        2016-05-10 00:20:27 UTC (rev 200602)
</span><span class="lines">@@ -51,6 +51,7 @@
</span><span class="cx">     void liftUpAtPoint(long x, long y, long touchCount, JSValueRef callback);
</span><span class="cx">     void singleTapAtPoint(long x, long y, JSValueRef callback);
</span><span class="cx">     void doubleTapAtPoint(long x, long y, JSValueRef callback);
</span><ins>+    void dragFromPointToPoint(long startX, long startY, long endX, long endY, double durationSeconds, JSValueRef callback);
</ins><span class="cx">     
</span><span class="cx">     void typeCharacterUsingHardwareKeyboard(JSStringRef character, JSValueRef callback);
</span><span class="cx">     void keyDownUsingHardwareKeyboard(JSStringRef character, JSValueRef callback);
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunneriosHIDEventGeneratorh"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/ios/HIDEventGenerator.h (200601 => 200602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/ios/HIDEventGenerator.h        2016-05-10 00:13:01 UTC (rev 200601)
+++ trunk/Tools/WebKitTestRunner/ios/HIDEventGenerator.h        2016-05-10 00:20:27 UTC (rev 200602)
</span><span class="lines">@@ -32,9 +32,6 @@
</span><span class="cx"> + (HIDEventGenerator *)sharedHIDEventGenerator;
</span><span class="cx"> 
</span><span class="cx"> // Touches
</span><del>-- (void)touchDown:(CGPoint)location;
-- (void)liftUp:(CGPoint)location;
-- (void)moveToPoints:(CGPoint*)locations touchCount:(NSUInteger)count duration:(NSTimeInterval)seconds;
</del><span class="cx"> - (void)touchDown:(CGPoint)location touchCount:(NSUInteger)count completionBlock:(void (^)(void))completionBlock;
</span><span class="cx"> - (void)liftUp:(CGPoint)location touchCount:(NSUInteger)count completionBlock:(void (^)(void))completionBlock;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunneriosHIDEventGeneratormm"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/ios/HIDEventGenerator.mm (200601 => 200602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/ios/HIDEventGenerator.mm        2016-05-10 00:13:01 UTC (rev 200601)
+++ trunk/Tools/WebKitTestRunner/ios/HIDEventGenerator.mm        2016-05-10 00:20:27 UTC (rev 200602)
</span><span class="lines">@@ -415,6 +415,10 @@
</span><span class="cx"> 
</span><span class="cx"> - (void)dragWithStartPoint:(CGPoint)startLocation endPoint:(CGPoint)endLocation duration:(double)seconds completionBlock:(void (^)(void))completionBlock
</span><span class="cx"> {
</span><ins>+    [self touchDown:startLocation touchCount:1];
+    [self moveToPoints:&amp;endLocation touchCount:1 duration:seconds];
+    [self liftUp:endLocation];
+    [self _sendMarkerHIDEventWithCompletionBlock:completionBlock];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)pinchCloseWithStartPoint:(CGPoint)startLocation endPoint:(CGPoint)endLocation duration:(double)seconds completionBlock:(void (^)(void))completionBlock
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunneriosUIScriptControllerIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm (200601 => 200602)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm        2016-05-10 00:13:01 UTC (rev 200601)
+++ trunk/Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm        2016-05-10 00:20:27 UTC (rev 200602)
</span><span class="lines">@@ -125,6 +125,20 @@
</span><span class="cx">     }];
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void UIScriptController::dragFromPointToPoint(long startX, long startY, long endX, long endY, double durationSeconds, JSValueRef callback)
+{
+    unsigned callbackID = m_context-&gt;prepareForAsyncTask(callback, CallbackTypeNonPersistent);
+
+    CGPoint startPoint = globalToContentCoordinates(TestController::singleton().mainWebView()-&gt;platformView(), startX, startY);
+    CGPoint endPoint = globalToContentCoordinates(TestController::singleton().mainWebView()-&gt;platformView(), endX, endY);
+    
+    [[HIDEventGenerator sharedHIDEventGenerator] dragWithStartPoint:startPoint endPoint:endPoint duration:durationSeconds completionBlock:^{
+        if (!m_context)
+            return;
+        m_context-&gt;asyncTaskComplete(callbackID);
+    }];
+}
+
</ins><span class="cx"> void UIScriptController::typeCharacterUsingHardwareKeyboard(JSStringRef character, JSValueRef callback)
</span><span class="cx"> {
</span><span class="cx">     unsigned callbackID = m_context-&gt;prepareForAsyncTask(callback, CallbackTypeNonPersistent);
</span></span></pre>
</div>
</div>

</body>
</html>