<!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>[162231] 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/162231">162231</a></dd>
<dt>Author</dt> <dd>akling@apple.com</dd>
<dt>Date</dt> <dd>2014-01-17 16:34:08 -0800 (Fri, 17 Jan 2014)</dd>
</dl>
<h3>Log Message</h3>
<pre>Remove unused TOUCH_ADJUSTMENT code.
<https://webkit.org/b/127181>
Source/WebCore:
There are no ports using the ENABLE(TOUCH_ADJUSTMENT) feature
anymore, so nuke it from orbit.
Reviewed by Anders Carlsson.
* page/EventHandler.cpp:
* page/EventHandler.h:
* page/Settings.in:
* page/TouchAdjustment.cpp: Removed.
* page/TouchAdjustment.h: Removed.
* testing/Internals.cpp:
* testing/Internals.h:
* testing/Internals.idl:
Source/WebKit2:
Reviewed by Anders Carlsson.
* WebProcess/WebPage/CoordinatedGraphics/WebPageCoordinatedGraphics.cpp:
(WebKit::WebPage::findZoomableAreaForPoint):</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorepageEventHandlercpp">trunk/Source/WebCore/page/EventHandler.cpp</a></li>
<li><a href="#trunkSourceWebCorepageEventHandlerh">trunk/Source/WebCore/page/EventHandler.h</a></li>
<li><a href="#trunkSourceWebCorepageSettingsin">trunk/Source/WebCore/page/Settings.in</a></li>
<li><a href="#trunkSourceWebCoretestingInternalscpp">trunk/Source/WebCore/testing/Internals.cpp</a></li>
<li><a href="#trunkSourceWebCoretestingInternalsh">trunk/Source/WebCore/testing/Internals.h</a></li>
<li><a href="#trunkSourceWebCoretestingInternalsidl">trunk/Source/WebCore/testing/Internals.idl</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageCoordinatedGraphicsWebPageCoordinatedGraphicscpp">trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/WebPageCoordinatedGraphics.cpp</a></li>
</ul>
<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceWebCorepageTouchAdjustmentcpp">trunk/Source/WebCore/page/TouchAdjustment.cpp</a></li>
<li><a href="#trunkSourceWebCorepageTouchAdjustmenth">trunk/Source/WebCore/page/TouchAdjustment.h</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (162230 => 162231)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-01-18 00:05:59 UTC (rev 162230)
+++ trunk/Source/WebCore/ChangeLog        2014-01-18 00:34:08 UTC (rev 162231)
</span><span class="lines">@@ -1,3 +1,22 @@
</span><ins>+2014-01-17 Andreas Kling <akling@apple.com>
+
+ Remove unused TOUCH_ADJUSTMENT code.
+ <https://webkit.org/b/127181>
+
+ There are no ports using the ENABLE(TOUCH_ADJUSTMENT) feature
+ anymore, so nuke it from orbit.
+
+ Reviewed by Anders Carlsson.
+
+ * page/EventHandler.cpp:
+ * page/EventHandler.h:
+ * page/Settings.in:
+ * page/TouchAdjustment.cpp: Removed.
+ * page/TouchAdjustment.h: Removed.
+ * testing/Internals.cpp:
+ * testing/Internals.h:
+ * testing/Internals.idl:
+
</ins><span class="cx"> 2014-01-17 Beth Dakin <bdakin@apple.com>
</span><span class="cx">
</span><span class="cx"> Need a way to test the tile cache with margins enabled
</span></span></pre></div>
<a id="trunkSourceWebCorepageEventHandlercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/EventHandler.cpp (162230 => 162231)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/EventHandler.cpp        2014-01-18 00:05:59 UTC (rev 162230)
+++ trunk/Source/WebCore/page/EventHandler.cpp        2014-01-18 00:34:08 UTC (rev 162231)
</span><span class="lines">@@ -92,10 +92,6 @@
</span><span class="cx"> #include <wtf/StdLibExtras.h>
</span><span class="cx"> #include <wtf/TemporaryChange.h>
</span><span class="cx">
</span><del>-#if ENABLE(TOUCH_ADJUSTMENT)
-#include "TouchAdjustment.h"
-#endif
-
</del><span class="cx"> #if ENABLE(SVG)
</span><span class="cx"> #include "SVGDocument.h"
</span><span class="cx"> #include "SVGElementInstance.h"
</span><span class="lines">@@ -2625,43 +2621,6 @@
</span><span class="cx"> m_previousWheelScrolledElement = stopElement;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-#if ENABLE(TOUCH_ADJUSTMENT)
-bool EventHandler::bestClickableNodeForTouchPoint(const IntPoint& touchCenter, const IntSize& touchRadius, IntPoint& targetPoint, Node*& targetNode)
-{
- IntPoint hitTestPoint = m_frame.view()->windowToContents(touchCenter);
- HitTestResult result = hitTestResultAtPoint(hitTestPoint, HitTestRequest::ReadOnly | HitTestRequest::Active, touchRadius);
-
- IntRect touchRect(touchCenter - touchRadius, touchRadius + touchRadius);
-
- // FIXME: Should be able to handle targetNode being a shadow DOM node to avoid performing uncessary hit tests
- // in the case where further processing on the node is required. Returning the shadow ancestor prevents a
- // regression in touchadjustment/html-label.html. Some refinement is required to testing/internals to
- // handle targetNode being a shadow DOM node.
- bool success = findBestClickableCandidate(targetNode, targetPoint, touchCenter, touchRect, result.rectBasedTestResult());
- if (success && targetNode)
- targetNode = targetNode->deprecatedShadowAncestorNode();
- return success;
-}
-
-bool EventHandler::bestContextMenuNodeForTouchPoint(const IntPoint& touchCenter, const IntSize& touchRadius, IntPoint& targetPoint, Node*& targetNode)
-{
- IntPoint hitTestPoint = m_frame.view()->windowToContents(touchCenter);
- HitTestResult result = hitTestResultAtPoint(hitTestPoint, HitTestRequest::ReadOnly | HitTestRequest::Active, touchRadius);
-
- IntRect touchRect(touchCenter - touchRadius, touchRadius + touchRadius);
- return findBestContextMenuCandidate(targetNode, targetPoint, touchCenter, touchRect, result.rectBasedTestResult());
-}
-
-bool EventHandler::bestZoomableAreaForTouchPoint(const IntPoint& touchCenter, const IntSize& touchRadius, IntRect& targetArea, Node*& targetNode)
-{
- IntPoint hitTestPoint = m_frame.view()->windowToContents(touchCenter);
- HitTestResult result = hitTestResultAtPoint(hitTestPoint, HitTestRequest::ReadOnly | HitTestRequest::Active | HitTestRequest::DisallowShadowContent, touchRadius);
-
- IntRect touchRect(touchCenter - touchRadius, touchRadius + touchRadius);
- return findBestZoomableArea(targetNode, targetArea, touchCenter, touchRect, result.rectBasedTestResult());
-}
-#endif
-
</del><span class="cx"> #if ENABLE(CONTEXT_MENUS)
</span><span class="cx"> bool EventHandler::sendContextMenuEvent(const PlatformMouseEvent& event)
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceWebCorepageEventHandlerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/EventHandler.h (162230 => 162231)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/EventHandler.h        2014-01-18 00:05:59 UTC (rev 162230)
+++ trunk/Source/WebCore/page/EventHandler.h        2014-01-18 00:34:08 UTC (rev 162231)
</span><span class="lines">@@ -215,12 +215,6 @@
</span><span class="cx"> void defaultTouchEventHandler(Node*, TouchEvent*);
</span><span class="cx"> #endif
</span><span class="cx">
</span><del>-#if ENABLE(TOUCH_ADJUSTMENT)
- bool bestClickableNodeForTouchPoint(const IntPoint& touchCenter, const IntSize& touchRadius, IntPoint& targetPoint, Node*& targetNode);
- bool bestContextMenuNodeForTouchPoint(const IntPoint& touchCenter, const IntSize& touchRadius, IntPoint& targetPoint, Node*& targetNode);
- bool bestZoomableAreaForTouchPoint(const IntPoint& touchCenter, const IntSize& touchRadius, IntRect& targetArea, Node*& targetNode);
-#endif
-
</del><span class="cx"> #if ENABLE(CONTEXT_MENUS)
</span><span class="cx"> bool sendContextMenuEvent(const PlatformMouseEvent&);
</span><span class="cx"> bool sendContextMenuEventForKey();
</span></span></pre></div>
<a id="trunkSourceWebCorepageSettingsin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/Settings.in (162230 => 162231)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/Settings.in        2014-01-18 00:05:59 UTC (rev 162230)
+++ trunk/Source/WebCore/page/Settings.in        2014-01-18 00:34:08 UTC (rev 162231)
</span><span class="lines">@@ -151,11 +151,6 @@
</span><span class="cx"> deviceSupportsTouch initial=false
</span><span class="cx"> deviceSupportsMouse initial=true
</span><span class="cx">
</span><del>-# For touch adjustment to apply, the compile option TOUCH_ADJUSTMENT must also be enabled.
-# This setting adds a means to dynamically disable the feature at runtime on systems with
-# support for touch adjustment.
-touchAdjustmentEnabled initial=true
-
</del><span class="cx"> fixedPositionCreatesStackingContext initial=defaultFixedPositionCreatesStackingContext
</span><span class="cx"> syncXHRInDocumentsEnabled initial=true
</span><span class="cx"> cookieEnabled initial=true
</span></span></pre></div>
<a id="trunkSourceWebCorepageTouchAdjustmentcpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/page/TouchAdjustment.cpp (162230 => 162231)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/TouchAdjustment.cpp        2014-01-18 00:05:59 UTC (rev 162230)
+++ trunk/Source/WebCore/page/TouchAdjustment.cpp        2014-01-18 00:34:08 UTC (rev 162231)
</span><span class="lines">@@ -1,503 +0,0 @@
</span><del>-/*
- * Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "config.h"
-
-#include "TouchAdjustment.h"
-
-#include "ContainerNode.h"
-#include "Editor.h"
-#include "FloatPoint.h"
-#include "FloatQuad.h"
-#include "Frame.h"
-#include "FrameView.h"
-#include "HTMLFrameOwnerElement.h"
-#include "HTMLInputElement.h"
-#include "HTMLLabelElement.h"
-#include "HTMLNames.h"
-#include "IntPoint.h"
-#include "IntSize.h"
-#include "Node.h"
-#include "NodeRenderStyle.h"
-#include "RenderBox.h"
-#include "RenderObject.h"
-#include "RenderStyle.h"
-#include "RenderText.h"
-#include "RenderView.h"
-#include "ShadowRoot.h"
-#include "Text.h"
-#include "TextBreakIterator.h"
-
-namespace WebCore {
-
-namespace TouchAdjustment {
-
-const float zeroTolerance = 1e-6f;
-
-// Class for remembering absolute quads of a target node and what node they represent.
-class SubtargetGeometry {
-public:
- SubtargetGeometry(Node* node, const FloatQuad& quad)
- : m_node(node)
- , m_quad(quad)
- { }
-
- Node* node() const { return m_node; }
- FloatQuad quad() const { return m_quad; }
- IntRect boundingBox() const { return m_quad.enclosingBoundingBox(); }
-
-private:
- Node* m_node;
- FloatQuad m_quad;
-};
-
-typedef Vector<SubtargetGeometry> SubtargetGeometryList;
-typedef bool (*NodeFilter)(Node*);
-typedef void (*AppendSubtargetsForNode)(Node*, SubtargetGeometryList&);
-typedef float (*DistanceFunction)(const IntPoint&, const IntRect&, const SubtargetGeometry&);
-
-// Takes non-const Node* because isContentEditable is a non-const function.
-bool nodeRespondsToTapGesture(Node* node)
-{
- if (node->willRespondToMouseClickEvents() || node->willRespondToMouseMoveEvents())
- return true;
- // Accept nodes that has a CSS effect when touched.
- if (node->isElementNode()) {
- Element* element = toElement(node);
- if (element->isMouseFocusable())
- return true;
- if (element->childrenAffectedByActive() || element->childrenAffectedByHover())
- return true;
- }
- if (RenderStyle* renderStyle = node->renderStyle()) {
- if (renderStyle->affectedByActive() || renderStyle->affectedByHover())
- return true;
- }
- return false;
-}
-
-bool nodeIsZoomTarget(Node* node)
-{
- if (node->isTextNode() || node->isShadowRoot())
- return false;
-
- ASSERT(node->renderer());
- return node->renderer()->isBox();
-}
-
-bool providesContextMenuItems(Node* node)
-{
- // This function tries to match the nodes that receive special context-menu items in
- // ContextMenuController::populate(), and should be kept uptodate with those.
- ASSERT(node->renderer() || node->isShadowRoot());
- if (!node->renderer())
- return false;
- if (node->isContentEditable())
- return true;
- if (node->isLink())
- return true;
- if (node->renderer()->isImage())
- return true;
- if (node->renderer()->isMedia())
- return true;
- if (node->renderer()->canBeSelectionLeaf()) {
- // If the context menu gesture will trigger a selection all selectable nodes are valid targets.
- if (node->renderer()->frame().editor().behavior().shouldSelectOnContextualMenuClick())
- return true;
- // Only the selected part of the renderer is a valid target, but this will be corrected in
- // appendContextSubtargetsForNode.
- if (node->renderer()->selectionState() != RenderObject::SelectionNone)
- return true;
- }
- return false;
-}
-
-static inline void appendQuadsToSubtargetList(Vector<FloatQuad>& quads, Node* node, SubtargetGeometryList& subtargets)
-{
- Vector<FloatQuad>::const_iterator it = quads.begin();
- const Vector<FloatQuad>::const_iterator end = quads.end();
- for (; it != end; ++it)
- subtargets.append(SubtargetGeometry(node, *it));
-}
-
-static inline void appendBasicSubtargetsForNode(Node* node, SubtargetGeometryList& subtargets)
-{
- // Node guaranteed to have renderer due to check in node filter.
- ASSERT(node->renderer());
-
- Vector<FloatQuad> quads;
- node->renderer()->absoluteQuads(quads);
-
- appendQuadsToSubtargetList(quads, node, subtargets);
-}
-
-static inline void appendContextSubtargetsForNode(Node* node, SubtargetGeometryList& subtargets)
-{
- // This is a variant of appendBasicSubtargetsForNode that adds special subtargets for
- // selected or auto-selectable parts of text nodes.
- ASSERT(node->renderer());
-
- if (!node->isTextNode())
- return appendBasicSubtargetsForNode(node, subtargets);
-
- Text* textNode = static_cast<WebCore::Text*>(node);
- RenderText* textRenderer = textNode->renderer();
-
- if (textRenderer->frame().editor().behavior().shouldSelectOnContextualMenuClick()) {
- // Make subtargets out of every word.
- String textValue = textNode->data();
- TextBreakIterator* wordIterator = wordBreakIterator(textValue.characters(), textValue.length());
- int lastOffset = textBreakFirst(wordIterator);
- if (lastOffset == -1)
- return;
- int offset;
- while ((offset = textBreakNext(wordIterator)) != -1) {
- if (isWordTextBreak(wordIterator)) {
- Vector<FloatQuad> quads = textRenderer->absoluteQuadsForRange(lastOffset, offset);
- appendQuadsToSubtargetList(quads, textNode, subtargets);
- }
- lastOffset = offset;
- }
- } else {
- if (textRenderer->selectionState() == RenderObject::SelectionNone)
- return appendBasicSubtargetsForNode(node, subtargets);
- // If selected, make subtargets out of only the selected part of the text.
- int startPos, endPos;
- switch (textRenderer->selectionState()) {
- case RenderObject::SelectionInside:
- startPos = 0;
- endPos = textRenderer->textLength();
- break;
- case RenderObject::SelectionStart:
- textRenderer->selectionStartEnd(startPos, endPos);
- endPos = textRenderer->textLength();
- break;
- case RenderObject::SelectionEnd:
- textRenderer->selectionStartEnd(startPos, endPos);
- startPos = 0;
- break;
- case RenderObject::SelectionBoth:
- textRenderer->selectionStartEnd(startPos, endPos);
- break;
- default:
- ASSERT_NOT_REACHED();
- return;
- }
- Vector<FloatQuad> quads = textRenderer->absoluteQuadsForRange(startPos, endPos);
- appendQuadsToSubtargetList(quads, textNode, subtargets);
- }
-}
-
-static inline void appendZoomableSubtargets(Node* node, SubtargetGeometryList& subtargets)
-{
- RenderBox* renderer = toRenderBox(node->renderer());
- ASSERT(renderer);
-
- Vector<FloatQuad> quads;
- FloatRect borderBoxRect = renderer->borderBoxRect();
- FloatRect contentBoxRect = renderer->contentBoxRect();
- quads.append(renderer->localToAbsoluteQuad(borderBoxRect));
- if (borderBoxRect != contentBoxRect)
- quads.append(renderer->localToAbsoluteQuad(contentBoxRect));
- // FIXME: For RenderBlocks, add column boxes and content boxes cleared for floats.
-
- Vector<FloatQuad>::const_iterator it = quads.begin();
- const Vector<FloatQuad>::const_iterator end = quads.end();
- for (; it != end; ++it)
- subtargets.append(SubtargetGeometry(node, *it));
-}
-
-static inline Node* parentShadowHostOrOwner(const Node* node)
-{
- if (Node* ancestor = node->parentOrShadowHostNode())
- return ancestor;
- if (node->isDocumentNode())
- return toDocument(node)->ownerElement();
- return 0;
-}
-
-// Compiles a list of subtargets of all the relevant target nodes.
-void compileSubtargetList(const NodeListHashSet& intersectedNodes, SubtargetGeometryList& subtargets, NodeFilter nodeFilter, AppendSubtargetsForNode appendSubtargetsForNode)
-{
- // Find candidates responding to tap gesture events in O(n) time.
- HashMap<Node*, Node*> responderMap;
- HashSet<Node*> ancestorsToRespondersSet;
- Vector<Node*> candidates;
- HashSet<Node*> editableAncestors;
-
- // A node matching the NodeFilter is called a responder. Candidate nodes must either be a
- // responder or have an ancestor that is a responder.
- // This iteration tests all ancestors at most once by caching earlier results.
- NodeListHashSet::const_iterator end = intersectedNodes.end();
- for (NodeListHashSet::const_iterator it = intersectedNodes.begin(); it != end; ++it) {
- Node* const node = it->get();
- Vector<Node*> visitedNodes;
- Node* respondingNode = 0;
- for (Node* visitedNode = node; visitedNode; visitedNode = visitedNode->parentOrShadowHostNode()) {
- // Check if we already have a result for a common ancestor from another candidate.
- respondingNode = responderMap.get(visitedNode);
- if (respondingNode)
- break;
- visitedNodes.append(visitedNode);
- // Check if the node filter applies, which would mean we have found a responding node.
- if (nodeFilter(visitedNode)) {
- respondingNode = visitedNode;
- // Continue the iteration to collect the ancestors of the responder, which we will need later.
- for (visitedNode = parentShadowHostOrOwner(visitedNode); visitedNode; visitedNode = parentShadowHostOrOwner(visitedNode)) {
- HashSet<Node*>::AddResult addResult = ancestorsToRespondersSet.add(visitedNode);
- if (!addResult.isNewEntry)
- break;
- }
- break;
- }
- }
- // Insert the detected responder for all the visited nodes.
- for (unsigned j = 0; j < visitedNodes.size(); j++)
- responderMap.add(visitedNodes[j], respondingNode);
-
- if (respondingNode)
- candidates.append(node);
- }
-
- // We compile the list of component absolute quads instead of using the bounding rect
- // to be able to perform better hit-testing on inline links on line-breaks.
- unsigned length = candidates.size();
- for (unsigned i = 0; i < length; i++) {
- Node* candidate = candidates[i];
- // Skip nodes who's responders are ancestors of other responders. This gives preference to
- // the inner-most event-handlers. So that a link is always preferred even when contained
- // in an element that monitors all click-events.
- Node* respondingNode = responderMap.get(candidate);
- ASSERT(respondingNode);
- if (ancestorsToRespondersSet.contains(respondingNode))
- continue;
- // Consolidate bounds for editable content.
- if (editableAncestors.contains(candidate))
- continue;
- if (candidate->isContentEditable()) {
- Node* replacement = candidate;
- Node* parent = candidate->parentOrShadowHostNode();
- while (parent && parent->isContentEditable()) {
- replacement = parent;
- if (editableAncestors.contains(replacement)) {
- replacement = 0;
- break;
- }
- editableAncestors.add(replacement);
- parent = parent->parentOrShadowHostNode();
- }
- candidate = replacement;
- }
- if (candidate)
- appendSubtargetsForNode(candidate, subtargets);
- }
-}
-
-// Compiles a list of zoomable subtargets.
-void compileZoomableSubtargets(const NodeListHashSet& intersectedNodes, SubtargetGeometryList& subtargets)
-{
- NodeListHashSet::const_iterator end = intersectedNodes.end();
- for (NodeListHashSet::const_iterator it = intersectedNodes.begin(); it != end; ++it) {
- Node* const candidate = it->get();
- if (nodeIsZoomTarget(candidate))
- appendZoomableSubtargets(candidate, subtargets);
- }
-}
-
-// This returns quotient of the target area and its intersection with the touch area.
-// This will prioritize largest intersection and smallest area, while balancing the two against each other.
-float zoomableIntersectionQuotient(const IntPoint& touchHotspot, const IntRect& touchArea, const SubtargetGeometry& subtarget)
-{
- IntRect rect = subtarget.boundingBox();
-
- // Convert from frame coordinates to window coordinates.
- rect = subtarget.node()->document().view()->contentsToWindow(rect);
-
- // Check the rectangle is meaningful zoom target. It should at least contain the hotspot.
- if (!rect.contains(touchHotspot))
- return std::numeric_limits<float>::infinity();
- IntRect intersection = rect;
- intersection.intersect(touchArea);
-
- // Return the quotient of the intersection.
- return rect.size().area() / (float)intersection.size().area();
-}
-
-// Uses a hybrid of distance to adjust and intersect ratio, normalizing each score between 0 and 1
-// and combining them. The distance to adjust works best for disambiguating clicks on targets such
-// as links, where the width may be significantly larger than the touch width. Using area of overlap
-// in such cases can lead to a bias towards shorter links. Conversely, percentage of overlap can
-// provide strong confidence in tapping on a small target, where the overlap is often quite high,
-// and works well for tightly packed controls.
-float hybridDistanceFunction(const IntPoint& touchHotspot, const IntRect& touchRect, const SubtargetGeometry& subtarget)
-{
- IntRect rect = subtarget.boundingBox();
-
- // Convert from frame coordinates to window coordinates.
- rect = subtarget.node()->document().view()->contentsToWindow(rect);
-
- float radiusSquared = 0.25f * (touchRect.size().diagonalLengthSquared());
- float distanceToAdjustScore = rect.distanceSquaredToPoint(touchHotspot) / radiusSquared;
-
- int maxOverlapWidth = std::min(touchRect.width(), rect.width());
- int maxOverlapHeight = std::min(touchRect.height(), rect.height());
- float maxOverlapArea = std::max(maxOverlapWidth * maxOverlapHeight, 1);
- rect.intersect(touchRect);
- float intersectArea = rect.size().area();
- float intersectionScore = 1 - intersectArea / maxOverlapArea;
-
- float hybridScore = intersectionScore + distanceToAdjustScore;
-
- return hybridScore;
-}
-
-FloatPoint contentsToWindow(FrameView *view, FloatPoint pt)
-{
- int x = static_cast<int>(pt.x() + 0.5f);
- int y = static_cast<int>(pt.y() + 0.5f);
- IntPoint adjusted = view->contentsToWindow(IntPoint(x, y));
- return FloatPoint(adjusted.x(), adjusted.y());
-}
-
-// Adjusts 'point' to the nearest point inside rect, and leaves it unchanged if already inside.
-void adjustPointToRect(FloatPoint& point, const FloatRect& rect)
-{
- if (point.x() < rect.x())
- point.setX(rect.x());
- else if (point.x() > rect.maxX())
- point.setX(rect.maxX());
-
- if (point.y() < rect.y())
- point.setY(rect.y());
- else if (point.y() > rect.maxY())
- point.setY(rect.maxY());
-}
-
-bool snapTo(const SubtargetGeometry& geom, const IntPoint& touchPoint, const IntRect& touchArea, IntPoint& adjustedPoint)
-{
- FrameView* view = geom.node()->document().view();
- FloatQuad quad = geom.quad();
-
- if (quad.isRectilinear()) {
- IntRect contentBounds = geom.boundingBox();
- // Convert from frame coordinates to window coordinates.
- IntRect bounds = view->contentsToWindow(contentBounds);
- if (bounds.contains(touchPoint)) {
- adjustedPoint = touchPoint;
- return true;
- }
- if (bounds.intersects(touchArea)) {
- bounds.intersect(touchArea);
- adjustedPoint = bounds.center();
- return true;
- }
- return false;
- }
-
- // The following code tries to adjust the point to place inside a both the touchArea and the non-rectilinear quad.
- // FIXME: This will return the point inside the touch area that is the closest to the quad center, but does not
- // guarantee that the point will be inside the quad. Corner-cases exist where the quad will intersect but this
- // will fail to adjust the point to somewhere in the intersection.
-
- // Convert quad from content to window coordinates.
- FloatPoint p1 = contentsToWindow(view, quad.p1());
- FloatPoint p2 = contentsToWindow(view, quad.p2());
- FloatPoint p3 = contentsToWindow(view, quad.p3());
- FloatPoint p4 = contentsToWindow(view, quad.p4());
- quad = FloatQuad(p1, p2, p3, p4);
-
- if (quad.containsPoint(touchPoint)) {
- adjustedPoint = touchPoint;
- return true;
- }
-
- // Pull point towards the center of the element.
- FloatPoint center = quad.center();
-
- adjustPointToRect(center, touchArea);
- adjustedPoint = roundedIntPoint(center);
-
- return quad.containsPoint(adjustedPoint);
-}
-
-// A generic function for finding the target node with the lowest distance metric. A distance metric here is the result
-// of a distance-like function, that computes how well the touch hits the node.
-// Distance functions could for instance be distance squared or area of intersection.
-bool findNodeWithLowestDistanceMetric(Node*& targetNode, IntPoint& targetPoint, IntRect& targetArea, const IntPoint& touchHotspot, const IntRect& touchArea, SubtargetGeometryList& subtargets, DistanceFunction distanceFunction)
-{
- targetNode = 0;
- float bestDistanceMetric = std::numeric_limits<float>::infinity();
- SubtargetGeometryList::const_iterator it = subtargets.begin();
- const SubtargetGeometryList::const_iterator end = subtargets.end();
- IntPoint adjustedPoint;
-
- for (; it != end; ++it) {
- Node* node = it->node();
- float distanceMetric = distanceFunction(touchHotspot, touchArea, *it);
- if (distanceMetric < bestDistanceMetric) {
- if (snapTo(*it, touchHotspot, touchArea, adjustedPoint)) {
- targetPoint = adjustedPoint;
- targetArea = it->boundingBox();
- targetNode = node;
- bestDistanceMetric = distanceMetric;
- }
- } else if (distanceMetric - bestDistanceMetric < zeroTolerance) {
- if (snapTo(*it, touchHotspot, touchArea, adjustedPoint)) {
- if (node->isDescendantOf(targetNode)) {
- // Try to always return the inner-most element.
- targetPoint = adjustedPoint;
- targetNode = node;
- targetArea = it->boundingBox();
- }
- }
- }
- }
- if (targetNode) {
- targetArea = targetNode->document().view()->contentsToWindow(targetArea);
- }
- return (targetNode);
-}
-
-} // namespace TouchAdjustment
-
-bool findBestClickableCandidate(Node*& targetNode, IntPoint &targetPoint, const IntPoint &touchHotspot, const IntRect &touchArea, const NodeListHashSet& nodeList)
-{
- IntRect targetArea;
- TouchAdjustment::SubtargetGeometryList subtargets;
- TouchAdjustment::compileSubtargetList(nodeList, subtargets, TouchAdjustment::nodeRespondsToTapGesture, TouchAdjustment::appendBasicSubtargetsForNode);
- return TouchAdjustment::findNodeWithLowestDistanceMetric(targetNode, targetPoint, targetArea, touchHotspot, touchArea, subtargets, TouchAdjustment::hybridDistanceFunction);
-}
-
-bool findBestContextMenuCandidate(Node*& targetNode, IntPoint &targetPoint, const IntPoint &touchHotspot, const IntRect &touchArea, const NodeListHashSet& nodeList)
-{
- IntRect targetArea;
- TouchAdjustment::SubtargetGeometryList subtargets;
- TouchAdjustment::compileSubtargetList(nodeList, subtargets, TouchAdjustment::providesContextMenuItems, TouchAdjustment::appendContextSubtargetsForNode);
- return TouchAdjustment::findNodeWithLowestDistanceMetric(targetNode, targetPoint, targetArea, touchHotspot, touchArea, subtargets, TouchAdjustment::hybridDistanceFunction);
-}
-
-bool findBestZoomableArea(Node*& targetNode, IntRect& targetArea, const IntPoint& touchHotspot, const IntRect& touchArea, const NodeListHashSet& nodeList)
-{
- IntPoint targetPoint;
- TouchAdjustment::SubtargetGeometryList subtargets;
- TouchAdjustment::compileZoomableSubtargets(nodeList, subtargets);
- return TouchAdjustment::findNodeWithLowestDistanceMetric(targetNode, targetPoint, targetArea, touchHotspot, touchArea, subtargets, TouchAdjustment::zoomableIntersectionQuotient);
-}
-
-} // namespace WebCore
</del></span></pre></div>
<a id="trunkSourceWebCorepageTouchAdjustmenth"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/page/TouchAdjustment.h (162230 => 162231)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/TouchAdjustment.h        2014-01-18 00:05:59 UTC (rev 162230)
+++ trunk/Source/WebCore/page/TouchAdjustment.h        2014-01-18 00:34:08 UTC (rev 162231)
</span><span class="lines">@@ -1,40 +0,0 @@
</span><del>-/*
- * Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#ifndef TouchAdjustment_h
-#define TouchAdjustment_h
-
-#include "IntPoint.h"
-#include "IntRect.h"
-#include "Node.h"
-#include "NodeList.h"
-#include <wtf/Vector.h>
-
-namespace WebCore {
-
-typedef ListHashSet<RefPtr<Node> > NodeListHashSet;
-
-bool findBestClickableCandidate(Node*& targetNode, IntPoint& targetPoint, const IntPoint& touchHotspot, const IntRect& touchArea, const NodeListHashSet&);
-bool findBestContextMenuCandidate(Node*& targetNode, IntPoint& targetPoint, const IntPoint& touchHotspot, const IntRect& touchArea, const NodeListHashSet&);
-bool findBestZoomableArea(Node*& targetNode, IntRect& targetArea, const IntPoint& touchHotspot, const IntRect& touchArea, const NodeListHashSet&);
-// FIXME: Implement the similar functions for other gestures here as well.
-
-} // namespace WebCore
-
-#endif
</del></span></pre></div>
<a id="trunkSourceWebCoretestingInternalscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/testing/Internals.cpp (162230 => 162231)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/testing/Internals.cpp        2014-01-18 00:05:59 UTC (rev 162230)
+++ trunk/Source/WebCore/testing/Internals.cpp        2014-01-18 00:34:08 UTC (rev 162231)
</span><span class="lines">@@ -118,10 +118,6 @@
</span><span class="cx"> #include "DeviceProximityController.h"
</span><span class="cx"> #endif
</span><span class="cx">
</span><del>-#if ENABLE(TOUCH_ADJUSTMENT)
-#include "WebKitPoint.h"
-#endif
-
</del><span class="cx"> #if ENABLE(MOUSE_CURSOR_SCALE)
</span><span class="cx"> #include <wtf/dtoa.h>
</span><span class="cx"> #endif
</span><span class="lines">@@ -1034,105 +1030,6 @@
</span><span class="cx"> document->view()->setDelegatesScrolling(enabled);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-#if ENABLE(TOUCH_ADJUSTMENT)
-PassRefPtr<WebKitPoint> Internals::touchPositionAdjustedToBestClickableNode(long x, long y, long width, long height, ExceptionCode& ec)
-{
- Document* document = contextDocument();
- if (!document || !document->frame()) {
- ec = INVALID_ACCESS_ERR;
- return 0;
- }
-
- IntSize radius(width / 2, height / 2);
- IntPoint point(x + radius.width(), y + radius.height());
-
- Node* targetNode;
- IntPoint adjustedPoint;
-
- bool foundNode = document->frame()->eventHandler().bestClickableNodeForTouchPoint(point, radius, adjustedPoint, targetNode);
- if (foundNode)
- return WebKitPoint::create(adjustedPoint.x(), adjustedPoint.y());
-
- return 0;
-}
-
-Node* Internals::touchNodeAdjustedToBestClickableNode(long x, long y, long width, long height, ExceptionCode& ec)
-{
- Document* document = contextDocument();
- if (!document || !document->frame()) {
- ec = INVALID_ACCESS_ERR;
- return 0;
- }
-
- IntSize radius(width / 2, height / 2);
- IntPoint point(x + radius.width(), y + radius.height());
-
- Node* targetNode;
- IntPoint adjustedPoint;
- document->frame()->eventHandler().bestClickableNodeForTouchPoint(point, radius, adjustedPoint, targetNode);
- return targetNode;
-}
-
-PassRefPtr<WebKitPoint> Internals::touchPositionAdjustedToBestContextMenuNode(long x, long y, long width, long height, ExceptionCode& ec)
-{
- Document* document = contextDocument();
- if (!document || !document->frame()) {
- ec = INVALID_ACCESS_ERR;
- return 0;
- }
-
- IntSize radius(width / 2, height / 2);
- IntPoint point(x + radius.width(), y + radius.height());
-
- Node* targetNode = 0;
- IntPoint adjustedPoint;
-
- bool foundNode = document->frame()->eventHandler().bestContextMenuNodeForTouchPoint(point, radius, adjustedPoint, targetNode);
- if (foundNode)
- return WebKitPoint::create(adjustedPoint.x(), adjustedPoint.y());
-
- return WebKitPoint::create(x, y);
-}
-
-Node* Internals::touchNodeAdjustedToBestContextMenuNode(long x, long y, long width, long height, ExceptionCode& ec)
-{
- Document* document = contextDocument();
- if (!document || !document->frame()) {
- ec = INVALID_ACCESS_ERR;
- return 0;
- }
-
- IntSize radius(width / 2, height / 2);
- IntPoint point(x + radius.width(), y + radius.height());
-
- Node* targetNode = 0;
- IntPoint adjustedPoint;
- document->frame()->eventHandler().bestContextMenuNodeForTouchPoint(point, radius, adjustedPoint, targetNode);
- return targetNode;
-}
-
-PassRefPtr<ClientRect> Internals::bestZoomableAreaForTouchPoint(long x, long y, long width, long height, ExceptionCode& ec)
-{
- Document* document = contextDocument();
- if (!document || !document->frame()) {
- ec = INVALID_ACCESS_ERR;
- return 0;
- }
-
- IntSize radius(width / 2, height / 2);
- IntPoint point(x + radius.width(), y + radius.height());
-
- Node* targetNode;
- IntRect zoomableArea;
- bool foundNode = document->frame()->eventHandler().bestZoomableAreaForTouchPoint(point, radius, zoomableArea, targetNode);
- if (foundNode)
- return ClientRect::create(zoomableArea);
-
- return 0;
-}
-#endif
-
-
</del><span class="cx"> int Internals::lastSpellCheckRequestSequence(ExceptionCode& ec)
</span><span class="cx"> {
</span><span class="cx"> Document* document = contextDocument();
</span></span></pre></div>
<a id="trunkSourceWebCoretestingInternalsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/testing/Internals.h (162230 => 162231)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/testing/Internals.h        2014-01-18 00:05:59 UTC (rev 162230)
+++ trunk/Source/WebCore/testing/Internals.h        2014-01-18 00:34:08 UTC (rev 162231)
</span><span class="lines">@@ -56,7 +56,6 @@
</span><span class="cx"> class Range;
</span><span class="cx"> class ScriptExecutionContext;
</span><span class="cx"> class ShadowRoot;
</span><del>-class WebKitPoint;
</del><span class="cx"> class MallocStatistics;
</span><span class="cx"> class SerializedScriptValue;
</span><span class="cx"> class TimeRanges;
</span><span class="lines">@@ -158,13 +157,6 @@
</span><span class="cx"> String rangeAsText(const Range*, ExceptionCode&);
</span><span class="cx">
</span><span class="cx"> void setDelegatesScrolling(bool enabled, ExceptionCode&);
</span><del>-#if ENABLE(TOUCH_ADJUSTMENT)
- PassRefPtr<WebKitPoint> touchPositionAdjustedToBestClickableNode(long x, long y, long width, long height, ExceptionCode&);
- Node* touchNodeAdjustedToBestClickableNode(long x, long y, long width, long height, ExceptionCode&);
- PassRefPtr<WebKitPoint> touchPositionAdjustedToBestContextMenuNode(long x, long y, long width, long height, ExceptionCode&);
- Node* touchNodeAdjustedToBestContextMenuNode(long x, long y, long width, long height, ExceptionCode&);
- PassRefPtr<ClientRect> bestZoomableAreaForTouchPoint(long x, long y, long width, long height, ExceptionCode&);
-#endif
</del><span class="cx">
</span><span class="cx"> int lastSpellCheckRequestSequence(ExceptionCode&);
</span><span class="cx"> int lastSpellCheckProcessedSequence(ExceptionCode&);
</span></span></pre></div>
<a id="trunkSourceWebCoretestingInternalsidl"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/testing/Internals.idl (162230 => 162231)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/testing/Internals.idl        2014-01-18 00:05:59 UTC (rev 162230)
+++ trunk/Source/WebCore/testing/Internals.idl        2014-01-18 00:34:08 UTC (rev 162231)
</span><span class="lines">@@ -114,13 +114,6 @@
</span><span class="cx"> [RaisesException] DOMString rangeAsText(Range range);
</span><span class="cx">
</span><span class="cx"> [RaisesException] void setDelegatesScrolling(boolean enabled);
</span><del>-#if defined(ENABLE_TOUCH_ADJUSTMENT) && ENABLE_TOUCH_ADJUSTMENT
- [RaisesException] WebKitPoint touchPositionAdjustedToBestClickableNode(long x, long y, long width, long height);
- [RaisesException] Node touchNodeAdjustedToBestClickableNode(long x, long y, long width, long height);
- [RaisesException] WebKitPoint touchPositionAdjustedToBestContextMenuNode(long x, long y, long width, long height);
- [RaisesException] Node touchNodeAdjustedToBestContextMenuNode(long x, long y, long width, long height);
- [RaisesException] ClientRect bestZoomableAreaForTouchPoint(long x, long y, long width, long height);
-#endif
</del><span class="cx">
</span><span class="cx"> [RaisesException] long lastSpellCheckRequestSequence();
</span><span class="cx"> [RaisesException] long lastSpellCheckProcessedSequence();
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (162230 => 162231)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2014-01-18 00:05:59 UTC (rev 162230)
+++ trunk/Source/WebKit2/ChangeLog        2014-01-18 00:34:08 UTC (rev 162231)
</span><span class="lines">@@ -1,3 +1,13 @@
</span><ins>+2014-01-17 Andreas Kling <akling@apple.com>
+
+ Remove unused TOUCH_ADJUSTMENT code.
+ <https://webkit.org/b/127181>
+
+ Reviewed by Anders Carlsson.
+
+ * WebProcess/WebPage/CoordinatedGraphics/WebPageCoordinatedGraphics.cpp:
+ (WebKit::WebPage::findZoomableAreaForPoint):
+
</ins><span class="cx"> 2014-01-17 Anders Carlsson <andersca@apple.com>
</span><span class="cx">
</span><span class="cx"> Fix build.
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageCoordinatedGraphicsWebPageCoordinatedGraphicscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/WebPageCoordinatedGraphics.cpp (162230 => 162231)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/WebPageCoordinatedGraphics.cpp        2014-01-18 00:05:59 UTC (rev 162230)
+++ trunk/Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/WebPageCoordinatedGraphics.cpp        2014-01-18 00:34:08 UTC (rev 162231)
</span><span class="lines">@@ -42,27 +42,8 @@
</span><span class="cx">
</span><span class="cx"> namespace WebKit {
</span><span class="cx">
</span><del>-#if ENABLE(TOUCH_ADJUSTMENT)
</del><span class="cx"> void WebPage::findZoomableAreaForPoint(const IntPoint& point, const IntSize& area)
</span><span class="cx"> {
</span><del>- Node* node = 0;
- IntRect zoomableArea;
- bool foundAreaForTouchPoint = m_mainFrame->coreFrame()->eventHandler().bestZoomableAreaForTouchPoint(point, IntSize(area.width() / 2, area.height() / 2), zoomableArea, node);
-
- if (!foundAreaForTouchPoint)
- return;
-
- ASSERT(node);
-
- if (node->document().view())
- zoomableArea = node->document().view()->contentsToWindow(zoomableArea);
-
- send(Messages::WebPageProxy::DidFindZoomableArea(point, zoomableArea));
-}
-
-#else
-void WebPage::findZoomableAreaForPoint(const IntPoint& point, const IntSize& area)
-{
</del><span class="cx"> UNUSED_PARAM(area);
</span><span class="cx"> Frame* mainframe = m_mainFrame->coreFrame();
</span><span class="cx"> HitTestResult result = mainframe->eventHandler().hitTestResultAtPoint(mainframe->view()->windowToContents(point), HitTestRequest::ReadOnly | HitTestRequest::Active | HitTestRequest::IgnoreClipping | HitTestRequest::DisallowShadowContent);
</span><span class="lines">@@ -98,7 +79,6 @@
</span><span class="cx">
</span><span class="cx"> send(Messages::WebPageProxy::DidFindZoomableArea(point, zoomableArea));
</span><span class="cx"> }
</span><del>-#endif
</del><span class="cx">
</span><span class="cx"> } // namespace WebKit
</span><span class="cx">
</span></span></pre>
</div>
</div>
</body>
</html>