Index: Source/core/dom/LiveNodeList.cpp |
diff --git a/Source/core/dom/LiveNodeList.cpp b/Source/core/dom/LiveNodeList.cpp |
index b437e68908ef5f953b87c4a67035faba2adf0f00..0ebc03ff982df74c1bdd491632df76e7c12cb49f 100644 |
--- a/Source/core/dom/LiveNodeList.cpp |
+++ b/Source/core/dom/LiveNodeList.cpp |
@@ -25,10 +25,20 @@ |
namespace blink { |
-static inline bool isMatchingElement(const LiveNodeList& nodeList, const Element& element) |
-{ |
- return nodeList.elementMatches(element); |
-} |
+class IsMatch { |
adamk
2014/08/13 20:53:55
This should be in an anonymous namespace to avoid
Inactive
2014/08/13 21:17:19
Done.
|
+public: |
+ IsMatch(const LiveNodeList& list) |
+ : m_list(list) |
+ { } |
+ |
+ bool operator() (const Element& element) const |
+ { |
+ return m_list.elementMatches(element); |
+ } |
+ |
+private: |
+ const LiveNodeList& m_list; |
+}; |
Node* LiveNodeList::virtualOwnerNode() const |
{ |
@@ -52,22 +62,22 @@ Element* LiveNodeList::item(unsigned offset) const |
Element* LiveNodeList::traverseToFirstElement() const |
{ |
- return firstMatchingElement(*this); |
+ return ElementTraversal::firstWithin(rootNode(), IsMatch(*this)); |
} |
Element* LiveNodeList::traverseToLastElement() const |
{ |
- return lastMatchingElement(*this); |
+ return ElementTraversal::lastWithin(rootNode(), IsMatch(*this)); |
} |
-Element* LiveNodeList::traverseForwardToOffset(unsigned offset, Element& currentNode, unsigned& currentOffset) const |
+Element* LiveNodeList::traverseForwardToOffset(unsigned offset, Element& currentElement, unsigned& currentOffset) const |
{ |
- return traverseMatchingElementsForwardToOffset(*this, offset, currentNode, currentOffset); |
+ return traverseMatchingElementsForwardToOffset(currentElement, &rootNode(), offset, currentOffset, IsMatch(*this)); |
} |
-Element* LiveNodeList::traverseBackwardToOffset(unsigned offset, Element& currentNode, unsigned& currentOffset) const |
+Element* LiveNodeList::traverseBackwardToOffset(unsigned offset, Element& currentElement, unsigned& currentOffset) const |
{ |
- return traverseMatchingElementsBackwardToOffset(*this, offset, currentNode, currentOffset); |
+ return traverseMatchingElementsBackwardToOffset(currentElement, &rootNode(), offset, currentOffset, IsMatch(*this)); |
} |
void LiveNodeList::trace(Visitor* visitor) |