Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(408)

Unified Diff: Source/core/css/StylePropertySet.h

Issue 21006006: Add forEach() to CSSVariablesMap (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Test fixes and rebased onto Python IDL generator Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/core/css/StylePropertySet.h
diff --git a/Source/core/css/StylePropertySet.h b/Source/core/css/StylePropertySet.h
index 7d8be4f50ad4ae1c20962a8e897feb0fb3521343..9389611f8761b2734ddf03810711575d53e330e4 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,31 @@ public:
Vector<CSSProperty, 4> m_propertyVector;
private:
+ class VariablesIterator : public CSSVariablesIterator {
+ public:
+ virtual ~VariablesIterator();
+ static PassRefPtr<VariablesIterator> create(MutableStylePropertySet*);
+ void addedVariable(const AtomicString& name);
+ void removedVariable(const AtomicString& name);
+ void clearedVariables();
+ 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()); }
+
+
+ Vector<AtomicString> m_remainingNames;
+ Vector<AtomicString> m_newNames;
+ RefPtr<MutableStylePropertySet> m_propertySet;
+ };
+
+ typedef Vector<RefPtr<VariablesIterator> > VariablesIterators;
+ VariablesIterators* activeVariablesIterators();
+ typedef HashMap<MutableStylePropertySet*, VariablesIterators > VariablesIteratorsMap;
+ static VariablesIteratorsMap* activeVariablesIteratorsMap();
+
explicit MutableStylePropertySet(CSSParserMode);
explicit MutableStylePropertySet(const StylePropertySet&);
MutableStylePropertySet(const CSSProperty* properties, unsigned count);

Powered by Google App Engine
This is Rietveld 408576698