Title: [97758] trunk/Source/WebCore
Revision
97758
Author
[email protected]
Date
2011-10-18 08:48:47 -0700 (Tue, 18 Oct 2011)

Log Message

Move default stylesheet loading to a separate function
https://bugs.webkit.org/show_bug.cgi?id=70331

Reviewed by Andreas Kling.
        
- Move default stylesheet loading out from CSSStyleSelector::styleForElement()
- Rename e -> element
- Remove pointless reffing of the placeholder style.

* css/CSSStyleSelector.cpp:
(WebCore::ensureDefaultStyleSheetsForElement):
(WebCore::isAtShadowBoundary):
(WebCore::CSSStyleSelector::styleForElement):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (97757 => 97758)


--- trunk/Source/WebCore/ChangeLog	2011-10-18 15:43:50 UTC (rev 97757)
+++ trunk/Source/WebCore/ChangeLog	2011-10-18 15:48:47 UTC (rev 97758)
@@ -1,3 +1,19 @@
+2011-10-18  Antti Koivisto  <[email protected]>
+
+        Move default stylesheet loading to a separate function
+        https://bugs.webkit.org/show_bug.cgi?id=70331
+
+        Reviewed by Andreas Kling.
+        
+        - Move default stylesheet loading out from CSSStyleSelector::styleForElement()
+        - Rename e -> element
+        - Remove pointless reffing of the placeholder style.
+
+        * css/CSSStyleSelector.cpp:
+        (WebCore::ensureDefaultStyleSheetsForElement):
+        (WebCore::isAtShadowBoundary):
+        (WebCore::CSSStyleSelector::styleForElement):
+
 2011-10-18  Chris Fleizach  <[email protected]>
 
         AX: buttons of number type <input> controls are not fully accessible

Modified: trunk/Source/WebCore/css/CSSStyleSelector.cpp (97757 => 97758)


--- trunk/Source/WebCore/css/CSSStyleSelector.cpp	2011-10-18 15:43:50 UTC (rev 97757)
+++ trunk/Source/WebCore/css/CSSStyleSelector.cpp	2011-10-18 15:48:47 UTC (rev 97758)
@@ -534,6 +534,65 @@
     defaultViewSourceStyle->addRulesFromSheet(parseUASheet(sourceUserAgentStyleSheet, sizeof(sourceUserAgentStyleSheet)), screenEval());
 }
 
+static void ensureDefaultStyleSheetsForElement(Element* element)
+{
+    if (simpleDefaultStyleSheet && !elementCanUseSimpleDefaultStyle(element)) {
+        loadFullDefaultStyle();
+        assertNoSiblingRulesInDefaultStyle();
+        collectSpecialRulesInDefaultStyle();
+    }
+    
+#if ENABLE(SVG)
+    static bool loadedSVGUserAgentSheet;
+    if (element->isSVGElement() && !loadedSVGUserAgentSheet) {
+        // SVG rules.
+        loadedSVGUserAgentSheet = true;
+        CSSStyleSheet* svgSheet = parseUASheet(svgUserAgentStyleSheet, sizeof(svgUserAgentStyleSheet));
+        defaultStyle->addRulesFromSheet(svgSheet, screenEval());
+        defaultPrintStyle->addRulesFromSheet(svgSheet, printEval());
+        assertNoSiblingRulesInDefaultStyle();
+        collectSpecialRulesInDefaultStyle();
+    }
+#endif
+    
+#if ENABLE(MATHML)
+    static bool loadedMathMLUserAgentSheet;
+    if (element->isMathMLElement() && !loadedMathMLUserAgentSheet) {
+        // MathML rules.
+        loadedMathMLUserAgentSheet = true;
+        CSSStyleSheet* mathMLSheet = parseUASheet(mathmlUserAgentStyleSheet, sizeof(mathmlUserAgentStyleSheet));
+        defaultStyle->addRulesFromSheet(mathMLSheet, screenEval());
+        defaultPrintStyle->addRulesFromSheet(mathMLSheet, printEval());
+        // There are some sibling and uncommon attribute rules here.
+        collectSpecialRulesInDefaultStyle();
+    }
+#endif
+    
+#if ENABLE(VIDEO)
+    static bool loadedMediaStyleSheet;
+    if (!loadedMediaStyleSheet && (element->hasTagName(videoTag) || element->hasTagName(audioTag))) {
+        loadedMediaStyleSheet = true;
+        String mediaRules = String(mediaControlsUserAgentStyleSheet, sizeof(mediaControlsUserAgentStyleSheet)) + RenderTheme::themeForPage(element->document()->page())->extraMediaControlsStyleSheet();
+        CSSStyleSheet* mediaControlsSheet = parseUASheet(mediaRules);
+        defaultStyle->addRulesFromSheet(mediaControlsSheet, screenEval());
+        defaultPrintStyle->addRulesFromSheet(mediaControlsSheet, printEval());
+        collectSpecialRulesInDefaultStyle();
+    }
+#endif
+    
+#if ENABLE(FULLSCREEN_API)
+    static bool loadedFullScreenStyleSheet;
+    if (!loadedFullScreenStyleSheet && element->document()->webkitIsFullScreen()) {
+        loadedFullScreenStyleSheet = true;
+        String fullscreenRules = String(fullscreenUserAgentStyleSheet, sizeof(fullscreenUserAgentStyleSheet)) + RenderTheme::defaultTheme()->extraFullScreenStyleSheet();
+        CSSStyleSheet* fullscreenSheet = parseUASheet(fullscreenRules);
+        defaultStyle->addRulesFromSheet(fullscreenSheet, screenEval());
+        defaultQuirksStyle->addRulesFromSheet(fullscreenSheet, screenEval());
+        collectSpecialRulesInDefaultStyle();
+    }
+#endif
+}
+
 void CSSStyleSelector::addMatchedDeclaration(CSSMutableStyleDeclaration* decl, unsigned linkMatchType)
 {
     m_matchedDecls.append(MatchedStyleDeclaration(decl, linkMatchType));
@@ -1059,7 +1118,6 @@
 {
     if (!element)
         return false;
-
     ContainerNode* parentNode = element->parentNode();
     return parentNode && parentNode->isShadowRoot();
 }
@@ -1067,24 +1125,22 @@
 // If resolveForRootDefault is true, style based on user agent style sheet only. This is used in media queries, where
 // relative units are interpreted according to document root element style, styled only with UA stylesheet
 
-PassRefPtr<RenderStyle> CSSStyleSelector::styleForElement(Element* e, RenderStyle* defaultParent, bool allowSharing, bool resolveForRootDefault)
+PassRefPtr<RenderStyle> CSSStyleSelector::styleForElement(Element* element, RenderStyle* defaultParent, bool allowSharing, bool resolveForRootDefault)
 {
     // Once an element has a renderer, we don't try to destroy it, since otherwise the renderer
     // will vanish if a style recalc happens during loading.
-    if (allowSharing && !e->document()->haveStylesheetsLoaded() && !e->renderer()) {
+    if (allowSharing && !element->document()->haveStylesheetsLoaded() && !element->renderer()) {
         if (!s_styleNotYetAvailable) {
             s_styleNotYetAvailable = RenderStyle::create().leakRef();
-            s_styleNotYetAvailable->ref();
             s_styleNotYetAvailable->setDisplay(NONE);
             s_styleNotYetAvailable->font().update(m_fontSelector);
         }
-        s_styleNotYetAvailable->ref();
-        e->document()->setHasNodesWithPlaceholderStyle();
+        element->document()->setHasNodesWithPlaceholderStyle();
         return s_styleNotYetAvailable;
     }
 
-    initElement(e);
-    initForStyleResolve(e, defaultParent);
+    initElement(element);
+    initForStyleResolve(element, defaultParent);
     if (allowSharing) {
         RenderStyle* sharedStyle = locateSharedStyle();
         if (sharedStyle)
@@ -1102,70 +1158,16 @@
     }
 
     // Even if surrounding content is user-editable, shadow DOM should act as a single unit, and not necessarily be editable
-    if (isAtShadowBoundary(e))
+    if (isAtShadowBoundary(element))
         m_style->setUserModify(RenderStyle::initialUserModify());
 
-    if (e->isLink()) {
+    if (element->isLink()) {
         m_style->setIsLink(true);
         m_style->setInsideLink(m_elementLinkState);
     }
 
-    if (simpleDefaultStyleSheet && !elementCanUseSimpleDefaultStyle(e)) {
-        loadFullDefaultStyle();
-        assertNoSiblingRulesInDefaultStyle();
-        collectSpecialRulesInDefaultStyle();
-    }
+    ensureDefaultStyleSheetsForElement(element);
 
-#if ENABLE(SVG)
-    static bool loadedSVGUserAgentSheet;
-    if (e->isSVGElement() && !loadedSVGUserAgentSheet) {
-        // SVG rules.
-        loadedSVGUserAgentSheet = true;
-        CSSStyleSheet* svgSheet = parseUASheet(svgUserAgentStyleSheet, sizeof(svgUserAgentStyleSheet));
-        defaultStyle->addRulesFromSheet(svgSheet, screenEval());
-        defaultPrintStyle->addRulesFromSheet(svgSheet, printEval());
-        assertNoSiblingRulesInDefaultStyle();
-        collectSpecialRulesInDefaultStyle();
-    }
-#endif
-
-#if ENABLE(MATHML)
-    static bool loadedMathMLUserAgentSheet;
-    if (e->isMathMLElement() && !loadedMathMLUserAgentSheet) {
-        // MathML rules.
-        loadedMathMLUserAgentSheet = true;
-        CSSStyleSheet* mathMLSheet = parseUASheet(mathmlUserAgentStyleSheet, sizeof(mathmlUserAgentStyleSheet));
-        defaultStyle->addRulesFromSheet(mathMLSheet, screenEval());
-        defaultPrintStyle->addRulesFromSheet(mathMLSheet, printEval());
-        // There are some sibling and uncommon attribute rules here.
-        collectSpecialRulesInDefaultStyle();
-    }
-#endif
-
-#if ENABLE(VIDEO)
-    static bool loadedMediaStyleSheet;
-    if (!loadedMediaStyleSheet && (e->hasTagName(videoTag) || e->hasTagName(audioTag))) {
-        loadedMediaStyleSheet = true;
-        String mediaRules = String(mediaControlsUserAgentStyleSheet, sizeof(mediaControlsUserAgentStyleSheet)) + RenderTheme::themeForPage(e->document()->page())->extraMediaControlsStyleSheet();
-        CSSStyleSheet* mediaControlsSheet = parseUASheet(mediaRules);
-        defaultStyle->addRulesFromSheet(mediaControlsSheet, screenEval());
-        defaultPrintStyle->addRulesFromSheet(mediaControlsSheet, printEval());
-        collectSpecialRulesInDefaultStyle();
-    }
-#endif
-
-#if ENABLE(FULLSCREEN_API)
-    static bool loadedFullScreenStyleSheet;
-    if (!loadedFullScreenStyleSheet && e->document()->webkitIsFullScreen()) {
-        loadedFullScreenStyleSheet = true;
-        String fullscreenRules = String(fullscreenUserAgentStyleSheet, sizeof(fullscreenUserAgentStyleSheet)) + RenderTheme::defaultTheme()->extraFullScreenStyleSheet();
-        CSSStyleSheet* fullscreenSheet = parseUASheet(fullscreenRules);
-        defaultStyle->addRulesFromSheet(fullscreenSheet, screenEval());
-        defaultQuirksStyle->addRulesFromSheet(fullscreenSheet, screenEval());
-        collectSpecialRulesInDefaultStyle();
-    }
-#endif
-
     int firstUARule = -1, lastUARule = -1;
     int firstUserRule = -1, lastUserRule = -1;
     int firstAuthorRule = -1, lastAuthorRule = -1;
@@ -1272,7 +1274,7 @@
     updateFont();
 
     // Clean up our style object's display and text decorations (among other fixups).
-    adjustRenderStyle(style(), m_parentStyle, e);
+    adjustRenderStyle(style(), m_parentStyle, element);
 
     // Start loading images referenced by this style.
     loadPendingImages();
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to