CTTE: Node::enclosingLinkEventParentOrSelf() should return an Element.
authorakling@apple.com <akling@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 6 Oct 2013 08:37:02 +0000 (08:37 +0000)
committerakling@apple.com <akling@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 6 Oct 2013 08:37:02 +0000 (08:37 +0000)
<https://webkit.org/b/122401>

Reviewed by Sam Weinig.

Only Elements are ever linked, so make enclosingLinkEventParentOrSelf()
return an Element* instead of a Node*. The only call site was already
doing toElement() on the return value without checking, so this makes
things look a bit nicer.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@156986 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/dom/Node.cpp
Source/WebCore/dom/Node.h
Source/WebCore/rendering/RenderLayer.cpp

index 5151462..3fe554f 100644 (file)
@@ -1,3 +1,15 @@
+2013-10-06  Andreas Kling  <akling@apple.com>
+
+        CTTE: Node::enclosingLinkEventParentOrSelf() should return an Element.
+        <https://webkit.org/b/122401>
+
+        Reviewed by Sam Weinig.
+
+        Only Elements are ever linked, so make enclosingLinkEventParentOrSelf()
+        return an Element* instead of a Node*. The only call site was already
+        doing toElement() on the return value without checking, so this makes
+        things look a bit nicer.
+
 2013-10-06  Gyuyoung Kim  <gyuyoung.kim@samsung.com>
 
         Add *CSS* prefix to FontFeatureValue to generate toCSSFontFeatureValue(), and use it
index f92d4da..e1834d0 100644 (file)
@@ -1804,14 +1804,14 @@ void Node::getSubresourceURLs(ListHashSet<URL>& urls) const
     addSubresourceAttributeURLs(urls);
 }
 
-Node* Node::enclosingLinkEventParentOrSelf()
+Element* Node::enclosingLinkEventParentOrSelf()
 {
     for (Node* node = this; node; node = node->parentOrShadowHostNode()) {
-        // For imagemaps, the enclosing link node is the associated area element not the image itself.
-        // So we don't let images be the enclosingLinkNode, even though isLink sometimes returns true
-        // for them.
+        // For imagemaps, the enclosing link element is the associated area element not the image itself.
+        // So we don't let images be the enclosing link element, even though isLink sometimes returns
+        // true for them.
         if (node->isLink() && !isHTMLImageElement(node))
-            return node;
+            return toElement(node);
     }
 
     return 0;
index b537ac1..cadf090 100644 (file)
@@ -289,8 +289,8 @@ public:
     bool selfOrAncestorHasDirAutoAttribute() const { return getFlag(SelfOrAncestorHasDirAutoFlag); }
     void setSelfOrAncestorHasDirAutoAttribute(bool flag) { setFlag(flag, SelfOrAncestorHasDirAutoFlag); }
 
-    // Returns the enclosing event parent node (or self) that, when clicked, would trigger a navigation.
-    Node* enclosingLinkEventParentOrSelf();
+    // Returns the enclosing event parent Element (or self) that, when clicked, would trigger a navigation.
+    Element* enclosingLinkEventParentOrSelf();
 
     // These low-level calls give the caller responsibility for maintaining the integrity of the tree.
     void setPreviousSibling(Node* previous) { m_previous = previous; }
index 6e44d5e..322fa08 100644 (file)
@@ -4450,7 +4450,7 @@ bool RenderLayer::hitTest(const HitTestRequest& request, const HitTestLocation&
     // Now determine if the result is inside an anchor - if the urlElement isn't already set.
     Node* node = result.innerNode();
     if (node && !result.URLElement())
-        result.setURLElement(toElement(node->enclosingLinkEventParentOrSelf()));
+        result.setURLElement(node->enclosingLinkEventParentOrSelf());
 
     // Now return whether we were inside this layer (this will always be true for the root
     // layer).