Index: third_party/WebKit/Source/core/dom/NodeList.cpp |
diff --git a/third_party/WebKit/Source/core/dom/NodeList.cpp b/third_party/WebKit/Source/core/dom/NodeList.cpp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..10d3f197fd3e3dbe9e4ebf88d7ed4fe431b0b721 |
--- /dev/null |
+++ b/third_party/WebKit/Source/core/dom/NodeList.cpp |
@@ -0,0 +1,42 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "config.h" |
+#include "core/dom/NodeList.h" |
+ |
+namespace blink { |
+ |
+namespace { |
+ |
+ class NodeListIterationSource final : public ValueIterable<Node*>::IterationSource { |
+ public: |
+ explicit NodeListIterationSource(NodeList& nodeList) |
+ : m_nodeList(nodeList) |
+ { |
+ } |
+ |
+ bool next(ScriptState* scriptState, Node*& value, ExceptionState& exceptionState) override |
+ { |
+ value = m_nodeList->item(m_index); |
+ return !!value; |
+ } |
+ |
+ DEFINE_INLINE_VIRTUAL_TRACE() |
+ { |
+ visitor->trace(m_nodeList); |
+ ValueIterable<Node*>::IterationSource::trace(visitor); |
+ } |
+ |
+ private: |
+ const RefPtrWillBeMember<NodeList> m_nodeList; |
+ }; |
+ |
+} // namespace |
+ |
+ValueIterable<Node*>::IterationSource* NodeList::startIteration(ScriptState*, ExceptionState&) |
+{ |
+ return new NodeListIterationSource(*this); |
+} |
+ |
+} // namespace blink |