Index: Source/core/css/StylePropertySet.h |
diff --git a/Source/core/css/StylePropertySet.h b/Source/core/css/StylePropertySet.h |
index 725257f14dc21326513f34d0f33830dd439e3559..7cf499e62b2536b00b5a80584da78d368901fd91 100644 |
--- a/Source/core/css/StylePropertySet.h |
+++ b/Source/core/css/StylePropertySet.h |
@@ -25,6 +25,7 @@ |
#include "core/css/CSSParserMode.h" |
#include "core/css/CSSPrimitiveValue.h" |
#include "core/css/CSSProperty.h" |
+#include "core/css/CSSVariablesIterator.h" |
#include "core/css/PropertySetCSSStyleDeclaration.h" |
#include "wtf/ListHashSet.h" |
#include "wtf/Vector.h" |
@@ -171,6 +172,7 @@ inline const StylePropertyMetadata* ImmutableStylePropertySet::metadataArray() c |
class MutableStylePropertySet : public StylePropertySet { |
public: |
+ ~MutableStylePropertySet() { } |
static PassRefPtr<MutableStylePropertySet> create(CSSParserMode = CSSQuirksMode); |
static PassRefPtr<MutableStylePropertySet> create(const CSSProperty* properties, unsigned count); |
@@ -201,6 +203,8 @@ public: |
bool removeVariable(const AtomicString& name); |
bool clearVariables(); |
+ PassRefPtr<CSSVariablesIterator> variablesIterator() { return VariablesIterator::create(this); } |
+ |
void mergeAndOverrideOnConflict(const StylePropertySet*); |
void clear(); |
@@ -212,6 +216,25 @@ public: |
Vector<CSSProperty, 4> m_propertyVector; |
private: |
+ class VariablesIterator : public CSSVariablesIterator { |
+ public: |
+ virtual ~VariablesIterator() { } |
+ static PassRefPtr<VariablesIterator> create(MutableStylePropertySet*); |
+ private: |
+ explicit VariablesIterator(MutableStylePropertySet* propertySet) : m_propertySet(propertySet) { } |
+ virtual void advance() OVERRIDE; |
+ virtual bool atEnd() const OVERRIDE { return m_remainingNames.isEmpty(); } |
+ virtual AtomicString name() const OVERRIDE { return m_remainingNames.last(); } |
+ virtual String value() const OVERRIDE { return m_propertySet->variableValue(name()); } |
+ virtual void addedVariable(const AtomicString& name) OVERRIDE; |
+ virtual void removedVariable(const AtomicString& name) OVERRIDE; |
+ virtual void clearedVariables() OVERRIDE; |
+ |
+ Vector<AtomicString> m_remainingNames; |
+ Vector<AtomicString> m_newNames; |
+ RefPtr<MutableStylePropertySet> m_propertySet; |
+ }; |
+ |
explicit MutableStylePropertySet(CSSParserMode); |
explicit MutableStylePropertySet(const StylePropertySet&); |
MutableStylePropertySet(const CSSProperty* properties, unsigned count); |