Remove CSSStyleDeclaration isElementStyleDeclaration bit
authorantti@apple.com <antti@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 31 Jan 2012 21:24:12 +0000 (21:24 +0000)
committerantti@apple.com <antti@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 31 Jan 2012 21:24:12 +0000 (21:24 +0000)
https://bugs.webkit.org/show_bug.cgi?id=77460

Reviewed by Andreas Kling.

Inline style declaration is now the only type of style declaration with element parent.
We can remove the bit and the associated logic.

* bindings/js/JSDOMBinding.h:
(WebCore::root):
* css/CSSMutableStyleDeclaration.cpp:
(WebCore::CSSMutableStyleDeclaration::CSSMutableStyleDeclaration):
(WebCore::CSSMutableStyleDeclaration::setNeedsStyleRecalc):
* css/CSSMutableStyleDeclaration.h:
(WebCore::CSSMutableStyleDeclaration::createInline):
(CSSMutableStyleDeclaration):
* css/CSSStyleDeclaration.cpp:
(WebCore::CSSStyleDeclaration::CSSStyleDeclaration):
(WebCore):
(WebCore::CSSStyleDeclaration::parentStyleSheet):
* css/CSSStyleDeclaration.h:
(WebCore::CSSStyleDeclaration::parentRule):
(WebCore::CSSStyleDeclaration::clearParentRule):
(WebCore::CSSStyleDeclaration::parentElement):
(WebCore::CSSStyleDeclaration::clearParentElement):
(CSSStyleDeclaration):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@106384 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/bindings/js/JSDOMBinding.h
Source/WebCore/css/CSSMutableStyleDeclaration.cpp
Source/WebCore/css/CSSMutableStyleDeclaration.h
Source/WebCore/css/CSSStyleDeclaration.cpp
Source/WebCore/css/CSSStyleDeclaration.h

index 1150b1e..adc4505 100644 (file)
@@ -1,3 +1,32 @@
+2012-01-31  Antti Koivisto  <antti@apple.com>
+
+        Remove CSSStyleDeclaration isElementStyleDeclaration bit
+        https://bugs.webkit.org/show_bug.cgi?id=77460
+
+        Reviewed by Andreas Kling.
+
+        Inline style declaration is now the only type of style declaration with element parent.
+        We can remove the bit and the associated logic.
+
+        * bindings/js/JSDOMBinding.h:
+        (WebCore::root):
+        * css/CSSMutableStyleDeclaration.cpp:
+        (WebCore::CSSMutableStyleDeclaration::CSSMutableStyleDeclaration):
+        (WebCore::CSSMutableStyleDeclaration::setNeedsStyleRecalc):
+        * css/CSSMutableStyleDeclaration.h:
+        (WebCore::CSSMutableStyleDeclaration::createInline):
+        (CSSMutableStyleDeclaration):
+        * css/CSSStyleDeclaration.cpp:
+        (WebCore::CSSStyleDeclaration::CSSStyleDeclaration):
+        (WebCore):
+        (WebCore::CSSStyleDeclaration::parentStyleSheet):
+        * css/CSSStyleDeclaration.h:
+        (WebCore::CSSStyleDeclaration::parentRule):
+        (WebCore::CSSStyleDeclaration::clearParentRule):
+        (WebCore::CSSStyleDeclaration::parentElement):
+        (WebCore::CSSStyleDeclaration::clearParentElement):
+        (CSSStyleDeclaration):
+
 2012-01-31  Dana Jansens  <danakj@chromium.org>
 
         [chromium] Compute occlusion during paint loop
index a6e6e7d..af147e8 100644 (file)
@@ -209,8 +209,6 @@ enum ParameterMissingPolicy {
             return root(parentRule);
         if (CSSStyleSheet* styleSheet = style->parentStyleSheet())
             return root(styleSheet);
-        // A style declaration with an associated element should've returned a style sheet above.
-        ASSERT(!style->isElementStyleDeclaration() || !static_cast<CSSMutableStyleDeclaration*>(style)->parentElement());
         return style;
     }
 
index a7e4a07..c8d8bbb 100644 (file)
@@ -134,7 +134,6 @@ bool StyleAttributeMutationScope::s_shouldDeliver = false;
 } // namespace
 
 CSSMutableStyleDeclaration::CSSMutableStyleDeclaration()
-    : CSSStyleDeclaration(0)
 {
     // This constructor is used for various inline style declarations, so disable strict parsing.
     m_strictParsing = false;
@@ -175,8 +174,8 @@ CSSMutableStyleDeclaration::CSSMutableStyleDeclaration(CSSRule* parent, const CS
     }
 }
 
