Chromium Code Reviews| Index: Source/core/css/CSSDefaultStyleSheets.cpp |
| diff --git a/Source/core/css/CSSDefaultStyleSheets.cpp b/Source/core/css/CSSDefaultStyleSheets.cpp |
| index 163b47f5916ab1285c9c448f4a58e3a8436d8af4..69c6d6e16eea5a8190de781d612a9069c092f061 100644 |
| --- a/Source/core/css/CSSDefaultStyleSheets.cpp |
| +++ b/Source/core/css/CSSDefaultStyleSheets.cpp |
| @@ -30,7 +30,6 @@ |
| #include "core/css/CSSDefaultStyleSheets.h" |
| #include "core/MathMLNames.h" |
| -#include "core/UserAgentStyleSheets.h" |
| #include "core/css/MediaQueryEvaluator.h" |
| #include "core/css/RuleSet.h" |
| #include "core/css/StyleSheetContents.h" |
| @@ -38,6 +37,8 @@ |
| #include "core/html/HTMLAnchorElement.h" |
| #include "core/html/HTMLHtmlElement.h" |
| #include "core/rendering/RenderTheme.h" |
| +#include "public/platform/Platform.h" |
| +#include "public/platform/WebData.h" |
| #include "wtf/LeakAnnotations.h" |
| namespace blink { |
| @@ -72,11 +73,6 @@ static PassRefPtrWillBeRawPtr<StyleSheetContents> parseUASheet(const String& str |
| return sheet.release(); |
| } |
| -static PassRefPtrWillBeRawPtr<StyleSheetContents> parseUASheet(const char* characters, unsigned size) |
| -{ |
| - return parseUASheet(String(characters, size)); |
| -} |
| - |
| CSSDefaultStyleSheets::CSSDefaultStyleSheets() |
| : m_defaultStyle(nullptr) |
| , m_defaultViewportStyle(nullptr) |
| @@ -99,11 +95,16 @@ CSSDefaultStyleSheets::CSSDefaultStyleSheets() |
| m_defaultQuirksStyle = RuleSet::create(); |
| // Strict-mode rules. |
| - String defaultRules = String(htmlCss, sizeof(htmlCss)) + RenderTheme::theme().extraDefaultStyleSheet(); |
| + const WebData& htmlCssResource = Platform::current()->loadResource("html.css"); |
| + String defaultRules = htmlCssResource.toASCIIString(); |
| + ASSERT(!defaultRules.isEmpty()); |
| + defaultRules = defaultRules + RenderTheme::theme().extraDefaultStyleSheet(); |
| m_defaultStyleSheet = parseUASheet(defaultRules); |
| m_defaultStyle->addRulesFromSheet(defaultStyleSheet(), screenEval()); |
| #if OS(ANDROID) |
| - String viewportRules(viewportAndroidCss, sizeof(viewportAndroidCss)); |
| + const WebData& viewportAndroidCssResource = Platform::current()->loadResource("viewportAndroid.css"); |
| + String viewportRules = viewportAndroidCssResource.toASCIIString(); |
| + ASSERT(!viewportRules.isEmpty()); |
| #else |
| String viewportRules; |
| #endif |
| @@ -112,7 +113,10 @@ CSSDefaultStyleSheets::CSSDefaultStyleSheets() |
| m_defaultPrintStyle->addRulesFromSheet(defaultStyleSheet(), printEval()); |
| // Quirks-mode rules. |
| - String quirksRules = String(quirksCss, sizeof(quirksCss)) + RenderTheme::theme().extraQuirksStyleSheet(); |
| + const WebData& quirksCssResource = Platform::current()->loadResource("quirks.css"); |
| + String quirksRules = quirksCssResource.toASCIIString(); |
| + ASSERT(!quirksRules.isEmpty()); |
| + quirksRules = quirksRules + RenderTheme::theme().extraQuirksStyleSheet(); |
| m_quirksStyleSheet = parseUASheet(quirksRules); |
| m_defaultQuirksStyle->addRulesFromSheet(quirksStyleSheet(), screenEval()); |
| } |
| @@ -122,7 +126,10 @@ RuleSet* CSSDefaultStyleSheets::defaultViewSourceStyle() |
| if (!m_defaultViewSourceStyle) { |
| m_defaultViewSourceStyle = RuleSet::create(); |
| // Loaded stylesheet is leaked on purpose. |
| - RefPtrWillBeRawPtr<StyleSheetContents> stylesheet = parseUASheet(viewSourceCss, sizeof(viewSourceCss)); |
| + const WebData& viewSourceCssResource = Platform::current()->loadResource("view-source.css"); |
| + String viewSourceRules = viewSourceCssResource.toASCIIString(); |
| + ASSERT(!viewSourceRules.isEmpty()); |
| + RefPtrWillBeRawPtr<StyleSheetContents> stylesheet = parseUASheet(viewSourceRules); |
| m_defaultViewSourceStyle->addRulesFromSheet(stylesheet.release().leakRef(), screenEval()); |
| } |
| return m_defaultViewSourceStyle.get(); |
| @@ -133,7 +140,10 @@ RuleSet* CSSDefaultStyleSheets::defaultTransitionStyle() |
| if (!m_defaultTransitionStyle) { |
| m_defaultTransitionStyle = RuleSet::create(); |
| // Loaded stylesheet is leaked on purpose. |
| - RefPtrWillBeRawPtr<StyleSheetContents> stylesheet = parseUASheet(navigationTransitionsCss, sizeof(navigationTransitionsCss)); |
| + const WebData& navigationTransitionsCssResource = Platform::current()->loadResource("navigationTransitions.css"); |
| + String navigationTransitionsRules = navigationTransitionsCssResource.toASCIIString(); |
|
eseidel
2014/09/02 17:15:07
It appears you want a helper wrapper.
loadCSSAsSt
|
| + ASSERT(!navigationTransitionsRules.isEmpty()); |
| + RefPtrWillBeRawPtr<StyleSheetContents> stylesheet = parseUASheet(navigationTransitionsRules); |
| m_defaultTransitionStyle->addRulesFromSheet(stylesheet.release().leakRef(), screenEval()); |
| } |
| return m_defaultTransitionStyle.get(); |
| @@ -144,7 +154,10 @@ RuleSet* CSSDefaultStyleSheets::defaultXHTMLMobileProfileStyle() |
| if (!m_defaultXHTMLMobileProfileStyle) { |
| m_defaultXHTMLMobileProfileStyle = RuleSet::create(); |
| // Loaded stylesheet is leaked on purpose. |
| - RefPtrWillBeRawPtr<StyleSheetContents> stylesheet = parseUASheet(xhtmlmpCss, sizeof(xhtmlmpCss)); |
| + const WebData& xhtmlmpCssResource = Platform::current()->loadResource("xhtmlmp.css"); |
| + String xhtmlmpRules = xhtmlmpCssResource.toASCIIString(); |
| + ASSERT(!xhtmlmpRules.isEmpty()); |
| + RefPtrWillBeRawPtr<StyleSheetContents> stylesheet = parseUASheet(xhtmlmpRules); |
| m_defaultXHTMLMobileProfileStyle->addRulesFromSheet(stylesheet.release().leakRef(), screenEval()); |
| } |
| return m_defaultXHTMLMobileProfileStyle.get(); |
| @@ -154,7 +167,10 @@ void CSSDefaultStyleSheets::ensureDefaultStyleSheetsForElement(Element* element, |
| { |
| // FIXME: We should assert that the sheet only styles SVG elements. |
| if (element->isSVGElement() && !m_svgStyleSheet) { |
| - m_svgStyleSheet = parseUASheet(svgCss, sizeof(svgCss)); |
| + const WebData& svgCssResource = Platform::current()->loadResource("svg.css"); |
| + String svgRules = svgCssResource.toASCIIString(); |
| + ASSERT(!svgRules.isEmpty()); |
| + m_svgStyleSheet = parseUASheet(svgRules); |
| m_defaultStyle->addRulesFromSheet(svgStyleSheet(), screenEval()); |
| m_defaultPrintStyle->addRulesFromSheet(svgStyleSheet(), printEval()); |
| changedDefaultStyle = true; |
| @@ -163,7 +179,10 @@ void CSSDefaultStyleSheets::ensureDefaultStyleSheetsForElement(Element* element, |
| // FIXME: We should assert that the sheet only styles MathML elements. |
| if (element->namespaceURI() == MathMLNames::mathmlNamespaceURI |
| && !m_mathmlStyleSheet) { |
| - m_mathmlStyleSheet = parseUASheet(mathmlCss, sizeof(mathmlCss)); |
| + const WebData& mathmlCssResource = Platform::current()->loadResource("mathml.css"); |
| + String mathmlRules = mathmlCssResource.toASCIIString(); |
| + ASSERT(!mathmlRules.isEmpty()); |
| + m_mathmlStyleSheet = parseUASheet(mathmlRules); |
| m_defaultStyle->addRulesFromSheet(mathmlStyleSheet(), screenEval()); |
| m_defaultPrintStyle->addRulesFromSheet(mathmlStyleSheet(), printEval()); |
| changedDefaultStyle = true; |
| @@ -171,7 +190,10 @@ void CSSDefaultStyleSheets::ensureDefaultStyleSheetsForElement(Element* element, |
| // FIXME: We should assert that this sheet only contains rules for <video> and <audio>. |
| if (!m_mediaControlsStyleSheet && (isHTMLVideoElement(*element) || isHTMLAudioElement(*element))) { |
| - String mediaRules = String(mediaControlsCss, sizeof(mediaControlsCss)) + RenderTheme::theme().extraMediaControlsStyleSheet(); |
| + const WebData& mediaControlsCssResource = Platform::current()->loadResource("mediaControls.css"); |
| + String mediaRules = mediaControlsCssResource.toASCIIString(); |
| + ASSERT(!mediaRules.isEmpty()); |
| + mediaRules = mediaRules + RenderTheme::theme().extraMediaControlsStyleSheet(); |
| m_mediaControlsStyleSheet = parseUASheet(mediaRules); |
| m_defaultStyle->addRulesFromSheet(mediaControlsStyleSheet(), screenEval()); |
| m_defaultPrintStyle->addRulesFromSheet(mediaControlsStyleSheet(), printEval()); |
| @@ -181,7 +203,10 @@ void CSSDefaultStyleSheets::ensureDefaultStyleSheetsForElement(Element* element, |
| // FIXME: This only works because we Force recalc the entire document so the new sheet |
| // is loaded for <html> and the correct styles apply to everyone. |
| if (!m_fullscreenStyleSheet && Fullscreen::isFullScreen(element->document())) { |
| - String fullscreenRules = String(fullscreenCss, sizeof(fullscreenCss)) + RenderTheme::theme().extraFullScreenStyleSheet(); |
| + const WebData& fullscreenCssResource = Platform::current()->loadResource("fullscreen.css"); |
| + String fullscreenRules = fullscreenCssResource.toASCIIString(); |
| + ASSERT(!fullscreenRules.isEmpty()); |
| + fullscreenRules = fullscreenRules + RenderTheme::theme().extraFullScreenStyleSheet(); |
| m_fullscreenStyleSheet = parseUASheet(fullscreenRules); |
| m_defaultStyle->addRulesFromSheet(fullscreenStyleSheet(), screenEval()); |
| m_defaultQuirksStyle->addRulesFromSheet(fullscreenStyleSheet(), screenEval()); |