Title: [105773] trunk/Source/WebCore
Revision
105773
Author
[email protected]
Date
2012-01-24 12:27:06 -0800 (Tue, 24 Jan 2012)

Log Message

Unreviewed, rolling out r105738.
http://trac.webkit.org/changeset/105738
https://bugs.webkit.org/show_bug.cgi?id=76930

caused fast/css/getComputedStyle/computed-style-border-
image.html to crash (Requested by kling on #webkit).

Patch by Sheriff Bot <[email protected]> on 2012-01-24

* dom/NamedNodeMap.cpp:
* dom/NamedNodeMap.h:
* dom/StyledElement.cpp:
(WebCore::StyledElement::updateStyleAttribute):
(WebCore::StyledElement::createInlineStyleDecl):
(WebCore::StyledElement::destroyInlineStyleDecl):
(WebCore::StyledElement::ensureInlineStyleDecl):
(WebCore::StyledElement::style):
(WebCore::StyledElement::addSubresourceAttributeURLs):
* dom/StyledElement.h:
(WebCore::StyledElement::inlineStyleDecl):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (105772 => 105773)


--- trunk/Source/WebCore/ChangeLog	2012-01-24 20:24:11 UTC (rev 105772)
+++ trunk/Source/WebCore/ChangeLog	2012-01-24 20:27:06 UTC (rev 105773)
@@ -1,3 +1,24 @@
+2012-01-24  Sheriff Bot  <[email protected]>
+
+        Unreviewed, rolling out r105738.
+        http://trac.webkit.org/changeset/105738
+        https://bugs.webkit.org/show_bug.cgi?id=76930
+
+        caused fast/css/getComputedStyle/computed-style-border-
+        image.html to crash (Requested by kling on #webkit).
+
+        * dom/NamedNodeMap.cpp:
+        * dom/NamedNodeMap.h:
+        * dom/StyledElement.cpp:
+        (WebCore::StyledElement::updateStyleAttribute):
+        (WebCore::StyledElement::createInlineStyleDecl):
+        (WebCore::StyledElement::destroyInlineStyleDecl):
+        (WebCore::StyledElement::ensureInlineStyleDecl):
+        (WebCore::StyledElement::style):
+        (WebCore::StyledElement::addSubresourceAttributeURLs):
+        * dom/StyledElement.h:
+        (WebCore::StyledElement::inlineStyleDecl):
+
 2012-01-24  Parag Radke  <[email protected]>
 
         REGRESSION (r73385): Marquee with behavior="alternate" is not working

Modified: trunk/Source/WebCore/dom/NamedNodeMap.cpp (105772 => 105773)


--- trunk/Source/WebCore/dom/NamedNodeMap.cpp	2012-01-24 20:24:11 UTC (rev 105772)
+++ trunk/Source/WebCore/dom/NamedNodeMap.cpp	2012-01-24 20:27:06 UTC (rev 105773)
@@ -27,9 +27,9 @@
 
 #include "Attr.h"
 #include "Document.h"
+#include "Element.h"
 #include "ExceptionCode.h"
 #include "HTMLNames.h"
-#include "StyledElement.h"
 
 namespace WebCore {
 
@@ -330,27 +330,4 @@
     return true;
 }
 
-CSSMutableStyleDeclaration* NamedNodeMap::ensureInlineStyleDecl()
-{
-    if (!m_inlineStyleDecl)
-        createInlineStyleDecl();
-    return m_inlineStyleDecl.get();
-}
-
-void NamedNodeMap::destroyInlineStyleDecl()
-{
-    if (!m_inlineStyleDecl)
-        return;
-    m_inlineStyleDecl->clearParentElement();
-    m_inlineStyleDecl = 0;
-}
-
-void NamedNodeMap::createInlineStyleDecl()
-{
-    ASSERT(!m_inlineStyleDecl);
-    ASSERT(m_element->isStyledElement());
-    m_inlineStyleDecl = CSSMutableStyleDeclaration::createInline(static_cast<StyledElement*>(m_element));
-    m_inlineStyleDecl->setStrictParsing(m_element->isHTMLElement() && !m_element->document()->inQuirksMode());
-}
-
 } // namespace WebCore

Modified: trunk/Source/WebCore/dom/NamedNodeMap.h (105772 => 105773)


--- trunk/Source/WebCore/dom/NamedNodeMap.h	2012-01-24 20:24:11 UTC (rev 105772)
+++ trunk/Source/WebCore/dom/NamedNodeMap.h	2012-01-24 20:27:06 UTC (rev 105773)
@@ -102,10 +102,6 @@
 
     size_t mappedAttributeCount() const;
 
-    CSSMutableStyleDeclaration* inlineStyleDecl() const { return m_inlineStyleDecl.get(); }
-    CSSMutableStyleDeclaration* ensureInlineStyleDecl();
-    void destroyInlineStyleDecl();
-
 private:
     NamedNodeMap(Element* element)
         : m_element(element)
@@ -120,17 +116,11 @@
     void setAttributes(const NamedNodeMap&);
     void clearAttributes();
     void replaceAttribute(size_t index, PassRefPtr<Attribute>);
-    void createInlineStyleDecl();
 
-    // FIXME: NamedNodeMap should be broken up into two classes, one containing data
-    //        for elements with attributes, and one for exposure to the DOM.
-    //        See <http://webkit.org/b/75069> for more information.
-
     SpaceSplitString m_classNames;
     Element* m_element;
     Vector<RefPtr<Attribute>, 4> m_attributes;
     AtomicString m_idForStyleResolution;
-    RefPtr<CSSMutableStyleDeclaration> m_inlineStyleDecl;
 };
 
 inline Attribute* NamedNodeMap::getAttributeItem(const QualifiedName& name) const

Modified: trunk/Source/WebCore/dom/StyledElement.cpp (105772 => 105773)


--- trunk/Source/WebCore/dom/StyledElement.cpp	2012-01-24 20:24:11 UTC (rev 105772)
+++ trunk/Source/WebCore/dom/StyledElement.cpp	2012-01-24 20:27:06 UTC (rev 105773)
@@ -112,8 +112,8 @@
     ASSERT(!isStyleAttributeValid());
     setIsStyleAttributeValid();
     setIsSynchronizingStyleAttribute();
-    if (CSSMutableStyleDeclaration* inlineStyle = inlineStyleDecl())
-        const_cast<StyledElement*>(this)->setAttribute(styleAttr, inlineStyle->cssText());
+    if (m_inlineStyleDecl)
+        const_cast<StyledElement*>(this)->setAttribute(styleAttr, m_inlineStyleDecl->cssText());
     clearIsSynchronizingStyleAttribute();
 }
 
@@ -127,6 +127,21 @@
     return Attribute::createMapped(name, value);
 }
 
+void StyledElement::createInlineStyleDecl()
+{
+    ASSERT(!m_inlineStyleDecl);
+    m_inlineStyleDecl = CSSMutableStyleDeclaration::createInline(this);
+    m_inlineStyleDecl->setStrictParsing(isHTMLElement() && !document()->inQuirksMode());
+}
+
+void StyledElement::destroyInlineStyleDecl()
+{
+    if (!m_inlineStyleDecl)
+        return;
+    m_inlineStyleDecl->clearParentElement();
+    m_inlineStyleDecl = 0;
+}
+
 void StyledElement::attributeChanged(Attribute* attr, bool preserveDecls)
 {
     if (attr->name() == HTMLNames::nameAttr)
@@ -225,6 +240,18 @@
     }
 }
 
+CSSMutableStyleDeclaration* StyledElement::ensureInlineStyleDecl()
+{
+    if (!m_inlineStyleDecl)
+        createInlineStyleDecl();
+    return m_inlineStyleDecl.get();
+}
+
+CSSStyleDeclaration* StyledElement::style()
+{
+    return ensureInlineStyleDecl();
+}
+
 void StyledElement::removeCSSProperty(Attribute* attribute, int id)
 {
     if (!attribute->decl())
@@ -416,8 +443,9 @@
 
 void StyledElement::addSubresourceAttributeURLs(ListHashSet<KURL>& urls) const
 {
-    if (CSSMutableStyleDeclaration* inlineStyle = inlineStyleDecl())
-        inlineStyle->addSubresourceStyleURLs(urls);
+    if (!m_inlineStyleDecl)
+        return;
+    m_inlineStyleDecl->addSubresourceStyleURLs(urls);
 }
 
 }

Modified: trunk/Source/WebCore/dom/StyledElement.h (105772 => 105773)


--- trunk/Source/WebCore/dom/StyledElement.h	2012-01-24 20:24:11 UTC (rev 105772)
+++ trunk/Source/WebCore/dom/StyledElement.h	2012-01-24 20:27:06 UTC (rev 105773)
@@ -59,9 +59,9 @@
     virtual void additionalAttributeStyleDecls(Vector<CSSMutableStyleDeclaration*>&) { }
     void invalidateStyleAttribute();
 
-    CSSMutableStyleDeclaration* inlineStyleDecl() const { return attributeMap() ? attributeMap()->inlineStyleDecl() : 0; }
-    CSSMutableStyleDeclaration* ensureInlineStyleDecl() { return attributes(false)->ensureInlineStyleDecl(); }
-    virtual CSSStyleDeclaration* style() OVERRIDE { return ensureInlineStyleDecl(); }
+    CSSMutableStyleDeclaration* inlineStyleDecl() const { return m_inlineStyleDecl.get(); }
+    CSSMutableStyleDeclaration* ensureInlineStyleDecl();
+    virtual CSSStyleDeclaration* style() OVERRIDE;
 
     const SpaceSplitString& classNames() const;
 
@@ -89,8 +89,11 @@
 private:
     void createMappedDecl(Attribute*);
 
+    void createInlineStyleDecl();
+    void destroyInlineStyleDecl();
     virtual void updateStyleAttribute() const;
-    void destroyInlineStyleDecl() { if (attributeMap()) attributeMap()->destroyInlineStyleDecl(); }
+
+    RefPtr<CSSMutableStyleDeclaration> m_inlineStyleDecl;
 };
 
 inline const SpaceSplitString& StyledElement::classNames() const
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to