Title: [147687] trunk/Source/WebKit/blackberry
Revision
147687
Author
[email protected]
Date
2013-04-04 17:26:29 -0700 (Thu, 04 Apr 2013)

Log Message

[BlackBerry] Adjust fatfinger result priority
https://bugs.webkit.org/show_bug.cgi?id=113957

Patch by Tiancheng Jiang <[email protected]> on 2013-04-04
Reviewed by Rob Buis.

RIM PR 224781
Internally Reviewed by Genevieve Mak.

Change fatfigner algorithm, return the clickable element rather than
its parent anchor. Modify taphighlight and context menu node selection
accordingly.

* Api/WebPage.cpp:
(BlackBerry::WebKit::WebPagePrivate::webContext):
* WebKitSupport/FatFingers.cpp:
(BlackBerry::WebKit::FatFingers::findBestPoint):
* WebKitSupport/FatFingers.h:
* WebKitSupport/TouchEventHandler.cpp:
(BlackBerry::WebKit::elementForTapHighlight):

Modified Paths

Diff

Modified: trunk/Source/WebKit/blackberry/Api/WebPage.cpp (147686 => 147687)


--- trunk/Source/WebKit/blackberry/Api/WebPage.cpp	2013-04-05 00:15:10 UTC (rev 147686)
+++ trunk/Source/WebKit/blackberry/Api/WebPage.cpp	2013-04-05 00:26:29 UTC (rev 147687)
@@ -2284,7 +2284,8 @@
     requestLayoutIfNeeded();
 
     bool nodeAllowSelectionOverride = false;
