Index: Source/core/dom/NodeTraversal.h |
diff --git a/Source/core/dom/NodeTraversal.h b/Source/core/dom/NodeTraversal.h |
index c0c9053e0aec733cd7b04df5acb1b7a364564dcb..652d7025e9dbaed598d867f8173237bebbdd0310 100644 |
--- a/Source/core/dom/NodeTraversal.h |
+++ b/Source/core/dom/NodeTraversal.h |
@@ -26,6 +26,7 @@ |
#ifndef NodeTraversal_h |
#define NodeTraversal_h |
+#include "core/dom/ContainerNode.h" |
#include "core/dom/Node.h" |
namespace blink { |
@@ -67,6 +68,7 @@ public: |
static Node* nextAncestorSibling(const Node&); |
static Node* nextAncestorSibling(const Node&, const Node* stayWithin); |
+ static Node& highestAncestorOrSelf(Node&); |
private: |
template <class NodeType> |
@@ -113,6 +115,14 @@ inline Node* NodeTraversal::nextSkippingChildren(const Node& current, const Node |
return nextAncestorSibling(current, stayWithin); |
} |
+inline Node& NodeTraversal::highestAncestorOrSelf(Node& current) |
+{ |
+ Node* highest = ¤t; |
+ while (highest->parentNode()) |
+ highest = highest->parentNode(); |
+ return *highest; |
+} |
+ |
} // namespace blink |
#endif |