Index: third_party/WebKit/Source/core/css/cssom/StylePropertyMap.cpp |
diff --git a/third_party/WebKit/Source/core/css/cssom/StylePropertyMap.cpp b/third_party/WebKit/Source/core/css/cssom/StylePropertyMap.cpp |
index cc6cfe380b15f646abce95aa120bc044a784a607..6ae64d92fca32c2dc25d55714b065bfc52f0226a 100644 |
--- a/third_party/WebKit/Source/core/css/cssom/StylePropertyMap.cpp |
+++ b/third_party/WebKit/Source/core/css/cssom/StylePropertyMap.cpp |
@@ -11,6 +11,40 @@ |
namespace blink { |
+namespace { |
+ |
+class StylePropertyMapIterationSource final : public PairIterable<String, StyleValueOrStyleValueSequence>::IterationSource { |
+public: |
+ explicit StylePropertyMapIterationSource(HeapVector<StylePropertyMap::StylePropertyMapEntry> values) |
+ : m_index(0) |
+ , m_values(values) |
+ { |
+ } |
+ |
+ bool next(ScriptState*, String& key, StyleValueOrStyleValueSequence& value, ExceptionState&) override |
+ { |
+ if (m_index >= m_values.size()) |
+ return false; |
+ |
+ StylePropertyMap::StylePropertyMapEntry pair = m_values.at(m_index++); |
Timothy Loh
2016/05/13 04:57:45
const Foo&
meade_UTC10
2016/05/13 05:46:34
Done.
|
+ key = pair.first; |
+ value = pair.second; |
+ return true; |
+ } |
+ |
+ DEFINE_INLINE_VIRTUAL_TRACE() |
+ { |
+ visitor->trace(m_values); |
+ PairIterable<String, StyleValueOrStyleValueSequence>::IterationSource::trace(visitor); |
+ } |
+ |
+private: |
+ size_t m_index; |
+ const HeapVector<StylePropertyMap::StylePropertyMapEntry> m_values; |
+}; |
+ |
+} // namespace |
+ |
StyleValue* StylePropertyMap::get(const String& propertyName, ExceptionState& exceptionState) |
{ |
CSSPropertyID propertyID = cssPropertyID(propertyName); |
@@ -103,4 +137,9 @@ StylePropertyMap::StyleValueVector StylePropertyMap::cssValueToStyleValueVector( |
return styleValueVector; |
} |
+StylePropertyMap::IterationSource* StylePropertyMap::startIteration(ScriptState*, ExceptionState&) |
+{ |
+ return new StylePropertyMapIterationSource(getIterationEntries()); |
+} |
+ |
} // namespace blink |