Index: Source/core/dom/LiveNodeList.cpp |
diff --git a/Source/core/dom/LiveNodeList.cpp b/Source/core/dom/LiveNodeList.cpp |
index b437e68908ef5f953b87c4a67035faba2adf0f00..94f300eb63a5da533d7edd5a9fae1fa08cc299bb 100644 |
--- a/Source/core/dom/LiveNodeList.cpp |
+++ b/Source/core/dom/LiveNodeList.cpp |
@@ -25,10 +25,24 @@ |
namespace blink { |
-static inline bool isMatchingElement(const LiveNodeList& nodeList, const Element& element) |
-{ |
- return nodeList.elementMatches(element); |
-} |
+namespace { |
+ |
+class IsMatch { |
+public: |
+ IsMatch(const LiveNodeList& list) |
+ : m_list(list) |
+ { } |
+ |
+ bool operator() (const Element& element) const |
+ { |
+ return m_list.elementMatches(element); |
+ } |
+ |
+private: |
+ const LiveNodeList& m_list; |
+}; |
+ |
+} // namespace |
Node* LiveNodeList::virtualOwnerNode() const |
{ |
@@ -52,22 +66,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) |