-CSSMutableStyleDeclaration::CSSMutableStyleDeclaration(StyledElement* element, bool isInline
-    : CSSStyleDeclaration(element, isInline)
+CSSMutableStyleDeclaration::CSSMutableStyleDeclaration(StyledElement* element) 
+    : CSSStyleDeclaration(element)
 { 
 }
 
@@ -643,15 +642,13 @@ String CSSMutableStyleDeclaration::removeProperty(int propertyID, bool notifyCha
 
 void CSSMutableStyleDeclaration::setNeedsStyleRecalc()
 {
-    if (isElementStyleDeclaration() && parentElement()) {
+    if (isInlineStyleDeclaration()) {
         StyledElement* element = parentElement();
-        if (!isInlineStyleDeclaration())
-            element->setNeedsStyleRecalc(FullStyleChange);
-        else {
-            element->setNeedsStyleRecalc(InlineStyleChange);
-            element->invalidateStyleAttribute();
-            StyleAttributeMutationScope(this).didInvalidateStyleAttr();
-        }
+        if (!element)
+            return;
+        element->setNeedsStyleRecalc(InlineStyleChange);
+        element->invalidateStyleAttribute();
+        StyleAttributeMutationScope(this).didInvalidateStyleAttr();
         return;
     }
 
index c2f1b11..089de6c 100644 (file)
@@ -55,7 +55,7 @@ public:
     }
     static PassRefPtr<CSSMutableStyleDeclaration> createInline(StyledElement* element)
     { 
-        return adoptRef(new CSSMutableStyleDeclaration(element, true));
+        return adoptRef(new CSSMutableStyleDeclaration(element));
     }
 
     unsigned propertyCount() const { return m_properties.size(); }
@@ -115,7 +115,7 @@ private:
     CSSMutableStyleDeclaration(CSSRule* parentRule);
     CSSMutableStyleDeclaration(CSSRule* parentRule, const Vector<CSSProperty>&);
     CSSMutableStyleDeclaration(CSSRule* parentRule, const CSSProperty* const *, int numProperties);
-    CSSMutableStyleDeclaration(StyledElement*, bool isInline);
+    CSSMutableStyleDeclaration(StyledElement*);
 
     virtual PassRefPtr<CSSMutableStyleDeclaration> makeMutable();
 
index 08d8eb5..133fea2 100644 (file)
@@ -41,34 +41,25 @@ namespace WebCore {
 
 CSSStyleDeclaration::CSSStyleDeclaration(CSSRule* parentRule)
     : m_strictParsing(!parentRule || parentRule->useStrictParsing())
-    , m_isElementStyleDeclaration(false)
     , m_isInlineStyleDeclaration(false)
     , m_parent(parentRule)
 {
 }
-    
-CSSStyleDeclaration::CSSStyleDeclaration(StyledElement* parentElement, bool isInline)
+
+CSSStyleDeclaration::CSSStyleDeclaration(StyledElement* parentElement)
     : m_strictParsing(false)
-    , m_isElementStyleDeclaration(true)
-    , m_isInlineStyleDeclaration(isInline)
+    , m_isInlineStyleDeclaration(true)
     , m_parent(parentElement)
 {
 }
 
 CSSStyleSheet* CSSStyleDeclaration::parentStyleSheet() const
 {
-    if (m_isElementStyleDeclaration) {
-        if (!m_parent.element)
-            return 0;
-        Document* document = m_parent.element->document();
-        if (!document)
-            return 0;
-        // If this is not an inline declaration then it is an SVG font face declaration.
-        return m_isInlineStyleDeclaration ? document->elementSheet() : document->mappedElementSheet();
+    if (m_isInlineStyleDeclaration) {
+        Document* document = m_parent.element ? m_parent.element->document() : 0;
+        return document ? document->elementSheet() : 0;
     }
-    if (!m_parent.rule)
-        return 0;
-    return m_parent.rule->parentStyleSheet();
+    return m_parent.rule ? m_parent.rule->parentStyleSheet() : 0;
 }
 
 bool CSSStyleDeclaration::isPropertyName(const String& propertyName)
index 2bf3e0b..12910da 100644 (file)
@@ -42,11 +42,11 @@ public:
 
     static bool isPropertyName(const String&);
 
-    CSSRule* parentRule() const { return m_isElementStyleDeclaration ? 0 : m_parent.rule; }
-    void clearParentRule() { ASSERT(!m_isElementStyleDeclaration); m_parent.rule = 0; }
+    CSSRule* parentRule() const { return m_isInlineStyleDeclaration ? 0 : m_parent.rule; }
+    void clearParentRule() { ASSERT(!m_isInlineStyleDeclaration); m_parent.rule = 0; }
 
-    StyledElement* parentElement() const { ASSERT(m_isElementStyleDeclaration); return m_parent.element; }
-    void clearParentElement() { ASSERT(m_isElementStyleDeclaration); m_parent.element = 0; }
+    StyledElement* parentElement() const { ASSERT(m_isInlineStyleDeclaration); return m_parent.element; }
+    void clearParentElement() { ASSERT(m_isInlineStyleDeclaration); m_parent.element = 0; }
 
     CSSStyleSheet* parentStyleSheet() const;
 
@@ -77,19 +77,17 @@ public:
     void showStyle();
 #endif
 
-    bool isElementStyleDeclaration() const { return m_isElementStyleDeclaration; }
     bool isInlineStyleDeclaration() const { return m_isInlineStyleDeclaration; }
 
 protected:
     CSSStyleDeclaration(CSSRule* parentRule = 0);
-    CSSStyleDeclaration(StyledElement* parentElement, bool isInline);
+    CSSStyleDeclaration(StyledElement* parentElement);
 
     // The bits in this section are only used by specific subclasses but kept here
     // to maximize struct packing.
 
     // CSSMutableStyleDeclaration bits:
     bool m_strictParsing : 1;
-    bool m_isElementStyleDeclaration : 1;
     bool m_isInlineStyleDeclaration : 1;
 
 private: