Title: [103664] trunk/Source/WebCore
Revision
103664
Author
[email protected]
Date
2011-12-24 14:08:02 -0800 (Sat, 24 Dec 2011)

Log Message

CSSElementStyleDeclarations should never move between elements.
<http://webkit.org/b/75198>

Reviewed by Anders Carlsson.

Have the CSSElementStyleDeclaration subclasses take a StyledElement* in
the constructor and replace setElement(StyledElement*) by clearElement().

No behavior change, just enforcing the current behavior at compile-time.

* css/CSSElementStyleDeclaration.h:
(WebCore::CSSElementStyleDeclaration::clearElement):
(WebCore::CSSElementStyleDeclaration::CSSElementStyleDeclaration):
* css/CSSInlineStyleDeclaration.h:
(WebCore::CSSInlineStyleDeclaration::create):
(WebCore::CSSInlineStyleDeclaration::CSSInlineStyleDeclaration):
* dom/StyledElement.cpp:
(WebCore::StyledElement::createInlineStyleDecl):
(WebCore::StyledElement::destroyInlineStyleDecl):
* svg/SVGFontFaceElement.cpp:
(WebCore::FontFaceStyleDeclaration::FontFaceStyleDeclaration):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (103663 => 103664)


--- trunk/Source/WebCore/ChangeLog	2011-12-24 21:24:59 UTC (rev 103663)
+++ trunk/Source/WebCore/ChangeLog	2011-12-24 22:08:02 UTC (rev 103664)
@@ -1,3 +1,27 @@
+2011-12-24  Andreas Kling  <[email protected]>
+
+        CSSElementStyleDeclarations should never move between elements.
+        <http://webkit.org/b/75198>
+
+        Reviewed by Anders Carlsson.
+
+        Have the CSSElementStyleDeclaration subclasses take a StyledElement* in
+        the constructor and replace setElement(StyledElement*) by clearElement().
+
+        No behavior change, just enforcing the current behavior at compile-time.
+
+        * css/CSSElementStyleDeclaration.h:
+        (WebCore::CSSElementStyleDeclaration::clearElement):
+        (WebCore::CSSElementStyleDeclaration::CSSElementStyleDeclaration):
+        * css/CSSInlineStyleDeclaration.h:
+        (WebCore::CSSInlineStyleDeclaration::create):
+        (WebCore::CSSInlineStyleDeclaration::CSSInlineStyleDeclaration):
+        * dom/StyledElement.cpp:
+        (WebCore::StyledElement::createInlineStyleDecl):
+        (WebCore::StyledElement::destroyInlineStyleDecl):
+        * svg/SVGFontFaceElement.cpp:
+        (WebCore::FontFaceStyleDeclaration::FontFaceStyleDeclaration):
+
 2011-12-23  Andreas Kling  <[email protected]>
 
         Decouple CSSMappedAttributeDeclaration from element completely.

Modified: trunk/Source/WebCore/css/CSSElementStyleDeclaration.h (103663 => 103664)


--- trunk/Source/WebCore/css/CSSElementStyleDeclaration.h	2011-12-24 21:24:59 UTC (rev 103663)
+++ trunk/Source/WebCore/css/CSSElementStyleDeclaration.h	2011-12-24 22:08:02 UTC (rev 103664)
@@ -37,14 +37,14 @@
 class CSSElementStyleDeclaration : public CSSMutableStyleDeclaration {
 public:
     StyledElement* element() const { return m_element; }
-    void setElement(StyledElement* element) { m_element = element; }
+    void clearElement() { m_element = 0; }
 
     virtual CSSStyleSheet* styleSheet() const;
 
 protected:
-    CSSElementStyleDeclaration(bool isInline)
+    CSSElementStyleDeclaration(StyledElement* element, bool isInline)
         : CSSMutableStyleDeclaration()
-        , m_element(0)
+        , m_element(element)
     {
         m_isElementStyleDeclaration = true;
         m_isInlineStyleDeclaration = isInline;

Modified: trunk/Source/WebCore/css/CSSInlineStyleDeclaration.h (103663 => 103664)


--- trunk/Source/WebCore/css/CSSInlineStyleDeclaration.h	2011-12-24 21:24:59 UTC (rev 103663)
+++ trunk/Source/WebCore/css/CSSInlineStyleDeclaration.h	2011-12-24 22:08:02 UTC (rev 103664)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2004, 2005, 2006, 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2004, 2005, 2006, 2008, 2011 Apple Inc. All rights reserved.
  * Copyright (C) 2011 Andreas Kling ([email protected])
  *
  * Redistribution and use in source and binary forms, with or without
@@ -35,14 +35,14 @@
 public:
     virtual ~CSSInlineStyleDeclaration() { }
 
-    static PassRefPtr<CSSInlineStyleDeclaration> create()
+    static PassRefPtr<CSSInlineStyleDeclaration> create(StyledElement* element)
     {
-        return adoptRef(new CSSInlineStyleDeclaration);
+        return adoptRef(new CSSInlineStyleDeclaration(element));
     }
 
 private:
-    CSSInlineStyleDeclaration()
-        : CSSElementStyleDeclaration(/* isInline */ true)
+    CSSInlineStyleDeclaration(StyledElement* element)
+        : CSSElementStyleDeclaration(element, /* isInline */ true)
     {
     }
 };

Modified: trunk/Source/WebCore/dom/StyledElement.cpp (103663 => 103664)


--- trunk/Source/WebCore/dom/StyledElement.cpp	2011-12-24 21:24:59 UTC (rev 103663)
+++ trunk/Source/WebCore/dom/StyledElement.cpp	2011-12-24 22:08:02 UTC (rev 103664)
@@ -130,8 +130,7 @@
 void StyledElement::createInlineStyleDecl()
 {
     ASSERT(!m_inlineStyleDecl);
-    m_inlineStyleDecl = CSSInlineStyleDeclaration::create();
-    m_inlineStyleDecl->setElement(this);
+    m_inlineStyleDecl = CSSInlineStyleDeclaration::create(this);
     m_inlineStyleDecl->setStrictParsing(isHTMLElement() && !document()->inQuirksMode());
 }
 
@@ -139,7 +138,7 @@
 {
     if (!m_inlineStyleDecl)
         return;
-    m_inlineStyleDecl->setElement(0);
+    m_inlineStyleDecl->clearElement();
     m_inlineStyleDecl = 0;
 }
 

Modified: trunk/Source/WebCore/svg/SVGFontFaceElement.cpp (103663 => 103664)


--- trunk/Source/WebCore/svg/SVGFontFaceElement.cpp	2011-12-24 21:24:59 UTC (rev 103663)
+++ trunk/Source/WebCore/svg/SVGFontFaceElement.cpp	2011-12-24 22:08:02 UTC (rev 103664)
@@ -68,9 +68,8 @@
 
 private:
     FontFaceStyleDeclaration(SVGFontFaceElement* element)
-        : CSSElementStyleDeclaration(/* isInline */ false)
+        : CSSElementStyleDeclaration(element, /* isInline */ false)
     {
-        setElement(element);
     }
 };
 
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to