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 980c001aa355b35782d8dde72bd17f7dbd9de122..e6f2e37f9072936952c76d111cfd49cc0e6f0854 100644 |
--- a/third_party/WebKit/Source/core/css/cssom/StylePropertyMap.cpp |
+++ b/third_party/WebKit/Source/core/css/cssom/StylePropertyMap.cpp |
@@ -12,6 +12,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; |
+ |
+ const StylePropertyMap::StylePropertyMapEntry& pair = m_values.at(m_index++); |
+ 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 |