<!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>[192036] 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/192036">192036</a></dd>
<dt>Author</dt> <dd>wenson_hsieh@apple.com</dd>
<dt>Date</dt> <dd>2015-11-04 14:21:25 -0800 (Wed, 04 Nov 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Fix crashing fast-clicking WK2 tests on iOS
https://bugs.webkit.org/show_bug.cgi?id=150896
&lt;rdar://problem/23344491&gt;

Reviewed by Simon Fraser.

Source/WebKit2:

In order for the modified fast-clicking tests to pass, we can't allow hit-testing to
find the tap highlight view. See the Radar for more UIKit-specific descriptions.

* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _showTapHighlight]):

LayoutTests:

Fix the fast-clicking tests by making them fire an exact number of times rather than
sending continuously until a minimum number of clicks are fired. This causes us to
avoid crashing during the following test when the marker events corresponding to single
taps fired after the test has completed have been handled.

* css3/touch-action/touch-action-manipulation-fast-clicks.html:
* fast/events/ios/viewport-device-width-at-initial-scale-fast-clicks.html:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestscss3touchactiontouchactionmanipulationfastclickshtml">trunk/LayoutTests/css3/touch-action/touch-action-manipulation-fast-clicks.html</a></li>
<li><a href="#trunkLayoutTestsfasteventsiosviewportdevicewidthatinitialscalefastclickshtml">trunk/LayoutTests/fast/events/ios/viewport-device-width-at-initial-scale-fast-clicks.html</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2UIProcessiosWKContentViewInteractionmm">trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (192035 => 192036)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2015-11-04 22:15:00 UTC (rev 192035)
+++ trunk/LayoutTests/ChangeLog        2015-11-04 22:21:25 UTC (rev 192036)
</span><span class="lines">@@ -1,3 +1,19 @@
</span><ins>+2015-11-04  Wenson Hsieh  &lt;wenson_hsieh@apple.com&gt;
+
+        Fix crashing fast-clicking WK2 tests on iOS
+        https://bugs.webkit.org/show_bug.cgi?id=150896
+        &lt;rdar://problem/23344491&gt;
+
+        Reviewed by Simon Fraser.
+
+        Fix the fast-clicking tests by making them fire an exact number of times rather than
+        sending continuously until a minimum number of clicks are fired. This causes us to
+        avoid crashing during the following test when the marker events corresponding to single
+        taps fired after the test has completed have been handled.
+
+        * css3/touch-action/touch-action-manipulation-fast-clicks.html:
+        * fast/events/ios/viewport-device-width-at-initial-scale-fast-clicks.html:
+
</ins><span class="cx"> 2015-10-30  Keith Miller  &lt;keith_miller@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Fix endless OSR exits when creating a rope that contains an object that ToPrimitive's to a number.
</span></span></pre></div>
<a id="trunkLayoutTestscss3touchactiontouchactionmanipulationfastclickshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/css3/touch-action/touch-action-manipulation-fast-clicks.html (192035 => 192036)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/css3/touch-action/touch-action-manipulation-fast-clicks.html        2015-11-04 22:15:00 UTC (rev 192035)
+++ trunk/LayoutTests/css3/touch-action/touch-action-manipulation-fast-clicks.html        2015-11-04 22:21:25 UTC (rev 192036)
</span><span class="lines">@@ -7,14 +7,21 @@
</span><span class="cx">     &lt;script src=&quot;../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</span><span class="cx">     &lt;script id=&quot;ui-script&quot; type=&quot;text/plain&quot;&gt;
</span><span class="cx">         (function() {
</span><del>-            function performTap() {
-                uiController.singleTapAtPoint(200, 200, performTap);
</del><ins>+            var count = 0;
+            function fireSuccessiveTaps() {
+                if (count &lt; 3)
+                    uiController.singleTapAtPoint(200, 200, fireSuccessiveTaps);
+                else
+                    uiController.uiScriptComplete(&quot;&quot;);
+
+                count++;
</ins><span class="cx">             }
</span><del>-            performTap();
</del><ins>+            fireSuccessiveTaps();
</ins><span class="cx">         })();
</span><span class="cx">     &lt;/script&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;script&gt;
</span><ins>+    var scriptCompleted = false;
</ins><span class="cx">     var clickCount = 0;
</span><span class="cx">     if (window.testRunner)
</span><span class="cx">         testRunner.waitUntilDone();
</span><span class="lines">@@ -25,13 +32,17 @@
</span><span class="cx"> 
</span><span class="cx">     function runTest() {
</span><span class="cx">         if (testRunner.runUIScript)
</span><del>-            testRunner.runUIScript(getUIScript(), function(result) { });
</del><ins>+            testRunner.runUIScript(getUIScript(), function(result) {
+                scriptCompleted = true;
+                if (clickCount == 3)
+                    testRunner.notifyDone();
+            });
</ins><span class="cx">     }
</span><span class="cx">     function handleClicked() {
</span><span class="cx">         clickCount++;
</span><span class="cx">         document.body.appendChild(document.createTextNode(&quot;Click!&quot;));
</span><span class="cx">         document.body.appendChild(document.createElement(&quot;br&quot;));
</span><del>-        if (clickCount == 3)
</del><ins>+        if (clickCount == 3 &amp;&amp; scriptCompleted)
</ins><span class="cx">             testRunner.notifyDone();
</span><span class="cx">     }
</span><span class="cx">     &lt;/script&gt;
</span></span></pre></div>
<a id="trunkLayoutTestsfasteventsiosviewportdevicewidthatinitialscalefastclickshtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/events/ios/viewport-device-width-at-initial-scale-fast-clicks.html (192035 => 192036)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/events/ios/viewport-device-width-at-initial-scale-fast-clicks.html        2015-11-04 22:15:00 UTC (rev 192035)
+++ trunk/LayoutTests/fast/events/ios/viewport-device-width-at-initial-scale-fast-clicks.html        2015-11-04 22:21:25 UTC (rev 192036)
</span><span class="lines">@@ -7,18 +7,21 @@
</span><span class="cx">     &lt;script src=&quot;../../../resources/js-test-pre.js&quot;&gt;&lt;/script&gt;
</span><span class="cx">     &lt;script id=&quot;ui-script&quot; type=&quot;text/plain&quot;&gt;
</span><span class="cx">         (function() {
</span><del>-            uiController.didEndZoomingCallback = function() {
-                uiController.uiScriptComplete(&quot;FAIL: Zoomed to scale &quot; + uiController.zoomScale + &quot; when we should only be firing fast clicks.&quot;);
-            };
</del><ins>+            var count = 0;
+            function fireSuccessiveTaps() {
+                if (count &lt; 3)
+                    uiController.singleTapAtPoint(200, 200, fireSuccessiveTaps);
+                else
+                    uiController.uiScriptComplete(&quot;&quot;);
</ins><span class="cx"> 
</span><del>-            function fireSuccessiveSingleTaps() {
-                uiController.singleTapAtPoint(200, 200, fireSuccessiveSingleTaps);
</del><ins>+                count++;
</ins><span class="cx">             }
</span><del>-            fireSuccessiveSingleTaps();
</del><ins>+            fireSuccessiveTaps();
</ins><span class="cx">         })();
</span><span class="cx">     &lt;/script&gt;
</span><span class="cx"> 
</span><span class="cx">     &lt;script&gt;
</span><ins>+    var scriptCompleted = false;
</ins><span class="cx">     var clickCount = 0;
</span><span class="cx">     if (window.testRunner)
</span><span class="cx">         testRunner.waitUntilDone();
</span><span class="lines">@@ -29,13 +32,17 @@
</span><span class="cx"> 
</span><span class="cx">     function runTest() {
</span><span class="cx">         if (testRunner.runUIScript)
</span><del>-            testRunner.runUIScript(getUIScript(), function(result) { });
</del><ins>+            testRunner.runUIScript(getUIScript(), function(result) {
+                scriptCompleted = true;
+                if (clickCount == 3)
+                    testRunner.notifyDone();
+            });
</ins><span class="cx">     }
</span><span class="cx">     function handleClicked() {
</span><span class="cx">         clickCount++;
</span><span class="cx">         document.body.appendChild(document.createTextNode(&quot;Click!&quot;));
</span><span class="cx">         document.body.appendChild(document.createElement(&quot;br&quot;));
</span><del>-        if (clickCount == 3)
</del><ins>+        if (clickCount == 3 &amp;&amp; scriptCompleted)
</ins><span class="cx">             testRunner.notifyDone();
</span><span class="cx">     }
</span><span class="cx">     &lt;/script&gt;
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (192035 => 192036)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2015-11-04 22:15:00 UTC (rev 192035)
+++ trunk/Source/WebKit2/ChangeLog        2015-11-04 22:21:25 UTC (rev 192036)
</span><span class="lines">@@ -1,3 +1,17 @@
</span><ins>+2015-11-04  Wenson Hsieh  &lt;wenson_hsieh@apple.com&gt;
+
+        Fix crashing fast-clicking WK2 tests on iOS
+        https://bugs.webkit.org/show_bug.cgi?id=150896
+        &lt;rdar://problem/23344491&gt;
+
+        Reviewed by Simon Fraser.
+
+        In order for the modified fast-clicking tests to pass, we can't allow hit-testing to
+        find the tap highlight view. See the Radar for more UIKit-specific descriptions.
+
+        * UIProcess/ios/WKContentViewInteraction.mm:
+        (-[WKContentView _showTapHighlight]):
+
</ins><span class="cx"> 2015-11-03  Anders Carlsson  &lt;andersca@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         PageLoadState::will/didChangeProcessIsResponsive should call observers
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessiosWKContentViewInteractionmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm (192035 => 192036)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm        2015-11-04 22:15:00 UTC (rev 192035)
+++ trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm        2015-11-04 22:21:25 UTC (rev 192036)
</span><span class="lines">@@ -845,6 +845,7 @@
</span><span class="cx"> 
</span><span class="cx">     if (!_highlightView) {
</span><span class="cx">         _highlightView = adoptNS([[_UIHighlightView alloc] initWithFrame:CGRectZero]);
</span><ins>+        [_highlightView setUserInteractionEnabled:NO];
</ins><span class="cx">         [_highlightView setOpaque:NO];
</span><span class="cx">         [_highlightView setCornerRadius:minimumTapHighlightRadius];
</span><span class="cx">     }
</span></span></pre>
</div>
</div>

</body>
</html>