Unreviewed, rolling out r105999.
authorleviw@chromium.org <leviw@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 29 Jan 2012 23:41:33 +0000 (23:41 +0000)
committerleviw@chromium.org <leviw@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 29 Jan 2012 23:41:33 +0000 (23:41 +0000)
http://trac.webkit.org/changeset/105999
https://bugs.webkit.org/show_bug.cgi?id=77304

Validating that this caused a performance regression in page
load tests. (Requested by leviw on #webkit).

Patch by Sheriff Bot <webkit.review.bot@gmail.com> on 2012-01-29

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

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

Source/WebCore/ChangeLog
Source/WebCore/dom/NamedNodeMap.cpp
Source/WebCore/dom/NamedNodeMap.h
Source/WebCore/dom/StyledElement.cpp
Source/WebCore/dom/StyledElement.h

index f26e65e..1cdbae9 100644 (file)
@@ -1,5 +1,29 @@
 2012-01-29  Sheriff Bot  <webkit.review.bot@gmail.com>
 
+        Unreviewed, rolling out r105999.
+        http://trac.webkit.org/changeset/105999
+        https://bugs.webkit.org/show_bug.cgi?id=77304
+
+        Validating that this caused a performance regression in page
+        load tests. (Requested by leviw on #webkit).
+
+        * dom/NamedNodeMap.cpp:
+        * dom/NamedNodeMap.h:
+        (NamedNodeMap):
+        * dom/StyledElement.cpp:
+        (WebCore::StyledElement::updateStyleAttribute):
+        (WebCore::StyledElement::createInlineStyleDecl):
+        (WebCore):
+        (WebCore::StyledElement::destroyInlineStyleDecl):
+        (WebCore::StyledElement::ensureInlineStyleDecl):
+        (WebCore::StyledElement::style):
+        (WebCore::StyledElement::addSubresourceAttributeURLs):
+        * dom/StyledElement.h:
+        (WebCore::StyledElement::inlineStyleDecl):
+        (StyledElement):
+
+2012-01-29  Sheriff Bot  <webkit.review.bot@gmail.com>
+
         Unreviewed, rolling out r106109.
         http://trac.webkit.org/changeset/106109
         https://bugs.webkit.org/show_bug.cgi?id=77302
index 9b72488..1b6aca0 100644 (file)
@@ -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 @@ bool NamedNodeMap::mapsEquivalent(const NamedNodeMap* otherMap) const
     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
index 2e53847..0905d64 100644 (file)
@@ -102,10 +102,6 @@ public:
 
     size_t mappedAttributeCount() const;
 
-    CSSMutableStyleDeclaration* inlineStyleDecl() const { return m_inlineStyleDecl.get(); }
-    CSSMutableStyleDeclaration* ensureInlineStyleDecl();
-    void destroyInlineStyleDecl();
-
 private:
     NamedNodeMap(Element* element)
         : m_element(element)
@@ -120,16 +116,11 @@ private:
     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
index 8bee53d..abbd782 100644 (file)
@@ -112,8 +112,8 @@ void StyledElement::updateStyleAttribute() const
     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 @@ PassRefPtr<Attribute> StyledElement::createAttribute(const QualifiedName& name,
     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 @@ void StyledElement::parseMappedAttribute(Attribute* attr)
     }
 }
 
+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::copyNonAttributeProperties(const Element* sourceElement)
 
 void StyledElement::addSubresourceAttributeURLs(ListHashSet<KURL>& urls) const
 {
-    if (CSSMutableStyleDeclaration* inlineStyle = inlineStyleDecl())
-        inlineStyle->addSubresourceStyleURLs(urls);
+    if (!m_inlineStyleDecl)
+        return;
+    m_inlineStyleDecl->addSubresourceStyleURLs(urls);
 }
 
 }
index 932c847..9d47b37 100644 (file)
@@ -58,9 +58,9 @@ public:
     virtual PassRefPtr<CSSMutableStyleDeclaration> additionalAttributeStyle() { return 0; }
     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;
 
@@ -88,8 +88,11 @@ protected:
 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