<!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>[170445] trunk/Source</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/170445">170445</a></dd>
<dt>Author</dt> <dd>commit-queue@webkit.org</dd>
<dt>Date</dt> <dd>2014-06-25 16:13:24 -0700 (Wed, 25 Jun 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>[iOS]: WK2 Inspector Node Search
https://bugs.webkit.org/show_bug.cgi?id=134279

Patch by Joseph Pecoraro &lt;pecoraro@apple.com&gt; on 2014-06-25
Reviewed by Benjamin Poulain.

Source/WebCore:
* WebCore.exp.in:
Export Node::inspect for WebKit2.

Source/WebKit2:
* UIProcess/ios/WKInspectorNodeSearchGestureRecognizer.h: Added.
* UIProcess/ios/WKInspectorNodeSearchGestureRecognizer.mm: Added.
(-[WKInspectorNodeSearchGestureRecognizer locationInView:]):
(-[WKInspectorNodeSearchGestureRecognizer _processTouches:state:]):
(-[WKInspectorNodeSearchGestureRecognizer touchesBegan:withEvent:]):
(-[WKInspectorNodeSearchGestureRecognizer touchesMoved:withEvent:]):
(-[WKInspectorNodeSearchGestureRecognizer touchesEnded:withEvent:]):
(-[WKInspectorNodeSearchGestureRecognizer touchesCancelled:withEvent:]):
(-[WKInspectorNodeSearchGestureRecognizer reset]):
Gesture recognizer that tracks a single touch, updates as that touch
moves, and ends when that touch is cancelled or ends. The location
of the gesture recognizer is the location of the touch it was tracking.

* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView cleanupInteraction]):
Handle the inspector node search gesture recognizer if needed.

(-[WKContentView _removeDefaultGestureRecognizers]):
(-[WKContentView _addDefaultGestureRecognizers]):
Helpers to add and remove the default gestures.

(-[WKContentView _enableInspectorNodeSearch]):
(-[WKContentView _disableInspectorNodeSearch]):
When node search is enabled, remove all gesture recognizers and
replace with a single inspector node search gesture recognizer.
Likewise, inverse that when disabled.

(-[WKContentView _inspectorNodeSearchRecognized:]):
Notify the WebProcess of new touch positions during node search.

(-[WKContentView hasSelectablePositionAtPoint:]):
When inspector node search is enabled, disable selection.

* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::inspectorNodeSearchMovedToPosition):
Send a mouse move to the new location. WebCore will update the highlight.

