<!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>[193997] 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/193997">193997</a></dd>
<dt>Author</dt> <dd>bdakin@apple.com</dd>
<dt>Date</dt> <dd>2015-12-11 17:21:52 -0800 (Fri, 11 Dec 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>_touchEventRegions should return regions in the view's coordinates
https://bugs.webkit.org/show_bug.cgi?id=152189
-and corresponding-
rdar://problem/23188605

Reviewed by Dan Bernstein.

Source/WebKit/mac:

The comment here was actually out of date. It claimed that touch rectangles 
are in the coordinate system of the document, but we had actually changed 
them to be in the view’s coordinate system in order to fix issues with 
handling touch events in UIWebView. But now we are going back to having the 
touch rectangles be in the document’s coordinate system, so we should fix the 
rtl bugs here by converting to view coordinates before handing the rects off 
to iOS WK1 clients.
* WebView/WebView.mm:
(-[WebView _touchEventRegions]):

LayoutTests:

* fast/events/touch/ios/touch-event-rtl-expected.txt: Added.
* fast/events/touch/ios/touch-event-rtl.html: Added.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitmacChangeLog">trunk/Source/WebKit/mac/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitmacWebViewWebViewmm">trunk/Source/WebKit/mac/WebView/WebView.mm</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsfasteventstouchiostoucheventrtlexpectedtxt">trunk/LayoutTests/fast/events/touch/ios/touch-event-rtl-expected.txt</a></li>
<li><a href="#trunkLayoutTestsfasteventstouchiostoucheventrtlhtml">trunk/LayoutTests/fast/events/touch/ios/touch-event-rtl.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (193996 => 193997)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2015-12-12 00:46:23 UTC (rev 193996)
+++ trunk/LayoutTests/ChangeLog        2015-12-12 01:21:52 UTC (rev 193997)
</span><span class="lines">@@ -1,3 +1,15 @@
</span><ins>+2015-12-11  Beth Dakin  &lt;bdakin@apple.com&gt;
+
+        _touchEventRegions should return regions in the view's coordinates
+        https://bugs.webkit.org/show_bug.cgi?id=152189
+        -and corresponding-
+        rdar://problem/23188605
+
+        Reviewed by Dan Bernstein.
+
+        * fast/events/touch/ios/touch-event-rtl-expected.txt: Added.
+        * fast/events/touch/ios/touch-event-rtl.html: Added.
+
</ins><span class="cx"> 2015-12-11  Alexey Proskuryakov  &lt;ap@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Roll out http://trac.webkit.org/r193984, because the new test is timing out.
</span></span></pre></div>
<a id="trunkLayoutTestsfasteventstouchiostoucheventrtlexpectedtxt"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/events/touch/ios/touch-event-rtl-expected.txt (0 => 193997)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/events/touch/ios/touch-event-rtl-expected.txt                                (rev 0)
+++ trunk/LayoutTests/fast/events/touch/ios/touch-event-rtl-expected.txt        2015-12-12 01:21:52 UTC (rev 193997)
</span><span class="lines">@@ -0,0 +1,3 @@
</span><ins>+Tap me
+Received event touchstart at 58, 50
+Done
</ins></span></pre></div>
<a id="trunkLayoutTestsfasteventstouchiostoucheventrtlhtml"></a>
<div class="addfile"><h4>Added: trunk/LayoutTests/fast/events/touch/ios/touch-event-rtl.html (0 => 193997)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/events/touch/ios/touch-event-rtl.html                                (rev 0)
+++ trunk/LayoutTests/fast/events/touch/ios/touch-event-rtl.html        2015-12-12 01:21:52 UTC (rev 193997)
</span><span class="lines">@@ -0,0 +1,60 @@
</span><ins>+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; lang=&quot;en-US&quot; dir=&quot;rtl&quot;&gt;
+&lt;head&gt;
+&lt;meta charset=&quot;utf-8&quot;&gt;
+&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, shrink-to-fit=no&quot;&gt;
+&lt;style&gt;
+body {
+    width: 900px;
+}
+.button {
+    padding: 40px;
+    background: #ccc;
+}
+.button.tapped {
+    background: green;
+}
+&lt;/style&gt;
+
+&lt;script&gt;
+
+if (window.testRunner) {
+    testRunner.dumpAsText();
+    testRunner.waitUntilDone();
+}
+
+function getUIScript()
+{
+    return `
+    (function() {
+        uiController.singleTapAtPoint(-50, 50, function() {
+            uiController.uiScriptComplete(&quot;Done&quot;);
+                });
+    })();`
+}
+
+function setUp()
+{
+    var output = '';
+    var target = document.getElementById('target');
+    target.addEventListener('touchstart', function(event) {
+        output += 'Received event ' + event.type + ' at ' + event.touches[0].clientX + ', ' + event.touches[0].clientY + '&lt;br&gt;';
+        target.classList.toggle('tapped');
+    });
+
+    if (testRunner.runUIScript) {
+        testRunner.runUIScript(getUIScript(), function(result) {
+            output += result;
+            document.getElementById('console').innerHTML = output;
+            testRunner.notifyDone();
+        });
+    }
+}
+
+window.addEventListener('load', setUp, false);
+&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+    &lt;div class=&quot;button&quot; id=&quot;target&quot;&gt;Tap me&lt;/div&gt;
+    &lt;pre id=&quot;console&quot;&gt;To test manually, tap the box. If it turns green, then the test passes.&lt;/pre&gt;
+&lt;/body&gt;
+&lt;/html&gt;
</ins></span></pre></div>
<a id="trunkSourceWebKitmacChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/ChangeLog (193996 => 193997)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/ChangeLog        2015-12-12 00:46:23 UTC (rev 193996)
+++ trunk/Source/WebKit/mac/ChangeLog        2015-12-12 01:21:52 UTC (rev 193997)
</span><span class="lines">@@ -1,3 +1,22 @@
</span><ins>+2015-12-11  Beth Dakin  &lt;bdakin@apple.com&gt;
+
+        _touchEventRegions should return regions in the view's coordinates
+        https://bugs.webkit.org/show_bug.cgi?id=152189
+        -and corresponding-
+        rdar://problem/23188605
+
+        Reviewed by Dan Bernstein.
+
+        The comment here was actually out of date. It claimed that touch rectangles 
+        are in the coordinate system of the document, but we had actually changed 
+        them to be in the view’s coordinate system in order to fix issues with 
+        handling touch events in UIWebView. But now we are going back to having the 
+        touch rectangles be in the document’s coordinate system, so we should fix the 
+        rtl bugs here by converting to view coordinates before handing the rects off 
+        to iOS WK1 clients.
+        * WebView/WebView.mm:
+        (-[WebView _touchEventRegions]):
+
</ins><span class="cx"> 2015-12-10  Eric Carlson  &lt;eric.carlson@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [MediaStream] Expose media capture devices persistent permissions to WebCore
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebViewWebViewmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebView/WebView.mm (193996 => 193997)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebView/WebView.mm        2015-12-12 00:46:23 UTC (rev 193996)
+++ trunk/Source/WebKit/mac/WebView/WebView.mm        2015-12-12 01:21:52 UTC (rev 193997)
</span><span class="lines">@@ -3733,26 +3733,27 @@
</span><span class="cx"> 
</span><span class="cx">     NSMutableArray *eventRegionArray = [[[NSMutableArray alloc] initWithCapacity:rects.size()] autorelease];
</span><span class="cx"> 
</span><ins>+    NSView &lt;WebDocumentView&gt; *documentView = [[[self mainFrame] frameView] documentView];
</ins><span class="cx">     Vector&lt;IntRect&gt;::const_iterator end = rects.end();
</span><span class="cx">     for (Vector&lt;IntRect&gt;::const_iterator it = rects.begin(); it != end; ++it) {
</span><span class="cx">         const IntRect&amp; rect = *it;
</span><span class="cx">         if (rect.isEmpty())
</span><span class="cx">             continue;
</span><span class="cx"> 
</span><del>-        // Note that these rectangles are in the coordinate system of the document (inside the WebHTMLView), which is not
-        // the same as the coordinate system of the WebView. If you want to do comparisons with locations in the WebView,
-        // you must convert between the two using WAKView's convertRect:toView: selector. This will take care of scaling
-        // and translations (which are relevant for right-to-left column layout).
</del><ins>+        // The touch rectangles are in the coordinate system of the document (inside the WebHTMLView), which is not
+        // the same as the coordinate system of the WebView. UIWebView currently expects view coordinates, so we'll
+        // convert them here now.
+        IntRect viewRect = IntRect([documentView convertRect:rect toView:self]);
</ins><span class="cx"> 
</span><span class="cx">         // The event region wants this points in this order:
</span><span class="cx">         //  p2------p3
</span><span class="cx">         //  |       |
</span><span class="cx">         //  p1------p4
</span><span class="cx">         //
</span><del>-        WebEventRegion *eventRegion = [[WebEventRegion alloc] initWithPoints:FloatPoint(rect.x(), rect.maxY())
-                                                                            :FloatPoint(rect.x(), rect.y())
-                                                                            :FloatPoint(rect.maxX(), rect.y())
-                                                                            :FloatPoint(rect.maxX(), rect.maxY())];
</del><ins>+        WebEventRegion *eventRegion = [[WebEventRegion alloc] initWithPoints:FloatPoint(viewRect.x(), viewRect.maxY())
+                                                                            :FloatPoint(viewRect.x(), viewRect.y())
+                                                                            :FloatPoint(viewRect.maxX(), viewRect.y())
+                                                                            :FloatPoint(viewRect.maxX(), viewRect.maxY())];
</ins><span class="cx">         if (eventRegion) {
</span><span class="cx">             [eventRegionArray addObject:eventRegion];
</span><span class="cx">             [eventRegion release];
</span></span></pre>
</div>
</div>

</body>
</html>