<!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>[213036] 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/213036">213036</a></dd>
<dt>Author</dt> <dd>aestes@apple.com</dd>
<dt>Date</dt> <dd>2017-02-27 00:07:57 -0800 (Mon, 27 Feb 2017)</dd>
</dl>
<h3>Log Message</h3>
<pre>Links cannot be activated when running Mobile Safari with external SDK build of WebKit for iOS Simulator
https://bugs.webkit.org/show_bug.cgi?id=141906
Reviewed by Tim Horton.
Source/WebKit2:
Even if Touch Events are disabled, we still need to register a
UIWebTouchEventsGestureRecognizer to record the layer tree transaction ID when a touch
begins. Click events are only generated for touches that occur after the current frame's
load has committed, and we use the transaction ID from when the touch began to implement
this check.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::handleTouchEventSynchronously):
(WebKit::WebPageProxy::resetState):
* UIProcess/WebPageProxy.h:
* UIProcess/ios/WKContentViewInteraction.h: Declared _layerTreeTransactionIdAtLastTouchStart.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView setupInteraction]): Register a UIWebTouchEventsGestureRecognizer even if
Touch Events are disabled.
(-[WKContentView cleanupInteraction]): Reset _layerTreeTransactionIdAtLastTouchStart to 0.
(-[WKContentView _webTouchEventsRecognized:]): Update _layerTreeTransactionIdAtLastTouchStart
when a touch begins, even if Touch Events are disabled.
(-[WKContentView _singleTapCommited:]): Passed _layerTreeTransactionIdAtLastTouchStart to
WebPageProxy::commitPotentialTap().
(-[WKContentView _attemptClickAtLocation:]): Ditto for WebPageProxy::handleTap().
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::commitPotentialTap):
(WebKit::WebPageProxy::handleTap):
LayoutTests:
Unskipped tests that now pass. Rewrote a test to use UIHelper so that it works on both
DumpRenderTree and WebKitTestRunner.
* fast/events/can-click-element-on-page-with-active-pseudo-class-and-search-field.html:
Rewrote to use UIHelper.activateAt().
* platform/ios-simulator-wk2/TestExpectations:
* platform/ios-simulator/TestExpectations:</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkLayoutTestsChangeLog">trunk/LayoutTests/ChangeLog</a></li>
<li><a href="#trunkLayoutTestsfasteventscanclickelementonpagewithactivepseudoclassandsearchfieldhtml">trunk/LayoutTests/fast/events/can-click-element-on-page-with-active-pseudo-class-and-search-field.html</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatorTestExpectations">trunk/LayoutTests/platform/ios-simulator/TestExpectations</a></li>
<li><a href="#trunkLayoutTestsplatformiossimulatorwk2TestExpectations">trunk/LayoutTests/platform/ios-simulator-wk2/TestExpectations</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxycpp">trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxyh">trunk/Source/WebKit2/UIProcess/WebPageProxy.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessiosWKContentViewInteractionh">trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessiosWKContentViewInteractionmm">trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessiosWebPageProxyIOSmm">trunk/Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkLayoutTestsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/ChangeLog (213035 => 213036)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/ChangeLog        2017-02-27 07:59:12 UTC (rev 213035)
+++ trunk/LayoutTests/ChangeLog        2017-02-27 08:07:57 UTC (rev 213036)
</span><span class="lines">@@ -1,3 +1,18 @@
</span><ins>+2017-02-27 Andy Estes <aestes@apple.com>
+
+ Links cannot be activated when running Mobile Safari with external SDK build of WebKit for iOS Simulator
+ https://bugs.webkit.org/show_bug.cgi?id=141906
+
+ Reviewed by Tim Horton.
+
+ Unskipped tests that now pass. Rewrote a test to use UIHelper so that it works on both
+ DumpRenderTree and WebKitTestRunner.
+
+ * fast/events/can-click-element-on-page-with-active-pseudo-class-and-search-field.html:
+ Rewrote to use UIHelper.activateAt().
+ * platform/ios-simulator-wk2/TestExpectations:
+ * platform/ios-simulator/TestExpectations:
+
</ins><span class="cx"> 2017-02-26 Commit Queue <commit-queue@webkit.org>
</span><span class="cx">
</span><span class="cx"> Unreviewed, rolling out r212942.
</span></span></pre></div>
<a id="trunkLayoutTestsfasteventscanclickelementonpagewithactivepseudoclassandsearchfieldhtml"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/fast/events/can-click-element-on-page-with-active-pseudo-class-and-search-field.html (213035 => 213036)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/fast/events/can-click-element-on-page-with-active-pseudo-class-and-search-field.html        2017-02-27 07:59:12 UTC (rev 213035)
+++ trunk/LayoutTests/fast/events/can-click-element-on-page-with-active-pseudo-class-and-search-field.html        2017-02-27 08:07:57 UTC (rev 213036)
</span><span class="lines">@@ -2,6 +2,7 @@
</span><span class="cx"> <html>
</span><span class="cx"> <head>
</span><span class="cx"> <script src="../../resources/js-test-pre.js"></script>
</span><ins>+<script src="../../resources/ui-helper.js"></script>
</ins><span class="cx"> <style>
</span><span class="cx"> body:active {
</span><span class="cx"> /* Must be non-empty. */
</span><span class="lines">@@ -28,13 +29,7 @@
</span><span class="cx"> var square = iframe.contentDocument.getElementById("square");
</span><span class="cx"> var x = iframe.offsetLeft + square.offsetLeft + Math.floor(square.offsetWidth / 2);
</span><span class="cx"> var y = iframe.offsetTop + square.offsetTop + Math.floor(square.offsetHeight / 2);
</span><del>- if (testRunner.runUIScript && window.TouchEvent)
- testRunner.runUIScript("(function() { uiController.singleTapAtPoint(" + x + ", " + y + "); })()");
- else if (window.eventSender) {
- eventSender.mouseMoveTo(x, y);
- eventSender.mouseDown();
- eventSender.mouseUp();
- }
</del><ins>+ UIHelper.activateAt(x, y);
</ins><span class="cx"> }
</span><span class="cx"> </script>
</span><span class="cx"> </head>
</span></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatorTestExpectations"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/ios-simulator/TestExpectations (213035 => 213036)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator/TestExpectations        2017-02-27 07:59:12 UTC (rev 213035)
+++ trunk/LayoutTests/platform/ios-simulator/TestExpectations        2017-02-27 08:07:57 UTC (rev 213036)
</span><span class="lines">@@ -2430,8 +2430,6 @@
</span><span class="cx">
</span><span class="cx"> webkit.org/b/152442 fast/scrolling/rtl-point-in-iframe.html [ Skip ]
</span><span class="cx">
</span><del>-webkit.org/b/152449 fast/events/can-click-element-on-page-with-active-pseudo-class-and-search-field.html [ Skip ]
-
</del><span class="cx"> webkit.org/b/152701 fast/animation/request-animation-frame-disabled.html [ Skip ]
</span><span class="cx">
</span><span class="cx"> webkit.org/b/152282 css3/filters/composited-during-animation-layertree.html [ Failure ]
</span></span></pre></div>
<a id="trunkLayoutTestsplatformiossimulatorwk2TestExpectations"></a>
<div class="modfile"><h4>Modified: trunk/LayoutTests/platform/ios-simulator-wk2/TestExpectations (213035 => 213036)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/LayoutTests/platform/ios-simulator-wk2/TestExpectations        2017-02-27 07:59:12 UTC (rev 213035)
+++ trunk/LayoutTests/platform/ios-simulator-wk2/TestExpectations        2017-02-27 08:07:57 UTC (rev 213036)
</span><span class="lines">@@ -1759,13 +1759,10 @@
</span><span class="cx"> webkit.org/b/123431 http/tests/css/link-css-disabled-value-with-slow-loading-sheet.html [ Pass Failure ]
</span><span class="cx">
</span><span class="cx"> # eventSender.mouseDown is not implemented
</span><del>-fast/events/focusing-element-with-tabindex-by-tap-or-click.html [ Skip ]
</del><span class="cx"> fast/loader/location-hash-user-gesture.html [ Skip ]
</span><span class="cx"> imported/blink/editing/selection/selectstart-event-crash.html [ Skip ]
</span><span class="cx"> fast/dom/Window/post-message-user-action.html [ Skip ]
</span><span class="cx"> fast/images/image-usemap-parsing.html [ Skip ]
</span><del>-fast/shadow-dom/click-on-slotted-anchor-with-hover.html [ Skip ]
-fast/shadow-dom/click-text-inside-linked-slot.html [ Skip ]
</del><span class="cx"> fast/shadow-dom/fullscreen-in-shadow-fullscreenElement.html [ Skip ]
</span><span class="cx"> fast/shadow-dom/fullscreen-in-shadow-webkitCurrentFullScreenElement.html [ Skip ]
</span><span class="cx"> fast/shadow-dom/fullscreen-in-slot-fullscreenElement.html [ Skip ]
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (213035 => 213036)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2017-02-27 07:59:12 UTC (rev 213035)
+++ trunk/Source/WebKit2/ChangeLog        2017-02-27 08:07:57 UTC (rev 213036)
</span><span class="lines">@@ -1,3 +1,34 @@
</span><ins>+2017-02-27 Andy Estes <aestes@apple.com>
+
+ Links cannot be activated when running Mobile Safari with external SDK build of WebKit for iOS Simulator
+ https://bugs.webkit.org/show_bug.cgi?id=141906
+
+ Reviewed by Tim Horton.
+
+ Even if Touch Events are disabled, we still need to register a
+ UIWebTouchEventsGestureRecognizer to record the layer tree transaction ID when a touch
+ begins. Click events are only generated for touches that occur after the current frame's
+ load has committed, and we use the transaction ID from when the touch began to implement
+ this check.
+
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::handleTouchEventSynchronously):
+ (WebKit::WebPageProxy::resetState):
+ * UIProcess/WebPageProxy.h:
+ * UIProcess/ios/WKContentViewInteraction.h: Declared _layerTreeTransactionIdAtLastTouchStart.
+ * UIProcess/ios/WKContentViewInteraction.mm:
+ (-[WKContentView setupInteraction]): Register a UIWebTouchEventsGestureRecognizer even if
+ Touch Events are disabled.
+ (-[WKContentView cleanupInteraction]): Reset _layerTreeTransactionIdAtLastTouchStart to 0.
+ (-[WKContentView _webTouchEventsRecognized:]): Update _layerTreeTransactionIdAtLastTouchStart
+ when a touch begins, even if Touch Events are disabled.
+ (-[WKContentView _singleTapCommited:]): Passed _layerTreeTransactionIdAtLastTouchStart to
+ WebPageProxy::commitPotentialTap().
+ (-[WKContentView _attemptClickAtLocation:]): Ditto for WebPageProxy::handleTap().
+ * UIProcess/ios/WebPageProxyIOS.mm:
+ (WebKit::WebPageProxy::commitPotentialTap):
+ (WebKit::WebPageProxy::handleTap):
+
</ins><span class="cx"> 2017-02-26 Zan Dobersek <zdobersek@igalia.com>
</span><span class="cx">
</span><span class="cx"> [CoordinatedGraphics] Remove CoordinatedGraphicsScene::paintToGraphicsContext()
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (213035 => 213036)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp        2017-02-27 07:59:12 UTC (rev 213035)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp        2017-02-27 08:07:57 UTC (rev 213036)
</span><span class="lines">@@ -2154,10 +2154,8 @@
</span><span class="cx"> if (!isValid())
</span><span class="cx"> return;
</span><span class="cx">
</span><del>- if (event.type() == WebEvent::TouchStart) {
</del><ins>+ if (event.type() == WebEvent::TouchStart)
</ins><span class="cx"> updateTouchEventTracking(event);
</span><del>- m_layerTreeTransactionIdAtLastTouchStart = downcast<RemoteLayerTreeDrawingAreaProxy>(*drawingArea()).lastCommittedLayerTreeTransactionID();
- }
</del><span class="cx">
</span><span class="cx"> TrackingType touchEventsTrackingType = touchEventTrackingType(event);
</span><span class="cx"> if (touchEventsTrackingType == TrackingType::NotTracking)
</span><span class="lines">@@ -5401,7 +5399,6 @@
</span><span class="cx"> m_dynamicViewportSizeUpdateWaitingForTarget = false;
</span><span class="cx"> m_dynamicViewportSizeUpdateWaitingForLayerTreeCommit = false;
</span><span class="cx"> m_dynamicViewportSizeUpdateLayerTreeTransactionID = 0;
</span><del>- m_layerTreeTransactionIdAtLastTouchStart = 0;
</del><span class="cx"> m_hasNetworkRequestsOnSuspended = false;
</span><span class="cx"> m_isKeyboardAnimatingIn = false;
</span><span class="cx"> m_isScrollingOrZooming = false;
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (213035 => 213036)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2017-02-27 07:59:12 UTC (rev 213035)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2017-02-27 08:07:57 UTC (rev 213036)
</span><span class="lines">@@ -990,10 +990,10 @@
</span><span class="cx"> void willStartUserTriggeredZooming();
</span><span class="cx">
</span><span class="cx"> void potentialTapAtPosition(const WebCore::FloatPoint&, uint64_t& requestID);
</span><del>- void commitPotentialTap();
</del><ins>+ void commitPotentialTap(uint64_t layerTreeTransactionIdAtLastTouchStart);
</ins><span class="cx"> void cancelPotentialTap();
</span><span class="cx"> void tapHighlightAtPosition(const WebCore::FloatPoint&, uint64_t& requestID);
</span><del>- void handleTap(const WebCore::FloatPoint&);
</del><ins>+ void handleTap(const WebCore::FloatPoint&, uint64_t layerTreeTransactionIdAtLastTouchStart);
</ins><span class="cx">
</span><span class="cx"> void inspectorNodeSearchMovedToPosition(const WebCore::FloatPoint&);
</span><span class="cx"> void inspectorNodeSearchEndedAtPosition(const WebCore::FloatPoint&);
</span><span class="lines">@@ -1664,7 +1664,6 @@
</span><span class="cx"> bool m_dynamicViewportSizeUpdateWaitingForTarget { false };
</span><span class="cx"> bool m_dynamicViewportSizeUpdateWaitingForLayerTreeCommit { false };
</span><span class="cx"> uint64_t m_dynamicViewportSizeUpdateLayerTreeTransactionID { 0 };
</span><del>- uint64_t m_layerTreeTransactionIdAtLastTouchStart { 0 };
</del><span class="cx"> uint64_t m_currentDynamicViewportSizeUpdateID { 0 };
</span><span class="cx"> bool m_hasNetworkRequestsOnSuspended { false };
</span><span class="cx"> bool m_isKeyboardAnimatingIn { false };
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessiosWKContentViewInteractionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.h (213035 => 213036)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.h        2017-02-27 07:59:12 UTC (rev 213035)
+++ trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.h        2017-02-27 08:07:57 UTC (rev 213036)
</span><span class="lines">@@ -160,6 +160,7 @@
</span><span class="cx"> UIWKKeyWebEventCompletionHandler _keyWebEventHandler;
</span><span class="cx">
</span><span class="cx"> CGPoint _lastInteractionLocation;
</span><ins>+ uint64_t _layerTreeTransactionIdAtLastTouchStart;
</ins><span class="cx">
</span><span class="cx"> WebKit::WKSelectionDrawingInfo _lastSelectionDrawingInfo;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessiosWKContentViewInteractionmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm (213035 => 213036)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm        2017-02-27 07:59:12 UTC (rev 213035)
+++ trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm        2017-02-27 08:07:57 UTC (rev 213036)
</span><span class="lines">@@ -34,6 +34,7 @@
</span><span class="cx"> #import "ManagedConfigurationSPI.h"
</span><span class="cx"> #import "NativeWebKeyboardEvent.h"
</span><span class="cx"> #import "NativeWebTouchEvent.h"
</span><ins>+#import "RemoteLayerTreeDrawingAreaProxy.h"
</ins><span class="cx"> #import "SmartMagnificationController.h"
</span><span class="cx"> #import "TextInputSPI.h"
</span><span class="cx"> #import "UIKitSPI.h"
</span><span class="lines">@@ -524,11 +525,9 @@
</span><span class="cx">
</span><span class="cx"> [self.layer addObserver:self forKeyPath:@"transform" options:NSKeyValueObservingOptionInitial context:nil];
</span><span class="cx">
</span><del>-#if ENABLE(TOUCH_EVENTS)
</del><span class="cx"> _touchEventGestureRecognizer = adoptNS([[UIWebTouchEventsGestureRecognizer alloc] initWithTarget:self action:@selector(_webTouchEventsRecognized:) touchDelegate:self]);
</span><span class="cx"> [_touchEventGestureRecognizer setDelegate:self];
</span><span class="cx"> [self addGestureRecognizer:_touchEventGestureRecognizer.get()];
</span><del>-#endif
</del><span class="cx">
</span><span class="cx"> _singleTapGestureRecognizer = adoptNS([[WKSyntheticClickTapGestureRecognizer alloc] initWithTarget:self action:@selector(_singleTapCommited:)]);
</span><span class="cx"> [_singleTapGestureRecognizer setDelegate:self];
</span><span class="lines">@@ -636,6 +635,8 @@
</span><span class="cx"> [_twoFingerSingleTapGestureRecognizer setDelegate:nil];
</span><span class="cx"> [self removeGestureRecognizer:_twoFingerSingleTapGestureRecognizer.get()];
</span><span class="cx">
</span><ins>+ _layerTreeTransactionIdAtLastTouchStart = 0;
+
</ins><span class="cx"> #if ENABLE(DATA_INTERACTION)
</span><span class="cx"> [self teardownDataInteractionDelegates];
</span><span class="cx"> _isPerformingDataInteractionOperation = NO;
</span><span class="lines">@@ -858,13 +859,16 @@
</span><span class="cx"> return superDidResign;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-#if ENABLE(TOUCH_EVENTS)
</del><span class="cx"> - (void)_webTouchEventsRecognized:(UIWebTouchEventsGestureRecognizer *)gestureRecognizer
</span><span class="cx"> {
</span><span class="cx"> const _UIWebTouchEvent* lastTouchEvent = gestureRecognizer.lastTouchEvent;
</span><del>- NativeWebTouchEvent nativeWebTouchEvent(lastTouchEvent);
</del><span class="cx">
</span><span class="cx"> _lastInteractionLocation = lastTouchEvent->locationInDocumentCoordinates;
</span><ins>+ if (lastTouchEvent->type == UIWebTouchEventTouchBegin)
+ _layerTreeTransactionIdAtLastTouchStart = downcast<RemoteLayerTreeDrawingAreaProxy>(*_page->drawingArea()).lastCommittedLayerTreeTransactionID();
+
+#if ENABLE(TOUCH_EVENTS)
+ NativeWebTouchEvent nativeWebTouchEvent(lastTouchEvent);
</ins><span class="cx"> nativeWebTouchEvent.setCanPreventNativeGestures(!_canSendTouchEventsAsynchronously || [gestureRecognizer isDefaultPrevented]);
</span><span class="cx">
</span><span class="cx"> if (_canSendTouchEventsAsynchronously)
</span><span class="lines">@@ -874,8 +878,8 @@
</span><span class="cx">
</span><span class="cx"> if (nativeWebTouchEvent.allTouchPointsAreReleased())
</span><span class="cx"> _canSendTouchEventsAsynchronously = NO;
</span><ins>+#endif
</ins><span class="cx"> }
</span><del>-#endif
</del><span class="cx">
</span><span class="cx"> - (void)_inspectorNodeSearchRecognized:(UIGestureRecognizer *)gestureRecognizer
</span><span class="cx"> {
</span><span class="lines">@@ -1637,7 +1641,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> [_inputPeripheral endEditing];
</span><del>- _page->commitPotentialTap();
</del><ins>+ _page->commitPotentialTap(_layerTreeTransactionIdAtLastTouchStart);
</ins><span class="cx">
</span><span class="cx"> if (!_isExpectingFastSingleTapCommit)
</span><span class="cx"> [self _finishInteraction];
</span><span class="lines">@@ -1676,7 +1680,7 @@
</span><span class="cx"> [self becomeFirstResponder];
</span><span class="cx">
</span><span class="cx"> [_inputPeripheral endEditing];
</span><del>- _page->handleTap(location);
</del><ins>+ _page->handleTap(location, _layerTreeTransactionIdAtLastTouchStart);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> - (void)useSelectionAssistantWithMode:(UIWebSelectionMode)selectionMode
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessiosWebPageProxyIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm (213035 => 213036)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm        2017-02-27 07:59:12 UTC (rev 213035)
+++ trunk/Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm        2017-02-27 08:07:57 UTC (rev 213036)
</span><span class="lines">@@ -839,9 +839,9 @@
</span><span class="cx"> process().send(Messages::WebPage::PotentialTapAtPosition(requestID, position), m_pageID);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void WebPageProxy::commitPotentialTap()
</del><ins>+void WebPageProxy::commitPotentialTap(uint64_t layerTreeTransactionIdAtLastTouchStart)
</ins><span class="cx"> {
</span><del>- process().send(Messages::WebPage::CommitPotentialTap(m_layerTreeTransactionIdAtLastTouchStart), m_pageID);
</del><ins>+ process().send(Messages::WebPage::CommitPotentialTap(layerTreeTransactionIdAtLastTouchStart), m_pageID);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WebPageProxy::cancelPotentialTap()
</span><span class="lines">@@ -854,9 +854,9 @@
</span><span class="cx"> process().send(Messages::WebPage::TapHighlightAtPosition(requestID, position), m_pageID);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void WebPageProxy::handleTap(const FloatPoint& location)
</del><ins>+void WebPageProxy::handleTap(const FloatPoint& location, uint64_t layerTreeTransactionIdAtLastTouchStart)
</ins><span class="cx"> {
</span><del>- process().send(Messages::WebPage::HandleTap(roundedIntPoint(location), m_layerTreeTransactionIdAtLastTouchStart), m_pageID);
</del><ins>+ process().send(Messages::WebPage::HandleTap(roundedIntPoint(location), layerTreeTransactionIdAtLastTouchStart), m_pageID);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void WebPageProxy::inspectorNodeSearchMovedToPosition(const WebCore::FloatPoint& position)
</span></span></pre>
</div>
</div>
</body>
</html>