(WebKit::WebPage::inspectorNodeSearchEndedAtPosition):
Inspect the node at the location.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _enableInspectorNodeSearch]):
(-[WKWebView _disableInspectorNodeSearch]):
* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::enableInspectorNodeSearch):
(WebKit::PageClientImpl::disableInspectorNodeSearch):
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::inspectorNodeSearchMovedToPosition):
(WebKit::WebPageProxy::inspectorNodeSearchEndedAtPosition):
(WebKit::WebPageProxy::enableInspectorNodeSearch):
(WebKit::WebPageProxy::disableInspectorNodeSearch):
* WebKit2.xcodeproj/project.pbxproj:
* WebProcess/WebCoreSupport/WebInspectorClient.cpp:
(WebKit::WebInspectorClient::didSetSearchingForNode):
* WebProcess/WebCoreSupport/WebInspectorClient.h:
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::enableInspectorNodeSearch):
(WebKit::WebPage::disableInspectorNodeSearch):
Pass the inspector node search state up from the WebProcess
to the WKContentView in the UIProcess. Likewise some messages
in the reverse direction.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreWebCoreexpin">trunk/Source/WebCore/WebCore.exp.in</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICocoaWKWebViewmm">trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICocoaWKWebViewInternalh">trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewInternal.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICocoaWKWebViewPrivateh">trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessPageClienth">trunk/Source/WebKit2/UIProcess/PageClient.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxyh">trunk/Source/WebKit2/UIProcess/WebPageProxy.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxymessagesin">trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in</a></li>
<li><a href="#trunkSourceWebKit2UIProcessiosPageClientImplIOSh">trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessiosPageClientImplIOSmm">trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessiosWKContentViewmm">trunk/Source/WebKit2/UIProcess/ios/WKContentView.mm</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>
<li><a href="#trunkSourceWebKit2WebKit2xcodeprojprojectpbxproj">trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebCoreSupportWebInspectorClientcpp">trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebInspectorClient.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebCoreSupportWebInspectorClienth">trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebInspectorClient.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPageh">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPagemessagesin">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageiosWebPageIOSmm">trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceWebKit2UIProcessiosWKInspectorNodeSearchGestureRecognizerh">trunk/Source/WebKit2/UIProcess/ios/WKInspectorNodeSearchGestureRecognizer.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessiosWKInspectorNodeSearchGestureRecognizermm">trunk/Source/WebKit2/UIProcess/ios/WKInspectorNodeSearchGestureRecognizer.mm</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (170444 => 170445)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-06-25 22:58:01 UTC (rev 170444)
+++ trunk/Source/WebCore/ChangeLog        2014-06-25 23:13:24 UTC (rev 170445)
</span><span class="lines">@@ -1,3 +1,13 @@
</span><ins>+2014-06-25  Joseph Pecoraro  &lt;pecoraro@apple.com&gt;
+
+        [iOS]: WK2 Inspector Node Search
+        https://bugs.webkit.org/show_bug.cgi?id=134279
+
+        Reviewed by Benjamin Poulain.
+
+        * WebCore.exp.in:
+        Export Node::inspect for WebKit2.
+
</ins><span class="cx"> 2014-06-25  Dana Burkart  &lt;dburkart@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Add support for 5-tuple versioning.
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCoreexpin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.exp.in (170444 => 170445)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.exp.in        2014-06-25 22:58:01 UTC (rev 170444)
+++ trunk/Source/WebCore/WebCore.exp.in        2014-06-25 23:13:24 UTC (rev 170445)
</span><span class="lines">@@ -3152,6 +3152,7 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(INSPECTOR) &amp;&amp; PLATFORM(IOS)
</span><span class="cx"> __ZN7WebCore16findIntersectionERKNS_10FloatPointES2_S2_S2_RS0_
</span><ins>+__ZN7WebCore4Node7inspectEv
</ins><span class="cx"> __ZNK7WebCore9FloatQuad12containsQuadERKS0_
</span><span class="cx"> __ZNK7WebCore9FloatQuad13containsPointERKNS_10FloatPointE
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (170444 => 170445)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2014-06-25 22:58:01 UTC (rev 170444)
+++ trunk/Source/WebKit2/ChangeLog        2014-06-25 23:13:24 UTC (rev 170445)
</span><span class="lines">@@ -1,3 +1,80 @@
</span><ins>+2014-06-25  Joseph Pecoraro  &lt;pecoraro@apple.com&gt;
+
+        [iOS]: WK2 Inspector Node Search
+        https://bugs.webkit.org/show_bug.cgi?id=134279
+
+        Reviewed by Benjamin Poulain.
+
+        * UIProcess/ios/WKInspectorNodeSearchGestureRecognizer.h: Added.
+        * UIProcess/ios/WKInspectorNodeSearchGestureRecognizer.mm: Added.
+        (-[WKInspectorNodeSearchGestureRecognizer locationInView:]):
+        (-[WKInspectorNodeSearchGestureRecognizer _processTouches:state:]):
+        (-[WKInspectorNodeSearchGestureRecognizer touchesBegan:withEvent:]):
+        (-[WKInspectorNodeSearchGestureRecognizer touchesMoved:withEvent:]):
+        (-[WKInspectorNodeSearchGestureRecognizer touchesEnded:withEvent:]):
+        (-[WKInspectorNodeSearchGestureRecognizer touchesCancelled:withEvent:]):
+        (-[WKInspectorNodeSearchGestureRecognizer reset]):
+        Gesture recognizer that tracks a single touch, updates as that touch
+        moves, and ends when that touch is cancelled or ends. The location
+        of the gesture recognizer is the location of the touch it was tracking.
+
+        * UIProcess/ios/WKContentViewInteraction.h:
+        * UIProcess/ios/WKContentViewInteraction.mm:
+        (-[WKContentView cleanupInteraction]):
+        Handle the inspector node search gesture recognizer if needed.
+
+        (-[WKContentView _removeDefaultGestureRecognizers]):
+        (-[WKContentView _addDefaultGestureRecognizers]):
+        Helpers to add and remove the default gestures.
+
+        (-[WKContentView _enableInspectorNodeSearch]):
+        (-[WKContentView _disableInspectorNodeSearch]):
+        When node search is enabled, remove all gesture recognizers and
+        replace with a single inspector node search gesture recognizer.
+        Likewise, inverse that when disabled.
+
+        (-[WKContentView _inspectorNodeSearchRecognized:]):
+        Notify the WebProcess of new touch positions during node search.
+
+        (-[WKContentView hasSelectablePositionAtPoint:]):
+        When inspector node search is enabled, disable selection.
+
+        * WebProcess/WebPage/ios/WebPageIOS.mm:
+        (WebKit::WebPage::inspectorNodeSearchMovedToPosition):
+        Send a mouse move to the new location. WebCore will update the highlight.
+
+        (WebKit::WebPage::inspectorNodeSearchEndedAtPosition):
+        Inspect the node at the location.
+
+        * UIProcess/API/Cocoa/WKWebView.mm:
+        (-[WKWebView _enableInspectorNodeSearch]):
+        (-[WKWebView _disableInspectorNodeSearch]):
+        * UIProcess/API/Cocoa/WKWebViewInternal.h:
+        * UIProcess/PageClient.h:
+        * UIProcess/WebPageProxy.h:
+        * UIProcess/WebPageProxy.messages.in:
+        * UIProcess/ios/PageClientImplIOS.h:
+        * UIProcess/ios/PageClientImplIOS.mm:
+        (WebKit::PageClientImpl::enableInspectorNodeSearch):
+        (WebKit::PageClientImpl::disableInspectorNodeSearch):
+        * UIProcess/ios/WebPageProxyIOS.mm:
+        (WebKit::WebPageProxy::inspectorNodeSearchMovedToPosition):
+        (WebKit::WebPageProxy::inspectorNodeSearchEndedAtPosition):
+        (WebKit::WebPageProxy::enableInspectorNodeSearch):
+        (WebKit::WebPageProxy::disableInspectorNodeSearch):
+        * WebKit2.xcodeproj/project.pbxproj:
+        * WebProcess/WebCoreSupport/WebInspectorClient.cpp:
+        (WebKit::WebInspectorClient::didSetSearchingForNode):
+        * WebProcess/WebCoreSupport/WebInspectorClient.h:
+        * WebProcess/WebPage/WebPage.h:
+        * WebProcess/WebPage/WebPage.messages.in:
+        * WebProcess/WebPage/ios/WebPageIOS.mm:
+        (WebKit::WebPage::enableInspectorNodeSearch):
+        (WebKit::WebPage::disableInspectorNodeSearch):
+        Pass the inspector node search state up from the WebProcess
+        to the WKContentView in the UIProcess. Likewise some messages
+        in the reverse direction.
+
</ins><span class="cx"> 2014-06-25  Dana Burkart  &lt;dburkart@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Add support for 5-tuple versioning.
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICocoaWKWebViewmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm (170444 => 170445)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm        2014-06-25 22:58:01 UTC (rev 170444)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm        2014-06-25 23:13:24 UTC (rev 170445)
</span><span class="lines">@@ -640,16 +640,6 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (void)_showInspectorHighlight:(const WebCore::Highlight&amp;)highlight
-{
-    [_contentView _showInspectorHighlight:highlight];
-}
-
-- (void)_hideInspectorHighlight
-{
-    [_contentView _hideInspectorHighlight];
-}
-
</del><span class="cx"> static CGFloat contentZoomScale(WKWebView* webView)
</span><span class="cx"> {
</span><span class="cx">     UIView *zoomView;
</span><span class="lines">@@ -2147,16 +2137,6 @@
</span><span class="cx">     [self _updateVisibleContentRects];
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-- (void)_showInspectorIndication
-{
-    [_contentView setShowingInspectorIndication:YES];
-}
-
-- (void)_hideInspectorIndication
-{
-    [_contentView setShowingInspectorIndication:NO];
-}
-
</del><span class="cx"> - (void)_setOverlaidAccessoryViewsInset:(CGSize)inset
</span><span class="cx"> {
</span><span class="cx">     [_customContentView web_setOverlaidAccessoryViewsInset:inset];
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICocoaWKWebViewInternalh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewInternal.h (170444 => 170445)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewInternal.h        2014-06-25 22:58:01 UTC (rev 170444)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewInternal.h        2014-06-25 23:13:24 UTC (rev 170445)
</span><span class="lines">@@ -93,13 +93,9 @@
</span><span class="cx"> - (void)_willInvokeUIScrollViewDelegateCallback;
</span><span class="cx"> - (void)_didInvokeUIScrollViewDelegateCallback;
</span><span class="cx"> 
</span><del>-- (void)_showInspectorHighlight:(const WebCore::Highlight&amp;)highlight;
-- (void)_hideInspectorHighlight;
-
</del><span class="cx"> - (void)_updateVisibleContentRects;
</span><span class="cx"> 
</span><span class="cx"> @property (nonatomic, readonly) UIEdgeInsets _computedContentInset;
</span><del>-
</del><span class="cx"> #endif
</span><span class="cx"> @end
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICocoaWKWebViewPrivateh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h (170444 => 170445)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h        2014-06-25 22:58:01 UTC (rev 170444)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewPrivate.h        2014-06-25 23:13:24 UTC (rev 170445)
</span><span class="lines">@@ -131,9 +131,6 @@
</span><span class="cx"> - (void)_beginAnimatedResizeWithUpdates:(void (^)(void))updateBlock;
</span><span class="cx"> - (void)_endAnimatedResize;
</span><span class="cx"> 
</span><del>-- (void)_showInspectorIndication;
-- (void)_hideInspectorIndication;
-
</del><span class="cx"> - (void)_snapshotRect:(CGRect)rectInViewCoordinates intoImageOfWidth:(CGFloat)imageWidth completionHandler:(void(^)(CGImageRef))completionHandler;
</span><span class="cx"> 
</span><span class="cx"> - (void)_overrideLayoutParametersWithMinimumLayoutSize:(CGSize)minimumLayoutSize minimumLayoutSizeForMinimalUI:(CGSize)minimumLayoutSizeForMinimalUI maximumUnobscuredSizeOverride:(CGSize)maximumUnobscuredSizeOverride;
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessPageClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/PageClient.h (170444 => 170445)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/PageClient.h        2014-06-25 22:58:01 UTC (rev 170444)
+++ trunk/Source/WebKit2/UIProcess/PageClient.h        2014-06-25 23:13:24 UTC (rev 170445)
</span><span class="lines">@@ -276,6 +276,9 @@
</span><span class="cx"> 
</span><span class="cx">     virtual void showInspectorIndication() = 0;
</span><span class="cx">     virtual void hideInspectorIndication() = 0;
</span><ins>+
+    virtual void enableInspectorNodeSearch() = 0;
+    virtual void disableInspectorNodeSearch() = 0;
</ins><span class="cx"> #endif
</span><span class="cx"> #endif
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (170444 => 170445)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2014-06-25 22:58:01 UTC (rev 170444)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2014-06-25 23:13:24 UTC (rev 170445)
</span><span class="lines">@@ -845,6 +845,9 @@
</span><span class="cx">     void cancelPotentialTap();
</span><span class="cx">     void tapHighlightAtPosition(const WebCore::FloatPoint&amp;, uint64_t&amp; requestID);
</span><span class="cx"> 
</span><ins>+    void inspectorNodeSearchMovedToPosition(const WebCore::FloatPoint&amp;);
+    void inspectorNodeSearchEndedAtPosition(const WebCore::FloatPoint&amp;);
+
</ins><span class="cx">     void blurAssistedNode();
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -1212,6 +1215,9 @@
</span><span class="cx"> 
</span><span class="cx">     void showInspectorIndication();
</span><span class="cx">     void hideInspectorIndication();
</span><ins>+
+    void enableInspectorNodeSearch();
+    void disableInspectorNodeSearch();
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     void notifyRevealedSelection();
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxymessagesin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in (170444 => 170445)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in        2014-06-25 22:58:01 UTC (rev 170444)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in        2014-06-25 23:13:24 UTC (rev 170445)
</span><span class="lines">@@ -347,6 +347,9 @@
</span><span class="cx"> 
</span><span class="cx">     ShowInspectorIndication()
</span><span class="cx">     HideInspectorIndication()
</span><ins>+
+    EnableInspectorNodeSearch()
+    DisableInspectorNodeSearch()
</ins><span class="cx"> #endif
</span><span class="cx"> #endif
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessiosPageClientImplIOSh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.h (170444 => 170445)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.h        2014-06-25 22:58:01 UTC (rev 170444)
+++ trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.h        2014-06-25 23:13:24 UTC (rev 170445)
</span><span class="lines">@@ -137,6 +137,9 @@
</span><span class="cx"> 
</span><span class="cx">     virtual void showInspectorIndication() override;
</span><span class="cx">     virtual void hideInspectorIndication() override;
</span><ins>+
+    virtual void enableInspectorNodeSearch() override;
+    virtual void disableInspectorNodeSearch() override;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     virtual void zoomToRect(WebCore::FloatRect, double minimumScale, double maximumScale) override;
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessiosPageClientImplIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.mm (170444 => 170445)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.mm        2014-06-25 22:58:01 UTC (rev 170444)
+++ trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.mm        2014-06-25 23:13:24 UTC (rev 170445)
</span><span class="lines">@@ -487,23 +487,33 @@
</span><span class="cx"> #if ENABLE(INSPECTOR)
</span><span class="cx"> void PageClientImpl::showInspectorHighlight(const WebCore::Highlight&amp; highlight)
</span><span class="cx"> {
</span><del>-    [m_webView _showInspectorHighlight:highlight];
</del><ins>+    [m_contentView _showInspectorHighlight:highlight];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void PageClientImpl::hideInspectorHighlight()
</span><span class="cx"> {
</span><del>-    [m_webView _hideInspectorHighlight];
</del><ins>+    [m_contentView _hideInspectorHighlight];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void PageClientImpl::showInspectorIndication()
</span><span class="cx"> {
</span><del>-    [m_webView _showInspectorIndication];
</del><ins>+    [m_contentView setShowingInspectorIndication:YES];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void PageClientImpl::hideInspectorIndication()
</span><span class="cx"> {
</span><del>-    [m_webView _hideInspectorIndication];
</del><ins>+    [m_contentView setShowingInspectorIndication:NO];
</ins><span class="cx"> }
</span><ins>+
+void PageClientImpl::enableInspectorNodeSearch()
+{
+    [m_contentView _enableInspectorNodeSearch];
+}
+
+void PageClientImpl::disableInspectorNodeSearch()
+{
+    [m_contentView _disableInspectorNodeSearch];
+}
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(FULLSCREEN_API)
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessiosWKContentViewmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/ios/WKContentView.mm (170444 => 170445)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/ios/WKContentView.mm        2014-06-25 22:58:01 UTC (rev 170444)
+++ trunk/Source/WebKit2/UIProcess/ios/WKContentView.mm        2014-06-25 23:13:24 UTC (rev 170445)
</span><span class="lines">@@ -643,6 +643,9 @@
</span><span class="cx"> - (void)_processDidExit
</span><span class="cx"> {
</span><span class="cx">     [self cleanupInteraction];
</span><ins>+
+    [self setShowingInspectorIndication:NO];
+    [self _hideInspectorHighlight];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)_didRelaunchProcess
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessiosWKContentViewInteractionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.h (170444 => 170445)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.h        2014-06-25 22:58:01 UTC (rev 170444)
+++ trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.h        2014-06-25 23:13:24 UTC (rev 170445)
</span><span class="lines">@@ -62,6 +62,7 @@
</span><span class="cx"> 
</span><span class="cx"> @class WKActionSheetAssistant;
</span><span class="cx"> @class WKFormInputSession;
</span><ins>+@class WKInspectorNodeSearchGestureRecognizer;
</ins><span class="cx"> @class WebIOSEvent;
</span><span class="cx"> @class _UIHighlightView;
</span><span class="cx"> @class _UIWebHighlightLongPressGestureRecognizer;
</span><span class="lines">@@ -92,6 +93,7 @@
</span><span class="cx">     RetainPtr&lt;UILongPressGestureRecognizer&gt; _longPressGestureRecognizer;
</span><span class="cx">     RetainPtr&lt;UITapGestureRecognizer&gt; _doubleTapGestureRecognizer;
</span><span class="cx">     RetainPtr&lt;UITapGestureRecognizer&gt; _twoFingerDoubleTapGestureRecognizer;
</span><ins>+    RetainPtr&lt;WKInspectorNodeSearchGestureRecognizer&gt; _inspectorNodeSearchGestureRecognizer;
</ins><span class="cx"> 
</span><span class="cx">     RetainPtr&lt;UIWKTextInteractionAssistant&gt; _textSelectionAssistant;
</span><span class="cx">     RetainPtr&lt;UIWKSelectionAssistant&gt; _webSelectionAssistant;
</span><span class="lines">@@ -136,6 +138,7 @@
</span><span class="cx">     BOOL _potentialTapInProgress;
</span><span class="cx">     BOOL _selectionNeedsUpdate;
</span><span class="cx">     BOOL _usingGestureForSelection;
</span><ins>+    BOOL _inspectorNodeSearchEnabled;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> @end
</span><span class="lines">@@ -176,6 +179,8 @@
</span><span class="cx"> - (void)_didHandleKeyEvent:(WebIOSEvent *)event;
</span><span class="cx"> - (Vector&lt;WebKit::OptionItem&gt;&amp;) assistedNodeSelectOptions;
</span><span class="cx"> - (void)_updateUnscaledView;
</span><ins>+- (void)_enableInspectorNodeSearch;
+- (void)_disableInspectorNodeSearch;
</ins><span class="cx"> @end
</span><span class="cx"> 
</span><span class="cx"> #endif // PLATFORM(IOS)
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessiosWKContentViewInteractionmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm (170444 => 170445)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm        2014-06-25 22:58:01 UTC (rev 170444)
+++ trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm        2014-06-25 23:13:24 UTC (rev 170445)
</span><span class="lines">@@ -35,6 +35,7 @@
</span><span class="cx"> #import &quot;WKActionSheetAssistant.h&quot;
</span><span class="cx"> #import &quot;WKFormInputControl.h&quot;
</span><span class="cx"> #import &quot;WKFormSelectControl.h&quot;
</span><ins>+#import &quot;WKInspectorNodeSearchGestureRecognizer.h&quot;
</ins><span class="cx"> #import &quot;WKWebViewPrivate.h&quot;
</span><span class="cx"> #import &quot;WebEvent.h&quot;
</span><span class="cx"> #import &quot;WebIOSEventFactory.h&quot;
</span><span class="lines">@@ -273,6 +274,13 @@
</span><span class="cx">     [_twoFingerDoubleTapGestureRecognizer setDelegate:nil];
</span><span class="cx">     [self removeGestureRecognizer:_twoFingerDoubleTapGestureRecognizer.get()];
</span><span class="cx"> 
</span><ins>+    _inspectorNodeSearchEnabled = NO;
+    if (_inspectorNodeSearchGestureRecognizer) {
+        [_inspectorNodeSearchGestureRecognizer setDelegate:nil];
+        [self removeGestureRecognizer:_inspectorNodeSearchGestureRecognizer.get()];
+        _inspectorNodeSearchGestureRecognizer = nil;
+    }
+
</ins><span class="cx">     if (_fileUploadPanel) {
</span><span class="cx">         [_fileUploadPanel setDelegate:nil];
</span><span class="cx">         [_fileUploadPanel dismiss];
</span><span class="lines">@@ -280,6 +288,26 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+- (void)_removeDefaultGestureRecognizers
+{
+    [self removeGestureRecognizer:_touchEventGestureRecognizer.get()];
+    [self removeGestureRecognizer:_singleTapGestureRecognizer.get()];
+    [self removeGestureRecognizer:_highlightLongPressGestureRecognizer.get()];
+    [self removeGestureRecognizer:_longPressGestureRecognizer.get()];
+    [self removeGestureRecognizer:_doubleTapGestureRecognizer.get()];
+    [self removeGestureRecognizer:_twoFingerDoubleTapGestureRecognizer.get()];
+}
+
+- (void)_addDefaultGestureRecognizers
+{
+    [self addGestureRecognizer:_touchEventGestureRecognizer.get()];
+    [self addGestureRecognizer:_singleTapGestureRecognizer.get()];
+    [self addGestureRecognizer:_highlightLongPressGestureRecognizer.get()];
+    [self addGestureRecognizer:_longPressGestureRecognizer.get()];
+    [self addGestureRecognizer:_doubleTapGestureRecognizer.get()];
+    [self addGestureRecognizer:_twoFingerDoubleTapGestureRecognizer.get()];
+}
+
</ins><span class="cx"> - (UIView*)unscaledView
</span><span class="cx"> {
</span><span class="cx">     return _inverseScaleRootView.get();
</span><span class="lines">@@ -298,6 +326,26 @@
</span><span class="cx">     [self _updateChangedSelection];
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+- (void)_enableInspectorNodeSearch
+{
+    _inspectorNodeSearchEnabled = YES;
+
+    [self _cancelInteraction];
+
+    [self _removeDefaultGestureRecognizers];
+    _inspectorNodeSearchGestureRecognizer = adoptNS([[WKInspectorNodeSearchGestureRecognizer alloc] initWithTarget:self action:@selector(_inspectorNodeSearchRecognized:)]);
+    [self addGestureRecognizer:_inspectorNodeSearchGestureRecognizer.get()];
+}
+
+- (void)_disableInspectorNodeSearch
+{
+    _inspectorNodeSearchEnabled = NO;
+
+    [self _addDefaultGestureRecognizers];
+    [self removeGestureRecognizer:_inspectorNodeSearchGestureRecognizer.get()];
+    _inspectorNodeSearchGestureRecognizer = nil;
+}
+
</ins><span class="cx"> - (UIView *)hitTest:(CGPoint)point withEvent:(::UIEvent *)event
</span><span class="cx"> {
</span><span class="cx">     for (UIView *subView in [_inverseScaleRootView.get() subviews]) {
</span><span class="lines">@@ -370,6 +418,25 @@
</span><span class="cx">         _canSendTouchEventsAsynchronously = NO;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+- (void)_inspectorNodeSearchRecognized:(UIGestureRecognizer *)gestureRecognizer
+{
+    ASSERT(_inspectorNodeSearchEnabled);
+
+    CGPoint point = [gestureRecognizer locationInView:self];
+
+    switch (gestureRecognizer.state) {
+    case UIGestureRecognizerStateBegan:
+    case UIGestureRecognizerStateChanged:
+        _page-&gt;inspectorNodeSearchMovedToPosition(point);
+        break;
+    case UIGestureRecognizerStateEnded:
+    case UIGestureRecognizerStateCancelled:
+    default: // To ensure we turn off node search.
+        _page-&gt;inspectorNodeSearchEndedAtPosition(point);
+        break;
+    }
+}
+
</ins><span class="cx"> static FloatQuad inflateQuad(const FloatQuad&amp; quad, float inflateSize)
</span><span class="cx"> {
</span><span class="cx">     // We sort the output points like this (as expected by the highlight view):
</span><span class="lines">@@ -734,6 +801,9 @@
</span><span class="cx"> 
</span><span class="cx"> - (BOOL)hasSelectablePositionAtPoint:(CGPoint)point
</span><span class="cx"> {
</span><ins>+    if (_inspectorNodeSearchEnabled)
+        return NO;
+
</ins><span class="cx">     [self ensurePositionInformationIsUpToDate:point];
</span><span class="cx">     return _positionInformation.isSelectable;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessiosWKInspectorNodeSearchGestureRecognizerh"></a>
<div class="addfile"><h4>Added: trunk/Source/WebKit2/UIProcess/ios/WKInspectorNodeSearchGestureRecognizer.h (0 => 170445)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/ios/WKInspectorNodeSearchGestureRecognizer.h                                (rev 0)
+++ trunk/Source/WebKit2/UIProcess/ios/WKInspectorNodeSearchGestureRecognizer.h        2014-06-25 23:13:24 UTC (rev 170445)
</span><span class="lines">@@ -0,0 +1,34 @@
</span><ins>+/*
+ * Copyright (C) 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#if PLATFORM(IOS)
+
+#import &lt;UIKit/UIGestureRecognizer.h&gt;
+
+@interface WKInspectorNodeSearchGestureRecognizer : UIGestureRecognizer
+- (CGPoint)locationInView:(UIView *)view;
+@end
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebKit2UIProcessiosWKInspectorNodeSearchGestureRecognizermm"></a>
<div class="addfile"><h4>Added: trunk/Source/WebKit2/UIProcess/ios/WKInspectorNodeSearchGestureRecognizer.mm (0 => 170445)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/ios/WKInspectorNodeSearchGestureRecognizer.mm                                (rev 0)
+++ trunk/Source/WebKit2/UIProcess/ios/WKInspectorNodeSearchGestureRecognizer.mm        2014-06-25 23:13:24 UTC (rev 170445)
</span><span class="lines">@@ -0,0 +1,83 @@
</span><ins>+/*
+ * Copyright (C) 2014 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import &quot;config.h&quot;
+#import &quot;WKInspectorNodeSearchGestureRecognizer.h&quot;
+
+#if PLATFORM(IOS)
+
+#import &lt;UIKit/UIGestureRecognizerSubclass.h&gt;
+#import &lt;wtf/RetainPtr.h&gt;
+
+@implementation WKInspectorNodeSearchGestureRecognizer {
+    RetainPtr&lt;UITouch&gt; _touch;
+}
+
+- (CGPoint)locationInView:(UIView *)view
+{
+    return [_touch locationInView:view];
+}
+
+- (void)_processTouches:(NSSet *)touches state:(UIGestureRecognizerState)newState
+{
+    ASSERT(_touch);
+    if ([touches containsObject:_touch.get()])
+        self.state = newState;
+}
+
+- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
+{
+    if (self.state != UIGestureRecognizerStatePossible)
+        return;
+
+    ASSERT(!_touch);
+    _touch = [touches anyObject];
+
+    [self _processTouches:touches state:UIGestureRecognizerStateBegan];
+}
+
+- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
+{
+    [self _processTouches:touches state:UIGestureRecognizerStateChanged];
+}
+
+- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
+{
+    [self _processTouches:touches state:UIGestureRecognizerStateEnded];
+}
+
+- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
+{
+    [self _processTouches:touches state:UIGestureRecognizerStateCancelled];
+}
+
+- (void)reset
+{
+    _touch = nil;
+}
+
+@end
+
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebKit2UIProcessiosWebPageProxyIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm (170444 => 170445)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm        2014-06-25 22:58:01 UTC (rev 170444)
+++ trunk/Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm        2014-06-25 23:13:24 UTC (rev 170445)
</span><span class="lines">@@ -587,6 +587,16 @@
</span><span class="cx">     process().send(Messages::WebPage::TapHighlightAtPosition(requestID, position), m_pageID);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void WebPageProxy::inspectorNodeSearchMovedToPosition(const WebCore::FloatPoint&amp; position)
+{
+    process().send(Messages::WebPage::InspectorNodeSearchMovedToPosition(position), m_pageID);
+}
+
+void WebPageProxy::inspectorNodeSearchEndedAtPosition(const WebCore::FloatPoint&amp; position)
+{
+    process().send(Messages::WebPage::InspectorNodeSearchEndedAtPosition(position), m_pageID);
+}
+
</ins><span class="cx"> void WebPageProxy::blurAssistedNode()
</span><span class="cx"> {
</span><span class="cx">     process().send(Messages::WebPage::BlurAssistedNode(), m_pageID);
</span><span class="lines">@@ -665,6 +675,16 @@
</span><span class="cx"> {
</span><span class="cx">     m_pageClient.hideInspectorIndication();
</span><span class="cx"> }
</span><ins>+
+void WebPageProxy::enableInspectorNodeSearch()
+{
+    m_pageClient.enableInspectorNodeSearch();
+}
+
+void WebPageProxy::disableInspectorNodeSearch()
+{
+    m_pageClient.disableInspectorNodeSearch();
+}
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> void WebPageProxy::focusNextAssistedNode(bool isForward)
</span></span></pre></div>
<a id="trunkSourceWebKit2WebKit2xcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj (170444 => 170445)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj        2014-06-25 22:58:01 UTC (rev 170444)
+++ trunk/Source/WebKit2/WebKit2.xcodeproj/project.pbxproj        2014-06-25 23:13:24 UTC (rev 170445)
</span><span class="lines">@@ -1105,6 +1105,8 @@
</span><span class="cx">                 A1C512C9190656E500448914 /* WebQuickLookHandleClient.h in Headers */ = {isa = PBXBuildFile; fileRef = A1C512C7190656E500448914 /* WebQuickLookHandleClient.h */; };
</span><span class="cx">                 A1DF631218E0B7C8003A3E2A /* DownloadClient.mm in Sources */ = {isa = PBXBuildFile; fileRef = A1DF631018E0B7C8003A3E2A /* DownloadClient.mm */; };
</span><span class="cx">                 A1DF631318E0B7C8003A3E2A /* DownloadClient.h in Headers */ = {isa = PBXBuildFile; fileRef = A1DF631118E0B7C8003A3E2A /* DownloadClient.h */; };
</span><ins>+                A54293A4195A43DA002782C7 /* WKInspectorNodeSearchGestureRecognizer.h in Headers */ = {isa = PBXBuildFile; fileRef = A54293A2195A43C6002782C7 /* WKInspectorNodeSearchGestureRecognizer.h */; };
+                A54293A5195A43DD002782C7 /* WKInspectorNodeSearchGestureRecognizer.mm in Sources */ = {isa = PBXBuildFile; fileRef = A54293A3195A43C6002782C7 /* WKInspectorNodeSearchGestureRecognizer.mm */; };
</ins><span class="cx">                 A58B6F0818FCA733008CBA53 /* WKFileUploadPanel.h in Headers */ = {isa = PBXBuildFile; fileRef = A58B6F0618FCA733008CBA53 /* WKFileUploadPanel.h */; };
</span><span class="cx">                 A58B6F0918FCA733008CBA53 /* WKFileUploadPanel.mm in Sources */ = {isa = PBXBuildFile; fileRef = A58B6F0718FCA733008CBA53 /* WKFileUploadPanel.mm */; };
</span><span class="cx">                 A5EFD38C16B0E88C00B2F0E8 /* WKPageVisibilityTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = A5EFD38B16B0E88C00B2F0E8 /* WKPageVisibilityTypes.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="lines">@@ -3150,6 +3152,8 @@
</span><span class="cx">                 A1EDD2DB1884B96400BBFE98 /* PluginProcessShim.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = PluginProcessShim.xcconfig; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A1EDD2DC1884B9B500BBFE98 /* SecItemShim.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = SecItemShim.xcconfig; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A1EDD2DD1884B9E300BBFE98 /* WebProcessShim.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = WebProcessShim.xcconfig; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                A54293A2195A43C6002782C7 /* WKInspectorNodeSearchGestureRecognizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = WKInspectorNodeSearchGestureRecognizer.h; path = ios/WKInspectorNodeSearchGestureRecognizer.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                A54293A3195A43C6002782C7 /* WKInspectorNodeSearchGestureRecognizer.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = WKInspectorNodeSearchGestureRecognizer.mm; path = ios/WKInspectorNodeSearchGestureRecognizer.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 A58B6F0618FCA733008CBA53 /* WKFileUploadPanel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WKFileUploadPanel.h; path = ios/forms/WKFileUploadPanel.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A58B6F0718FCA733008CBA53 /* WKFileUploadPanel.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WKFileUploadPanel.mm; path = ios/forms/WKFileUploadPanel.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A5EFD38B16B0E88C00B2F0E8 /* WKPageVisibilityTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKPageVisibilityTypes.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -4829,6 +4833,8 @@
</span><span class="cx">                                 0FCB4E3F18BBE044000FCFC9 /* WKGeolocationProviderIOS.h */,
</span><span class="cx">                                 0FCB4E4018BBE044000FCFC9 /* WKGeolocationProviderIOS.mm */,
</span><span class="cx">                                 0FCB4E4118BBE044000FCFC9 /* WKGeolocationProviderIOSObjCSecurityOrigin.mm */,
</span><ins>+                                A54293A2195A43C6002782C7 /* WKInspectorNodeSearchGestureRecognizer.h */,
+                                A54293A3195A43C6002782C7 /* WKInspectorNodeSearchGestureRecognizer.mm */,
</ins><span class="cx">                                 0FCB4E4418BBE044000FCFC9 /* WKScrollView.h */,
</span><span class="cx">                                 0FCB4E4518BBE044000FCFC9 /* WKScrollView.mm */,
</span><span class="cx">                                 A115DC6E191D82AB00DA8072 /* _WKWebViewPrintFormatter.h */,
</span><span class="lines">@@ -7722,6 +7728,7 @@
</span><span class="cx">                                 33D3A3B61339600B00709BE4 /* WKMediaCacheManager.h in Headers */,
</span><span class="cx">                                 BC4075FE124FF0270068F20A /* WKMutableArray.h in Headers */,
</span><span class="cx">                                 BC407600124FF0270068F20A /* WKMutableDictionary.h in Headers */,
</span><ins>+                                A54293A4195A43DA002782C7 /* WKInspectorNodeSearchGestureRecognizer.h in Headers */,
</ins><span class="cx">                                 C09AE5E9125257C20025825D /* WKNativeEvent.h in Headers */,
</span><span class="cx">                                 1AFDE65A1954A42B00C48FFA /* SessionState.h in Headers */,
</span><span class="cx">                                 BCF69FA91176D1CB00471A52 /* WKNavigationDataRef.h in Headers */,
</span><span class="lines">@@ -9105,6 +9112,7 @@
</span><span class="cx">                                 BC111AE0112F5BC200337BAB /* WebErrorsMac.mm in Sources */,
</span><span class="cx">                                 1A7284481959F8040007BCE5 /* SessionStateConversion.cpp in Sources */,
</span><span class="cx">                                 1AFA3AC818E61C61003CCBAE /* WKUserContentController.mm in Sources */,
</span><ins>+                                A54293A5195A43DD002782C7 /* WKInspectorNodeSearchGestureRecognizer.mm in Sources */,
</ins><span class="cx">                                 C0337DAE127A24FE008FF4F4 /* WebEvent.cpp in Sources */,
</span><span class="cx">                                 BC032DBA10F4380F0058C15A /* WebEventConversion.cpp in Sources */,
</span><span class="cx">                                 2D140EAF18F37BE0005E75A0 /* PageOverlayController.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebCoreSupportWebInspectorClientcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebInspectorClient.cpp (170444 => 170445)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebInspectorClient.cpp        2014-06-25 22:58:01 UTC (rev 170444)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebInspectorClient.cpp        2014-06-25 23:13:24 UTC (rev 170445)
</span><span class="lines">@@ -110,6 +110,14 @@
</span><span class="cx"> {
</span><span class="cx">     m_page-&gt;hideInspectorIndication();
</span><span class="cx"> }
</span><ins>+
+void WebInspectorClient::didSetSearchingForNode(bool enabled)
+{
+    if (enabled)
+        m_page-&gt;enableInspectorNodeSearch();
+    else
+        m_page-&gt;disableInspectorNodeSearch();
+}
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> bool WebInspectorClient::sendMessageToFrontend(const String&amp; message)
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebCoreSupportWebInspectorClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebInspectorClient.h (170444 => 170445)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebInspectorClient.h        2014-06-25 22:58:01 UTC (rev 170444)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebInspectorClient.h        2014-06-25 23:13:24 UTC (rev 170445)
</span><span class="lines">@@ -64,6 +64,8 @@
</span><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx">     virtual void showInspectorIndication() override;
</span><span class="cx">     virtual void hideInspectorIndication() override;
</span><ins>+
+    virtual void didSetSearchingForNode(bool) override;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     virtual bool sendMessageToFrontend(const String&amp;) override;
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h (170444 => 170445)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h        2014-06-25 22:58:01 UTC (rev 170444)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h        2014-06-25 23:13:24 UTC (rev 170445)
</span><span class="lines">@@ -476,6 +476,9 @@
</span><span class="cx">     void cancelPotentialTap();
</span><span class="cx">     void tapHighlightAtPosition(uint64_t requestID, const WebCore::FloatPoint&amp;);
</span><span class="cx"> 
</span><ins>+    void inspectorNodeSearchMovedToPosition(const WebCore::FloatPoint&amp;);
+    void inspectorNodeSearchEndedAtPosition(const WebCore::FloatPoint&amp;);
+
</ins><span class="cx">     void blurAssistedNode();
</span><span class="cx">     void selectWithGesture(const WebCore::IntPoint&amp;, uint32_t granularity, uint32_t gestureType, uint32_t gestureState, uint64_t callbackID);
</span><span class="cx">     void updateSelectionWithTouches(const WebCore::IntPoint&amp; point, uint32_t touches, bool baseIsStart, uint64_t callbackID);
</span><span class="lines">@@ -513,6 +516,9 @@
</span><span class="cx"> 
</span><span class="cx">     void showInspectorIndication();
</span><span class="cx">     void hideInspectorIndication();
</span><ins>+
+    void enableInspectorNodeSearch();
+    void disableInspectorNodeSearch();
</ins><span class="cx"> #endif
</span><span class="cx"> #endif
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPagemessagesin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in (170444 => 170445)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in        2014-06-25 22:58:01 UTC (rev 170444)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.messages.in        2014-06-25 23:13:24 UTC (rev 170445)
</span><span class="lines">@@ -55,6 +55,8 @@
</span><span class="cx">     CommitPotentialTap()
</span><span class="cx">     CancelPotentialTap()
</span><span class="cx">     TapHighlightAtPosition(uint64_t requestID, WebCore::FloatPoint point)
</span><ins>+    InspectorNodeSearchMovedToPosition(WebCore::FloatPoint point)
+    InspectorNodeSearchEndedAtPosition(WebCore::FloatPoint point)
</ins><span class="cx">     BlurAssistedNode()
</span><span class="cx">     SelectWithGesture(WebCore::IntPoint point, uint32_t granularity, uint32_t gestureType, uint32_t gestureState, uint64_t callbackID)
</span><span class="cx">     UpdateSelectionWithTouches(WebCore::IntPoint point, uint32_t touches, bool baseIsStart, uint64_t callbackID)
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageiosWebPageIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm (170444 => 170445)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm        2014-06-25 22:58:01 UTC (rev 170444)
+++ trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm        2014-06-25 23:13:24 UTC (rev 170445)
</span><span class="lines">@@ -576,6 +576,21 @@
</span><span class="cx">     sendTapHighlightForNodeIfNecessary(requestID, mainframe.nodeRespondingToClickEvents(position, adjustedPoint));
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void WebPage::inspectorNodeSearchMovedToPosition(const FloatPoint&amp; position)
+{
+    IntPoint adjustedPoint = roundedIntPoint(position);
+    Frame&amp; mainframe = m_page-&gt;mainFrame();
+
+    mainframe.eventHandler().mouseMoved(PlatformMouseEvent(adjustedPoint, adjustedPoint, NoButton, PlatformEvent::MouseMoved, 0, false, false, false, false, 0));
+    mainframe.document()-&gt;updateStyleIfNeeded();
+}
+
+void WebPage::inspectorNodeSearchEndedAtPosition(const FloatPoint&amp; position)
+{
+    if (Node* node = m_page-&gt;mainFrame().deepestNodeAtLocation(position))
+        node-&gt;inspect();
+}
+
</ins><span class="cx"> void WebPage::blurAssistedNode()
</span><span class="cx"> {
</span><span class="cx">     if (m_assistedNode &amp;&amp; m_assistedNode-&gt;isElementNode())
</span><span class="lines">@@ -631,6 +646,16 @@
</span><span class="cx"> {
</span><span class="cx">     send(Messages::WebPageProxy::HideInspectorIndication());
</span><span class="cx"> }
</span><ins>+
+void WebPage::enableInspectorNodeSearch()
+{
+    send(Messages::WebPageProxy::EnableInspectorNodeSearch());
+}
+
+void WebPage::disableInspectorNodeSearch()
+{
+    send(Messages::WebPageProxy::DisableInspectorNodeSearch());
+}
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> static FloatQuad innerFrameQuad(Frame* frame, Node* assistedNode)
</span></span></pre>
</div>
</div>

</body>
</html>