-    if (Node* linkNode = node->enclosingLinkEventParentOrSelf()) {
+    Node* linkNode = node->enclosingLinkEventParentOrSelf();
+    if (node->isLink() || (node->isTextNode() && linkNode)) {
         KURL href;
         if (linkNode->isLink() && linkNode->hasAttributes()) {
             if (const Attribute* attribute = toElement(linkNode)->getAttributeItem(HTMLNames::hrefAttr))

Modified: trunk/Source/WebKit/blackberry/ChangeLog (147686 => 147687)


--- trunk/Source/WebKit/blackberry/ChangeLog	2013-04-05 00:15:10 UTC (rev 147686)
+++ trunk/Source/WebKit/blackberry/ChangeLog	2013-04-05 00:26:29 UTC (rev 147687)
@@ -1,3 +1,25 @@
+2013-04-04  Tiancheng Jiang  <[email protected]>
+
+        [BlackBerry] Adjust fatfinger result priority
+        https://bugs.webkit.org/show_bug.cgi?id=113957
+
+        Reviewed by Rob Buis.
+
+        RIM PR 224781
+        Internally Reviewed by Genevieve Mak.
+
+        Change fatfigner algorithm, return the clickable element rather than
+        its parent anchor. Modify taphighlight and context menu node selection
+        accordingly.
+
+        * Api/WebPage.cpp:
+        (BlackBerry::WebKit::WebPagePrivate::webContext):
+        * WebKitSupport/FatFingers.cpp:
+        (BlackBerry::WebKit::FatFingers::findBestPoint):
+        * WebKitSupport/FatFingers.h:
+        * WebKitSupport/TouchEventHandler.cpp:
+        (BlackBerry::WebKit::elementForTapHighlight):
+
 2013-04-03  Arvid Nilsson  <[email protected]>
 
         [BlackBerry] Remove defaultViewportArguments check from call site of recomputeVirtualViewportFromViewportArguments

Modified: trunk/Source/WebKit/blackberry/WebKitSupport/FatFingers.cpp (147686 => 147687)


--- trunk/Source/WebKit/blackberry/WebKitSupport/FatFingers.cpp	2013-04-05 00:15:10 UTC (rev 147686)
+++ trunk/Source/WebKit/blackberry/WebKitSupport/FatFingers.cpp	2013-04-05 00:26:29 UTC (rev 147687)
@@ -163,24 +163,26 @@
 
     // Lets set nodeUnderFatFinger to the result of a point based hit test here. If something
     // targable is actually found by ::findIntersectingRegions, then we might replace what we just set below later on.
-    Element* elementUnderPoint;
-    Element* clickableElementUnderPoint;
-    getRelevantInfoFromCachedHitTest(elementUnderPoint, clickableElementUnderPoint);
+    const HitTestResult& hitResult = m_webPage->hitTestResult(m_contentPos);
+    Node* node = hitResult.innerNode();
+    while (node && !node->isElementNode())
+        node = node->parentNode();
 
+    Element* elementUnderPoint = static_cast<Element*>(node);
+
     if (elementUnderPoint) {
         result.m_nodeUnderFatFinger = elementUnderPoint;
 
         // If we are looking for a Clickable Element and we found one, we can quit early.
         if (m_targetType == ClickableElement) {
-            if (clickableElementUnderPoint) {
-                setSuccessfulFatFingersResult(result, clickableElementUnderPoint, m_contentPos /*adjustedPosition*/);
-                return result;
-            }
-
             if (isElementClickable(elementUnderPoint)) {
                 setSuccessfulFatFingersResult(result, elementUnderPoint, m_contentPos /*adjustedPosition*/);
                 return result;
             }
+            if (hitResult.URLElement()) {
+                setSuccessfulFatFingersResult(result, hitResult.URLElement(), m_contentPos /*adjustedPosition*/);
+                return result;
+            }
         }
     }
 
@@ -474,20 +476,6 @@
     m_cachedRectHitTestResults.add(document, intersectedNodes);
 }
 
-void FatFingers::getRelevantInfoFromCachedHitTest(Element*& elementUnderPoint, Element*& clickableElementUnderPoint) const
-{
-    elementUnderPoint = 0;
-    clickableElementUnderPoint = 0;
-
-    const HitTestResult& result = m_webPage->hitTestResult(m_contentPos);
-    Node* node = result.innerNode();
-    while (node && !node->isElementNode())
-        node = node->parentNode();
-
-    elementUnderPoint = toElement(node);
-    clickableElementUnderPoint = result.URLElement();
-}
-
 void FatFingers::setSuccessfulFatFingersResult(FatFingersResult& result, Node* bestNode, const WebCore::IntPoint& adjustedPoint)
 {
     result.m_nodeUnderFatFinger = bestNode;

Modified: trunk/Source/WebKit/blackberry/WebKitSupport/FatFingers.h (147686 => 147687)


--- trunk/Source/WebKit/blackberry/WebKitSupport/FatFingers.h	2013-04-05 00:15:10 UTC (rev 147686)
+++ trunk/Source/WebKit/blackberry/WebKitSupport/FatFingers.h	2013-04-05 00:26:29 UTC (rev 147687)
@@ -97,9 +97,6 @@
 
     void getNodesFromRect(WebCore::Document*, const WebCore::IntPoint&, ListHashSet<RefPtr<WebCore::Node> >&);
 
-    // It mimics Document::elementFromPoint, but recursively hit-tests in case an inner frame is found.
-    void getRelevantInfoFromCachedHitTest(WebCore::Element*& elementUnderPoint, WebCore::Element*& clickableElementUnderPoint) const;
-
     bool isElementClickable(WebCore::Element*) const;
 
     inline WebCore::IntRect fingerRectForPoint(const WebCore::IntPoint&) const;

Modified: trunk/Source/WebKit/blackberry/WebKitSupport/TouchEventHandler.cpp (147686 => 147687)


--- trunk/Source/WebKit/blackberry/WebKitSupport/TouchEventHandler.cpp	2013-04-05 00:15:10 UTC (rev 147686)
+++ trunk/Source/WebKit/blackberry/WebKitSupport/TouchEventHandler.cpp	2013-04-05 00:26:29 UTC (rev 147687)
@@ -195,7 +195,7 @@
     }
 
     bool isArea = elementUnderFatFinger->hasTagName(HTMLNames::areaTag);
-    Node* linkNode = elementUnderFatFinger->enclosingLinkEventParentOrSelf();
+    Node* linkNode = elementUnderFatFinger->isLink() ? elementUnderFatFinger : 0;
     if (!linkNode || !linkNode->isHTMLElement() || (!linkNode->renderer() && !isArea))
         return 0;
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to