| Index: Source/core/css/CSSDefaultStyleSheets.cpp
|
| diff --git a/Source/core/css/CSSDefaultStyleSheets.cpp b/Source/core/css/CSSDefaultStyleSheets.cpp
|
| index e57c6d6e036e2bf5d1ab37c7bc070648997990f1..d169fa15218048ede65791aec94911e338e4f830 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();
|
| + 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 && FullscreenElementStack::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());
|
|
|