Chromium Code Reviews| 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) |