summaryrefslogtreecommitdiff
path: root/Source/WebCore/css/PropertySetCSSStyleDeclaration.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/css/PropertySetCSSStyleDeclaration.h')
-rw-r--r--Source/WebCore/css/PropertySetCSSStyleDeclaration.h50
1 files changed, 30 insertions, 20 deletions
diff --git a/Source/WebCore/css/PropertySetCSSStyleDeclaration.h b/Source/WebCore/css/PropertySetCSSStyleDeclaration.h
index 0edb98cf4..2b8f41295 100644
--- a/Source/WebCore/css/PropertySetCSSStyleDeclaration.h
+++ b/Source/WebCore/css/PropertySetCSSStyleDeclaration.h
@@ -32,9 +32,9 @@ namespace WebCore {
class CSSRule;
class CSSProperty;
-class CSSStyleSheet;
class CSSValue;
class StylePropertySet;
+class StyleSheetInternal;
class StyledElement;
class PropertySetCSSStyleDeclaration : public CSSStyleDeclaration {
@@ -42,14 +42,13 @@ public:
PropertySetCSSStyleDeclaration(StylePropertySet* propertySet) : m_propertySet(propertySet) { }
virtual StyledElement* parentElement() const { return 0; }
- virtual void clearParentRule() { ASSERT_NOT_REACHED(); }
virtual void clearParentElement() { ASSERT_NOT_REACHED(); }
- virtual CSSStyleSheet* contextStyleSheet() const { return 0; }
+ StyleSheetInternal* contextStyleSheet() const;
-private:
virtual void ref() OVERRIDE;
virtual void deref() OVERRIDE;
-
+
+private:
virtual CSSRule* parentRule() const OVERRIDE { return 0; };
virtual unsigned length() const OVERRIDE;
virtual String item(unsigned index) const OVERRIDE;
@@ -67,30 +66,41 @@ private:
virtual void setPropertyInternal(CSSPropertyID, const String& value, bool important, ExceptionCode&) OVERRIDE;
virtual bool cssPropertyMatches(const CSSProperty*) const OVERRIDE;
- virtual CSSStyleSheet* parentStyleSheet() const OVERRIDE;
virtual PassRefPtr<StylePropertySet> copy() const OVERRIDE;
virtual PassRefPtr<StylePropertySet> makeMutable() OVERRIDE;
- virtual void setNeedsStyleRecalc() { }
+ virtual void setNeedsStyleRecalc() { }
+
+ void didMutate();
+ CSSValue* cloneAndCacheForCSSOM(CSSValue*);
protected:
StylePropertySet* m_propertySet;
+ OwnPtr<HashMap<CSSValue*, RefPtr<CSSValue> > > m_cssomCSSValueClones;
};
-class RuleCSSStyleDeclaration : public PropertySetCSSStyleDeclaration
+class StyleRuleCSSStyleDeclaration : public PropertySetCSSStyleDeclaration
{
public:
- RuleCSSStyleDeclaration(StylePropertySet* propertySet, CSSRule* parentRule)
- : PropertySetCSSStyleDeclaration(propertySet)
- , m_parentRule(parentRule)
+ static PassRefPtr<StyleRuleCSSStyleDeclaration> create(StylePropertySet* propertySet, CSSRule* parentRule)
{
+ return adoptRef(new StyleRuleCSSStyleDeclaration(propertySet, parentRule));
}
+
+ void clearParentRule() { m_parentRule = 0; }
-private:
- virtual CSSRule* parentRule() const { return m_parentRule; };
- virtual void clearParentRule() { m_parentRule = 0; }
- virtual void setNeedsStyleRecalc();
- virtual CSSStyleSheet* contextStyleSheet() const;
+ virtual void ref() OVERRIDE;
+ virtual void deref() OVERRIDE;
+
+private:
+ StyleRuleCSSStyleDeclaration(StylePropertySet*, CSSRule*);
+ virtual ~StyleRuleCSSStyleDeclaration();
+
+ virtual CSSStyleSheet* parentStyleSheet() const OVERRIDE;
+
+ virtual CSSRule* parentRule() const OVERRIDE { return m_parentRule; }
+ virtual void setNeedsStyleRecalc() OVERRIDE;
+ unsigned m_refCount;
CSSRule* m_parentRule;
};
@@ -104,10 +114,10 @@ public:
}
private:
- virtual StyledElement* parentElement() const { return m_parentElement; }
- virtual void clearParentElement() { m_parentElement = 0; }
- virtual void setNeedsStyleRecalc();
- virtual CSSStyleSheet* contextStyleSheet() const;
+ virtual CSSStyleSheet* parentStyleSheet() const OVERRIDE;
+ virtual StyledElement* parentElement() const OVERRIDE { return m_parentElement; }
+ virtual void clearParentElement() OVERRIDE { m_parentElement = 0; }
+ virtual void setNeedsStyleRecalc() OVERRIDE;
StyledElement* m_parentElement;
};