From 8bf28cc63a56e987fba0250ef0989e7c38a82ad6 Mon Sep 17 00:00:00 2001 From: "leviw@chromium.org" Date: Sun, 29 Jan 2012 23:41:33 +0000 Subject: [PATCH] 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). Patch by Sheriff Bot 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 | 24 ++++++++++++++++++++++++ Source/WebCore/dom/NamedNodeMap.cpp | 25 +------------------------ Source/WebCore/dom/NamedNodeMap.h | 9 --------- Source/WebCore/dom/StyledElement.cpp | 36 ++++++++++++++++++++++++++++++++---- Source/WebCore/dom/StyledElement.h | 11 +++++++---- 5 files changed, 64 insertions(+), 41 deletions(-) diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog index f26e65e..1cdbae9 100644 --- a/Source/WebCore/ChangeLog +++ b/Source/WebCore/ChangeLog @@ -1,5 +1,29 @@ 2012-01-29 Sheriff Bot + 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 + Unreviewed, rolling out r106109. http://trac.webkit.org/changeset/106109 https://bugs.webkit.org/show_bug.cgi?id=77302 diff --git a/Source/WebCore/dom/NamedNodeMap.cpp b/Source/WebCore/dom/NamedNodeMap.cpp index 9b72488..1b6aca0 100644 --- a/Source/WebCore/dom/NamedNodeMap.cpp +++ b/Source/WebCore/dom/NamedNodeMap.cpp @@ -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(m_element)); - m_inlineStyleDecl->setStrictParsing(m_element->isHTMLElement() && !m_element->document()->inQuirksMode()); -} - } // namespace WebCore diff --git a/Source/WebCore/dom/NamedNodeMap.h b/Source/WebCore/dom/NamedNodeMap.h index 2e53847..0905d64 100644 --- a/Source/WebCore/dom/NamedNodeMap.h +++ b/Source/WebCore/dom/NamedNodeMap.h @@ -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); - 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 for more information. SpaceSplitString m_classNames; Element* m_element; Vector, 4> m_attributes; AtomicString m_idForStyleResolution; - RefPtr m_inlineStyleDecl; }; inline Attribute* NamedNodeMap::getAttributeItem(const QualifiedName& name) const diff --git a/Source/WebCore/dom/StyledElement.cpp b/Source/WebCore/dom/StyledElement.cpp index 8bee53d..abbd782 100644 --- a/Source/WebCore/dom/StyledElement.cpp +++ b/Source/WebCore/dom/StyledElement.cpp @@ -112,8 +112,8 @@ void StyledElement::updateStyleAttribute() const ASSERT(!isStyleAttributeValid()); setIsStyleAttributeValid(); setIsSynchronizingStyleAttribute(); - if (CSSMutableStyleDeclaration* inlineStyle = inlineStyleDecl()) - const_cast(this)->setAttribute(styleAttr, inlineStyle->cssText()); + if (m_inlineStyleDecl) + const_cast(this)->setAttribute(styleAttr, m_inlineStyleDecl->cssText()); clearIsSynchronizingStyleAttribute(); } @@ -127,6 +127,21 @@ PassRefPtr 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& urls) const { - if (CSSMutableStyleDeclaration* inlineStyle = inlineStyleDecl()) - inlineStyle->addSubresourceStyleURLs(urls); + if (!m_inlineStyleDecl) + return; + m_inlineStyleDecl->addSubresourceStyleURLs(urls); } } diff --git a/Source/WebCore/dom/StyledElement.h b/Source/WebCore/dom/StyledElement.h index 932c847..9d47b37 100644 --- a/Source/WebCore/dom/StyledElement.h +++ b/Source/WebCore/dom/StyledElement.h @@ -58,9 +58,9 @@ public: virtual PassRefPtr 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 m_inlineStyleDecl; }; inline const SpaceSplitString& StyledElement::classNames() const -- 2.7.4