Diff
Modified: trunk/Source/WebCore/ChangeLog (252638 => 252639)
--- trunk/Source/WebCore/ChangeLog 2019-11-19 18:58:04 UTC (rev 252638)
+++ trunk/Source/WebCore/ChangeLog 2019-11-19 19:04:38 UTC (rev 252639)
@@ -1,3 +1,44 @@
+2019-11-19 Antti Koivisto <[email protected]>
+
+ Rename CSSDefaultStyleSheets to UserAgentStyle
+ https://bugs.webkit.org/show_bug.cgi?id=204357
+
+ Reviewed by Zalan Bujtas.
+
+ Also move it to Style namespace and directory, along with InspectorCSSOMWrappers.
+
+ * Sources.txt:
+ * WebCore.xcodeproj/project.pbxproj:
+ * page/ProcessWarming.cpp:
+ (WebCore::ProcessWarming::prewarmGlobally):
+ * style/ElementRuleCollector.cpp:
+ (WebCore::Style::ElementRuleCollector::matchUARules):
+ * style/InspectorCSSOMWrappers.cpp: Renamed from Source/WebCore/css/InspectorCSSOMWrappers.cpp.
+ (WebCore::Style::InspectorCSSOMWrappers::collectDocumentWrappers):
+ (WebCore::Style::InspectorCSSOMWrappers::collectScopeWrappers):
+ * style/InspectorCSSOMWrappers.h: Renamed from Source/WebCore/css/InspectorCSSOMWrappers.h.
+ * style/PageRuleCollector.cpp:
+ (WebCore::Style::PageRuleCollector::matchAllPageRules):
+ * style/RuleData.h:
+ * style/RuleSet.h:
+ * style/StyleResolver.cpp:
+ (WebCore::Style::Resolver::Resolver):
+ (WebCore::Style::Resolver::styleForElement):
+ * style/StyleScopeRuleSets.cpp:
+ (WebCore::Style::ScopeRuleSets::updateUserAgentMediaQueryStyleIfNeeded const):
+ (WebCore::Style::ScopeRuleSets::collectFeatures const):
+ * style/StyleScopeRuleSets.h:
+ (WebCore::Style::ScopeRuleSets::features const):
+ (WebCore::Style::ScopeRuleSets::mutableFeatures):
+ * style/StyleSharingResolver.h:
+ * style/UserAgentStyle.cpp: Renamed from Source/WebCore/css/CSSDefaultStyleSheets.cpp.
+ (WebCore::Style::UserAgentStyle::initDefaultStyle):
+ (WebCore::Style::UserAgentStyle::addToDefaultStyle):
+ (WebCore::Style::UserAgentStyle::loadFullDefaultStyle):
+ (WebCore::Style::UserAgentStyle::loadSimpleDefaultStyle):
+ (WebCore::Style::UserAgentStyle::ensureDefaultStyleSheetsForElement):
+ * style/UserAgentStyle.h: Renamed from Source/WebCore/css/CSSDefaultStyleSheets.h.
+
2019-11-19 Zalan Bujtas <[email protected]>
[LFC][IFC] Assign inlineCapacity to various inline run vectors.
Modified: trunk/Source/WebCore/Sources.txt (252638 => 252639)
--- trunk/Source/WebCore/Sources.txt 2019-11-19 18:58:04 UTC (rev 252638)
+++ trunk/Source/WebCore/Sources.txt 2019-11-19 19:04:38 UTC (rev 252639)
@@ -682,7 +682,6 @@
css/CSSCursorImageValue.cpp
css/CSSCustomIdentValue.cpp
css/CSSCustomPropertyValue.cpp
-css/CSSDefaultStyleSheets.cpp
css/CSSFilterImageValue.cpp
css/FontFaceSet.cpp
css/FontFace.cpp
@@ -756,7 +755,6 @@
css/DeprecatedCSSOMValue.cpp
css/DeprecatedCSSOMValueList.cpp
css/FontVariantBuilder.cpp
-css/InspectorCSSOMWrappers.cpp
css/LengthFunctions.cpp
css/MediaFeatureNames.cpp
css/MediaList.cpp
@@ -2341,6 +2339,7 @@
style/ElementRuleCollector.cpp
style/IdChangeInvalidation.cpp
style/InlineTextBoxStyle.cpp
+style/InspectorCSSOMWrappers.cpp
style/MatchedDeclarationsCache.cpp
style/PageRuleCollector.cpp
style/PropertyCascade.cpp
@@ -2362,6 +2361,7 @@
style/StyleSharingResolver.cpp
style/StyleTreeResolver.cpp
style/StyleUpdate.cpp
+style/UserAgentStyle.cpp
svg/SVGAElement.cpp
svg/SVGAltGlyphDefElement.cpp
Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (252638 => 252639)
--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj 2019-11-19 18:58:04 UTC (rev 252638)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj 2019-11-19 19:04:38 UTC (rev 252639)
@@ -1322,7 +1322,7 @@
4A5A2ADC161E7E00005889DD /* WebSocketExtensionParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A5A2ADA161E7E00005889DD /* WebSocketExtensionParser.h */; };
4A6E9FC413C17D1D0046A7F8 /* CSSFontFeatureValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A6E9FC213C17D1D0046A7F8 /* CSSFontFeatureValue.h */; settings = {ATTRIBUTES = (Private, ); }; };
4A6E9FC813C17D570046A7F8 /* FontTaggedSettings.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A6E9FC613C17D570046A7F8 /* FontTaggedSettings.h */; settings = {ATTRIBUTES = (Private, ); }; };
- 4A9CC81816BB9AC600EC645A /* CSSDefaultStyleSheets.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A9CC81616BB9AC600EC645A /* CSSDefaultStyleSheets.h */; };
+ 4A9CC81816BB9AC600EC645A /* UserAgentStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A9CC81616BB9AC600EC645A /* UserAgentStyle.h */; };
4A9CC82116BF9BB400EC645A /* InspectorCSSOMWrappers.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A9CC81F16BF9BB400EC645A /* InspectorCSSOMWrappers.h */; };
4AD01009127E642A0015035F /* HTMLOutputElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AD01006127E642A0015035F /* HTMLOutputElement.h */; };
4AD0173D127E82860015035F /* JSHTMLOutputElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AD0173B127E82860015035F /* JSHTMLOutputElement.h */; };
@@ -7894,8 +7894,8 @@
4A6E9FC513C17D570046A7F8 /* FontTaggedSettings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FontTaggedSettings.cpp; sourceTree = "<group>"; };
4A6E9FC613C17D570046A7F8 /* FontTaggedSettings.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 4; path = FontTaggedSettings.h; sourceTree = "<group>"; };
4A8C96EA0BE69032004EEFF0 /* FrameSelectionMac.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = FrameSelectionMac.mm; sourceTree = "<group>"; };
- 4A9CC81516BB9AC600EC645A /* CSSDefaultStyleSheets.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSDefaultStyleSheets.cpp; sourceTree = "<group>"; };
- 4A9CC81616BB9AC600EC645A /* CSSDefaultStyleSheets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSDefaultStyleSheets.h; sourceTree = "<group>"; };
+ 4A9CC81516BB9AC600EC645A /* UserAgentStyle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UserAgentStyle.cpp; sourceTree = "<group>"; };
+ 4A9CC81616BB9AC600EC645A /* UserAgentStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserAgentStyle.h; sourceTree = "<group>"; };
4A9CC81E16BF9BB400EC645A /* InspectorCSSOMWrappers.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorCSSOMWrappers.cpp; sourceTree = "<group>"; };
4A9CC81F16BF9BB400EC645A /* InspectorCSSOMWrappers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorCSSOMWrappers.h; sourceTree = "<group>"; };
4AD01005127E642A0015035F /* HTMLOutputElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLOutputElement.cpp; sourceTree = "<group>"; };
@@ -27028,6 +27028,8 @@
E4A814DF1C7338EB00BF85AC /* IdChangeInvalidation.h */,
1C0106FE192594DF008A4201 /* InlineTextBoxStyle.cpp */,
1C0106FF192594DF008A4201 /* InlineTextBoxStyle.h */,
+ 4A9CC81E16BF9BB400EC645A /* InspectorCSSOMWrappers.cpp */,
+ 4A9CC81F16BF9BB400EC645A /* InspectorCSSOMWrappers.h */,
E45BA6AB2374927B004DFC07 /* MatchedDeclarationsCache.cpp */,
E45BA6A82374926B004DFC07 /* MatchedDeclarationsCache.h */,
FBDB619C16D6034600BB3394 /* PageRuleCollector.cpp */,
@@ -27075,6 +27077,8 @@
E42E76D91C7AF76C00E3614D /* StyleUpdate.cpp */,
E42E76DB1C7AF77600E3614D /* StyleUpdate.h */,
E48137B81DB3B526005C59BF /* StyleValidity.h */,
+ 4A9CC81516BB9AC600EC645A /* UserAgentStyle.cpp */,
+ 4A9CC81616BB9AC600EC645A /* UserAgentStyle.h */,
);
path = style;
sourceTree = "<group>";
@@ -27210,8 +27214,6 @@
9444CBE11D8861580073A074 /* CSSCustomIdentValue.h */,
94D4AC611DC24C810080F02D /* CSSCustomPropertyValue.cpp */,
BC779E131BB215BB00CAA8BF /* CSSCustomPropertyValue.h */,
- 4A9CC81516BB9AC600EC645A /* CSSDefaultStyleSheets.cpp */,
- 4A9CC81616BB9AC600EC645A /* CSSDefaultStyleSheets.h */,
FB965B8217BBB62C00E835B9 /* CSSFilterImageValue.cpp */,
FB965B8117BBB5F900E835B9 /* CSSFilterImageValue.h */,
BC64B4CD0CB4298A005F2B62 /* CSSFontFace.cpp */,
@@ -27408,8 +27410,6 @@
C2015C091BE6FE2C00822389 /* FontVariantBuilder.h */,
CD4E0AFA11F7BC27009D3811 /* fullscreen.css */,
93CA4C9909DF93FA00DF8677 /* html.css */,
- 4A9CC81E16BF9BB400EC645A /* InspectorCSSOMWrappers.cpp */,
- 4A9CC81F16BF9BB400EC645A /* InspectorCSSOMWrappers.h */,
E55F4979151B888000BB67DB /* LengthFunctions.cpp */,
E5BA7D62151437CA00FE1E3F /* LengthFunctions.h */,
93CA4C9A09DF93FA00DF8677 /* make-css-file-arrays.pl */,
@@ -29315,7 +29315,7 @@
AA21ECCD0ABF0FC6002B834C /* CSSCursorImageValue.h in Headers */,
9444CBE41D8861990073A074 /* CSSCustomIdentValue.h in Headers */,
BC779E141BB215BB00CAA8BF /* CSSCustomPropertyValue.h in Headers */,
- 4A9CC81816BB9AC600EC645A /* CSSDefaultStyleSheets.h in Headers */,
+ 4A9CC81816BB9AC600EC645A /* UserAgentStyle.h in Headers */,
94476BDB1DFCAC0300690E23 /* CSSDeferredParser.h in Headers */,
FBB0C5B817BBD629003D3677 /* CSSFilterImageValue.h in Headers */,
BC64B4D60CB4298A005F2B62 /* CSSFontFace.h in Headers */,
Deleted: trunk/Source/WebCore/css/CSSDefaultStyleSheets.cpp (252638 => 252639)
--- trunk/Source/WebCore/css/CSSDefaultStyleSheets.cpp 2019-11-19 18:58:04 UTC (rev 252638)
+++ trunk/Source/WebCore/css/CSSDefaultStyleSheets.cpp 2019-11-19 19:04:38 UTC (rev 252639)
@@ -1,295 +0,0 @@
-/*
- * Copyright (C) 1999 Lars Knoll ([email protected])
- * (C) 2004-2005 Allan Sandfeld Jensen ([email protected])
- * Copyright (C) 2006, 2007 Nicholas Shanks ([email protected])
- * Copyright (C) 2005-2017 Apple Inc. All rights reserved.
- * Copyright (C) 2007 Alexey Proskuryakov <[email protected]>
- * Copyright (C) 2007, 2008 Eric Seidel <[email protected]>
- * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/)
- * Copyright (c) 2011, Code Aurora Forum. All rights reserved.
- * Copyright (C) Research In Motion Limited 2011. All rights reserved.
- * Copyright (C) 2012 Google Inc. All rights reserved.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "config.h"
-#include "CSSDefaultStyleSheets.h"
-
-#include "Chrome.h"
-#include "ChromeClient.h"
-#include "FullscreenManager.h"
-#include "HTMLAnchorElement.h"
-#include "HTMLBRElement.h"
-#include "HTMLBodyElement.h"
-#include "HTMLDataListElement.h"
-#include "HTMLDivElement.h"
-#include "HTMLEmbedElement.h"
-#include "HTMLHeadElement.h"
-#include "HTMLHtmlElement.h"
-#include "HTMLInputElement.h"
-#include "HTMLMediaElement.h"
-#include "HTMLObjectElement.h"
-#include "HTMLSpanElement.h"
-#include "MathMLElement.h"
-#include "MediaQueryEvaluator.h"
-#include "Page.h"
-#include "Quirks.h"
-#include "RenderTheme.h"
-#include "RuleSet.h"
-#include "SVGElement.h"
-#include "StyleSheetContents.h"
-#include "UserAgentStyleSheets.h"
-#include <wtf/NeverDestroyed.h>
-
-namespace WebCore {
-
-using namespace HTMLNames;
-
-Style::RuleSet* CSSDefaultStyleSheets::defaultStyle;
-Style::RuleSet* CSSDefaultStyleSheets::defaultQuirksStyle;
-Style::RuleSet* CSSDefaultStyleSheets::defaultPrintStyle;
-unsigned CSSDefaultStyleSheets::defaultStyleVersion;
-
-StyleSheetContents* CSSDefaultStyleSheets::simpleDefaultStyleSheet;
-StyleSheetContents* CSSDefaultStyleSheets::defaultStyleSheet;
-StyleSheetContents* CSSDefaultStyleSheets::quirksStyleSheet;
-StyleSheetContents* CSSDefaultStyleSheets::svgStyleSheet;
-StyleSheetContents* CSSDefaultStyleSheets::mathMLStyleSheet;
-StyleSheetContents* CSSDefaultStyleSheets::mediaControlsStyleSheet;
-StyleSheetContents* CSSDefaultStyleSheets::fullscreenStyleSheet;
-StyleSheetContents* CSSDefaultStyleSheets::plugInsStyleSheet;
-StyleSheetContents* CSSDefaultStyleSheets::imageControlsStyleSheet;
-StyleSheetContents* CSSDefaultStyleSheets::mediaQueryStyleSheet;
-#if ENABLE(DATALIST_ELEMENT)
-StyleSheetContents* CSSDefaultStyleSheets::dataListStyleSheet;
-#endif
-#if ENABLE(INPUT_TYPE_COLOR)
-StyleSheetContents* CSSDefaultStyleSheets::colorInputStyleSheet;
-#endif
-
-#if PLATFORM(IOS_FAMILY)
-#define DEFAULT_OUTLINE_WIDTH "3px"
-#else
-#define DEFAULT_OUTLINE_WIDTH "5px"
-#endif
-
-#if HAVE(OS_DARK_MODE_SUPPORT)
-#define CSS_DARK_MODE_ADDITION "html{color:text}"
-#else
-#define CSS_DARK_MODE_ADDITION ""
-#endif
-
-// FIXME: It would be nice to use some mechanism that guarantees this is in sync with the real UA stylesheet.
-static const char simpleUserAgentStyleSheet[] = "html,body,div{display:block}" CSS_DARK_MODE_ADDITION "head{display:none}body{margin:8px}div:focus,span:focus,a:focus{outline:auto " DEFAULT_OUTLINE_WIDTH " -webkit-focus-ring-color}a:any-link{color:-webkit-link;text-decoration:underline}a:any-link:active{color:-webkit-activelink}";
-
-static inline bool elementCanUseSimpleDefaultStyle(const Element& element)
-{
- return is<HTMLHtmlElement>(element) || is<HTMLHeadElement>(element)
- || is<HTMLBodyElement>(element) || is<HTMLDivElement>(element)
- || is<HTMLSpanElement>(element) || is<HTMLBRElement>(element)
- || is<HTMLAnchorElement>(element);
-}
-
-static const MediaQueryEvaluator& screenEval()
-{
- static NeverDestroyed<const MediaQueryEvaluator> staticScreenEval(String(MAKE_STATIC_STRING_IMPL("screen")));
- return staticScreenEval;
-}
-
-static const MediaQueryEvaluator& printEval()
-{
- static NeverDestroyed<const MediaQueryEvaluator> staticPrintEval(String(MAKE_STATIC_STRING_IMPL("print")));
- return staticPrintEval;
-}
-
-static StyleSheetContents* parseUASheet(const String& str)
-{
- StyleSheetContents& sheet = StyleSheetContents::create(CSSParserContext(UASheetMode)).leakRef(); // leak the sheet on purpose
- sheet.parseString(str);
- return &sheet;
-}
-
-static StyleSheetContents* parseUASheet(const char* characters, unsigned size)
-{
- return parseUASheet(String(characters, size));
-}
-
-void CSSDefaultStyleSheets::initDefaultStyle(const Element* root)
-{
- if (!defaultStyle) {
- if (!root || elementCanUseSimpleDefaultStyle(*root))
- loadSimpleDefaultStyle();
- else
- loadFullDefaultStyle();
- }
-}
-
-void CSSDefaultStyleSheets::addToDefaultStyle(StyleSheetContents& sheet)
-{
- defaultStyle->addRulesFromSheet(sheet, screenEval());
- defaultPrintStyle->addRulesFromSheet(sheet, printEval());
-
- // Build a stylesheet consisting of non-trivial media queries seen in default style.
- // Rulesets for these can't be global and need to be built in document context.
- for (auto& rule : sheet.childRules()) {
- if (!is<StyleRuleMedia>(*rule))
- continue;
- auto& mediaRule = downcast<StyleRuleMedia>(*rule);
- auto* mediaQuery = mediaRule.mediaQueries();
- if (!mediaQuery)
- continue;
- if (screenEval().evaluate(*mediaQuery, nullptr))
- continue;
- if (printEval().evaluate(*mediaQuery, nullptr))
- continue;
- mediaQueryStyleSheet->parserAppendRule(mediaRule.copy());
- }
-
- ++defaultStyleVersion;
-}
-
-void CSSDefaultStyleSheets::loadFullDefaultStyle()
-{
- if (defaultStyle && !simpleDefaultStyleSheet)
- return;
-
- if (simpleDefaultStyleSheet) {
- ASSERT(defaultStyle);
- ASSERT(defaultPrintStyle == defaultStyle);
- delete defaultStyle;
- simpleDefaultStyleSheet->deref();
- simpleDefaultStyleSheet = nullptr;
- } else {
- ASSERT(!defaultStyle);
- defaultQuirksStyle = makeUnique<Style::RuleSet>().release();
- }
-
- defaultStyle = makeUnique<Style::RuleSet>().release();
- defaultPrintStyle = makeUnique<Style::RuleSet>().release();
- mediaQueryStyleSheet = &StyleSheetContents::create(CSSParserContext(UASheetMode)).leakRef();
-
- // Strict-mode rules.
- String defaultRules = String(htmlUserAgentStyleSheet, sizeof(htmlUserAgentStyleSheet)) + RenderTheme::singleton().extraDefaultStyleSheet();
- defaultStyleSheet = parseUASheet(defaultRules);
- addToDefaultStyle(*defaultStyleSheet);
-
- // Quirks-mode rules.
- String quirksRules = String(quirksUserAgentStyleSheet, sizeof(quirksUserAgentStyleSheet)) + RenderTheme::singleton().extraQuirksStyleSheet();
- quirksStyleSheet = parseUASheet(quirksRules);
- defaultQuirksStyle->addRulesFromSheet(*quirksStyleSheet, screenEval());
-}
-
-void CSSDefaultStyleSheets::loadSimpleDefaultStyle()
-{
- ASSERT(!defaultStyle);
- ASSERT(!simpleDefaultStyleSheet);
-
- defaultStyle = makeUnique<Style::RuleSet>().release();
- // There are no media-specific rules in the simple default style.
- defaultPrintStyle = defaultStyle;
- defaultQuirksStyle = makeUnique<Style::RuleSet>().release();
-
- simpleDefaultStyleSheet = parseUASheet(simpleUserAgentStyleSheet, strlen(simpleUserAgentStyleSheet));
- defaultStyle->addRulesFromSheet(*simpleDefaultStyleSheet, screenEval());
- ++defaultStyleVersion;
- // No need to initialize quirks sheet yet as there are no quirk rules for elements allowed in simple default style.
-}
-
-void CSSDefaultStyleSheets::ensureDefaultStyleSheetsForElement(const Element& element)
-{
- if (simpleDefaultStyleSheet && !elementCanUseSimpleDefaultStyle(element)) {
- loadFullDefaultStyle();
- ++defaultStyleVersion;
- }
-
- if (is<HTMLElement>(element)) {
- if (is<HTMLObjectElement>(element) || is<HTMLEmbedElement>(element)) {
- if (!plugInsStyleSheet && element.document().page()) {
- String plugInsRules = RenderTheme::singleton().extraPlugInsStyleSheet() + element.document().page()->chrome().client().plugInExtraStyleSheet();
- if (plugInsRules.isEmpty())
- plugInsRules = String(plugInsUserAgentStyleSheet, sizeof(plugInsUserAgentStyleSheet));
- plugInsStyleSheet = parseUASheet(plugInsRules);
- addToDefaultStyle(*plugInsStyleSheet);
- }
- }
-#if ENABLE(VIDEO)
- else if (is<HTMLMediaElement>(element)) {
- if (!mediaControlsStyleSheet) {
- String mediaRules = RenderTheme::singleton().mediaControlsStyleSheet();
- if (mediaRules.isEmpty())
- mediaRules = String(mediaControlsUserAgentStyleSheet, sizeof(mediaControlsUserAgentStyleSheet)) + RenderTheme::singleton().extraMediaControlsStyleSheet();
- mediaControlsStyleSheet = parseUASheet(mediaRules);
- addToDefaultStyle(*mediaControlsStyleSheet);
-
- }
- }
-#endif // ENABLE(VIDEO)
-#if ENABLE(SERVICE_CONTROLS)
- else if (is<HTMLDivElement>(element) && element.isImageControlsRootElement()) {
- if (!imageControlsStyleSheet) {
- String imageControlsRules = RenderTheme::singleton().imageControlsStyleSheet();
- imageControlsStyleSheet = parseUASheet(imageControlsRules);
- addToDefaultStyle(*imageControlsStyleSheet);
- }
- }
-#endif // ENABLE(SERVICE_CONTROLS)
-#if ENABLE(DATALIST_ELEMENT)
- else if (!dataListStyleSheet && is<HTMLDataListElement>(element)) {
- dataListStyleSheet = parseUASheet(RenderTheme::singleton().dataListStyleSheet());
- addToDefaultStyle(*dataListStyleSheet);
- }
-#endif // ENABLE(DATALIST_ELEMENT)
-#if ENABLE(INPUT_TYPE_COLOR)
- else if (!colorInputStyleSheet && is<HTMLInputElement>(element) && downcast<HTMLInputElement>(element).isColorControl()) {
- colorInputStyleSheet = parseUASheet(RenderTheme::singleton().colorInputStyleSheet());
- addToDefaultStyle(*colorInputStyleSheet);
- }
-#endif // ENABLE(INPUT_TYPE_COLOR)
- } else if (is<SVGElement>(element)) {
- if (!svgStyleSheet) {
- // SVG rules.
- svgStyleSheet = parseUASheet(svgUserAgentStyleSheet, sizeof(svgUserAgentStyleSheet));
- addToDefaultStyle(*svgStyleSheet);
- }
- }
-#if ENABLE(MATHML)
- else if (is<MathMLElement>(element)) {
- if (!mathMLStyleSheet) {
- // MathML rules.
- mathMLStyleSheet = parseUASheet(mathmlUserAgentStyleSheet, sizeof(mathmlUserAgentStyleSheet));
- addToDefaultStyle(*mathMLStyleSheet);
- }
- }
-#endif // ENABLE(MATHML)
-
-#if ENABLE(FULLSCREEN_API)
- if (!fullscreenStyleSheet && element.document().fullscreenManager().isFullscreen()) {
- StringBuilder fullscreenRules;
- fullscreenRules.appendCharacters(fullscreenUserAgentStyleSheet, sizeof(fullscreenUserAgentStyleSheet));
- fullscreenRules.append(RenderTheme::singleton().extraFullScreenStyleSheet());
- if (element.document().quirks().needsFullWidthHeightFullscreenStyleQuirk())
- fullscreenRules.append(":-webkit-full-screen { width:100%; height:100%; }");
- fullscreenStyleSheet = parseUASheet(fullscreenRules.toString());
- addToDefaultStyle(*fullscreenStyleSheet);
- }
-#endif // ENABLE(FULLSCREEN_API)
-
- ASSERT(defaultStyle->features().idsInRules.isEmpty());
- ASSERT(mathMLStyleSheet || defaultStyle->features().siblingRules.isEmpty());
-}
-
-} // namespace WebCore
Deleted: trunk/Source/WebCore/css/CSSDefaultStyleSheets.h (252638 => 252639)
--- trunk/Source/WebCore/css/CSSDefaultStyleSheets.h 2019-11-19 18:58:04 UTC (rev 252638)
+++ trunk/Source/WebCore/css/CSSDefaultStyleSheets.h 2019-11-19 19:04:38 UTC (rev 252639)
@@ -1,68 +0,0 @@
-/*
- * Copyright (C) 1999 Lars Knoll ([email protected])
- * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved.
- * Copyright (C) 2013 Google Inc. All rights reserved.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- *
- */
-
-#pragma once
-
-namespace WebCore {
-
-class Element;
-class StyleSheetContents;
-
-namespace Style {
-class RuleSet;
-}
-
-class CSSDefaultStyleSheets {
-public:
- static Style::RuleSet* defaultStyle;
- static Style::RuleSet* defaultQuirksStyle;
- static Style::RuleSet* defaultPrintStyle;
- static unsigned defaultStyleVersion;
-
- static StyleSheetContents* simpleDefaultStyleSheet;
- static StyleSheetContents* defaultStyleSheet;
- static StyleSheetContents* quirksStyleSheet;
- static StyleSheetContents* svgStyleSheet;
- static StyleSheetContents* mathMLStyleSheet;
- static StyleSheetContents* mediaControlsStyleSheet;
- static StyleSheetContents* fullscreenStyleSheet;
- static StyleSheetContents* plugInsStyleSheet;
- static StyleSheetContents* imageControlsStyleSheet;
-#if ENABLE(DATALIST_ELEMENT)
- static StyleSheetContents* dataListStyleSheet;
-#endif
-#if ENABLE(INPUT_TYPE_COLOR)
- static StyleSheetContents* colorInputStyleSheet;
-#endif
-
- static StyleSheetContents* mediaQueryStyleSheet;
-
- static void initDefaultStyle(const Element*);
- static void ensureDefaultStyleSheetsForElement(const Element&);
- static void loadFullDefaultStyle();
-
-private:
- static void loadSimpleDefaultStyle();
- static void addToDefaultStyle(StyleSheetContents&);
-};
-
-} // namespace WebCore
Deleted: trunk/Source/WebCore/css/InspectorCSSOMWrappers.cpp (252638 => 252639)
--- trunk/Source/WebCore/css/InspectorCSSOMWrappers.cpp 2019-11-19 18:58:04 UTC (rev 252638)
+++ trunk/Source/WebCore/css/InspectorCSSOMWrappers.cpp 2019-11-19 19:04:38 UTC (rev 252639)
@@ -1,138 +0,0 @@
-/*
- * Copyright (C) 1999 Lars Knoll ([email protected])
- * (C) 2004-2005 Allan Sandfeld Jensen ([email protected])
- * Copyright (C) 2006, 2007 Nicholas Shanks ([email protected])
- * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved.
- * Copyright (C) 2007 Alexey Proskuryakov <[email protected]>
- * Copyright (C) 2007, 2008 Eric Seidel <[email protected]>
- * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/)
- * Copyright (c) 2011, Code Aurora Forum. All rights reserved.
- * Copyright (C) Research In Motion Limited 2011. All rights reserved.
- * Copyright (C) 2012 Google Inc. All rights reserved.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "config.h"
-#include "InspectorCSSOMWrappers.h"
-
-#include "CSSDefaultStyleSheets.h"
-#include "CSSImportRule.h"
-#include "CSSMediaRule.h"
-#include "CSSRule.h"
-#include "CSSStyleRule.h"
-#include "CSSStyleSheet.h"
-#include "CSSSupportsRule.h"
-#include "ExtensionStyleSheets.h"
-#include "StyleScope.h"
-#include "StyleSheetContents.h"
-
-namespace WebCore {
-
-void InspectorCSSOMWrappers::collectFromStyleSheetIfNeeded(CSSStyleSheet* styleSheet)
-{
- if (!m_styleRuleToCSSOMWrapperMap.isEmpty())
- collect(styleSheet);
-}
-
-template <class ListType>
-void InspectorCSSOMWrappers::collect(ListType* listType)
-{
- if (!listType)
- return;
- unsigned size = listType->length();
- for (unsigned i = 0; i < size; ++i) {
- CSSRule* cssRule = listType->item(i);
- switch (cssRule->type()) {
- case CSSRule::IMPORT_RULE:
- collect(downcast<CSSImportRule>(*cssRule).styleSheet());
- break;
- case CSSRule::MEDIA_RULE:
- collect(downcast<CSSMediaRule>(cssRule));
- break;
- case CSSRule::SUPPORTS_RULE:
- collect(downcast<CSSSupportsRule>(cssRule));
- break;
- case CSSRule::STYLE_RULE:
- m_styleRuleToCSSOMWrapperMap.add(&downcast<CSSStyleRule>(*cssRule).styleRule(), downcast<CSSStyleRule>(cssRule));
- break;
- default:
- break;
- }
- }
-}
-
-void InspectorCSSOMWrappers::collectFromStyleSheetContents(StyleSheetContents* styleSheet)
-{
- if (!styleSheet)
- return;
- auto styleSheetWrapper = CSSStyleSheet::create(*styleSheet);
- m_styleSheetCSSOMWrapperSet.add(styleSheetWrapper.copyRef());
- collect(styleSheetWrapper.ptr());
-}
-
-void InspectorCSSOMWrappers::collectFromStyleSheets(const Vector<RefPtr<CSSStyleSheet>>& sheets)
-{
- for (auto& sheet : sheets)
- collect(sheet.get());
-}
-
-void InspectorCSSOMWrappers::maybeCollectFromStyleSheets(const Vector<RefPtr<CSSStyleSheet>>& sheets)
-{
- for (auto& sheet : sheets) {
- if (!m_styleSheetCSSOMWrapperSet.contains(sheet.get())) {
- m_styleSheetCSSOMWrapperSet.add(sheet);
- collect(sheet.get());
- }
- }
-}
-
-void InspectorCSSOMWrappers::collectDocumentWrappers(ExtensionStyleSheets& extensionStyleSheets)
-{
- if (m_styleRuleToCSSOMWrapperMap.isEmpty()) {
- collectFromStyleSheetContents(CSSDefaultStyleSheets::simpleDefaultStyleSheet);
- collectFromStyleSheetContents(CSSDefaultStyleSheets::defaultStyleSheet);
- collectFromStyleSheetContents(CSSDefaultStyleSheets::quirksStyleSheet);
- collectFromStyleSheetContents(CSSDefaultStyleSheets::svgStyleSheet);
- collectFromStyleSheetContents(CSSDefaultStyleSheets::mathMLStyleSheet);
- collectFromStyleSheetContents(CSSDefaultStyleSheets::mediaControlsStyleSheet);
- collectFromStyleSheetContents(CSSDefaultStyleSheets::fullscreenStyleSheet);
-#if ENABLE(DATALIST_ELEMENT)
- collectFromStyleSheetContents(CSSDefaultStyleSheets::dataListStyleSheet);
-#endif
-#if ENABLE(INPUT_TYPE_COLOR)
- collectFromStyleSheetContents(CSSDefaultStyleSheets::colorInputStyleSheet);
-#endif
- collectFromStyleSheetContents(CSSDefaultStyleSheets::plugInsStyleSheet);
- collectFromStyleSheetContents(CSSDefaultStyleSheets::mediaQueryStyleSheet);
-
- collect(extensionStyleSheets.pageUserSheet());
- collectFromStyleSheets(extensionStyleSheets.injectedUserStyleSheets());
- collectFromStyleSheets(extensionStyleSheets.documentUserStyleSheets());
- }
-}
-
-void InspectorCSSOMWrappers::collectScopeWrappers(Style::Scope& styleScope)
-{
- maybeCollectFromStyleSheets(styleScope.activeStyleSheets());
-}
-
-CSSStyleRule* InspectorCSSOMWrappers::getWrapperForRuleInSheets(StyleRule* rule)
-{
- return m_styleRuleToCSSOMWrapperMap.get(rule);
-}
-
-} // namespace WebCore
Deleted: trunk/Source/WebCore/css/InspectorCSSOMWrappers.h (252638 => 252639)
--- trunk/Source/WebCore/css/InspectorCSSOMWrappers.h 2019-11-19 18:58:04 UTC (rev 252638)
+++ trunk/Source/WebCore/css/InspectorCSSOMWrappers.h 2019-11-19 19:04:38 UTC (rev 252639)
@@ -1,63 +0,0 @@
-/*
- * Copyright (C) 1999 Lars Knoll ([email protected])
- * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved.
- * Copyright (C) 2013 Google Inc. All rights reserved.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- *
- */
-
-#pragma once
-
-#include <wtf/Forward.h>
-#include <wtf/HashMap.h>
-#include <wtf/HashSet.h>
-#include <wtf/RefPtr.h>
-
-namespace WebCore {
-
-class CSSStyleRule;
-class CSSStyleSheet;
-class ExtensionStyleSheets;
-class StyleRule;
-class StyleSheetContents;
-
-namespace Style {
-class Scope;
-}
-
-class InspectorCSSOMWrappers {
-public:
- // WARNING. This will construct CSSOM wrappers for all style rules and cache them in a map for significant memory cost.
- // It is here to support inspector. Don't use for any regular engine functions.
- CSSStyleRule* getWrapperForRuleInSheets(StyleRule*);
- void collectFromStyleSheetIfNeeded(CSSStyleSheet*);
- void collectDocumentWrappers(ExtensionStyleSheets&);
- void collectScopeWrappers(Style::Scope&);
-
-private:
- template <class ListType>
- void collect(ListType*);
-
- void collectFromStyleSheetContents(StyleSheetContents*);
- void collectFromStyleSheets(const Vector<RefPtr<CSSStyleSheet>>&);
- void maybeCollectFromStyleSheets(const Vector<RefPtr<CSSStyleSheet>>&);
-
- HashMap<StyleRule*, RefPtr<CSSStyleRule>> m_styleRuleToCSSOMWrapperMap;
- HashSet<RefPtr<CSSStyleSheet>> m_styleSheetCSSOMWrapperSet;
-};
-
-} // namespace WebCore
Modified: trunk/Source/WebCore/page/ProcessWarming.cpp (252638 => 252639)
--- trunk/Source/WebCore/page/ProcessWarming.cpp 2019-11-19 18:58:04 UTC (rev 252638)
+++ trunk/Source/WebCore/page/ProcessWarming.cpp 2019-11-19 19:04:38 UTC (rev 252639)
@@ -26,7 +26,6 @@
#include "config.h"
#include "ProcessWarming.h"
-#include "CSSDefaultStyleSheets.h"
#include "CommonVM.h"
#include "Font.h"
#include "FontCache.h"
@@ -38,6 +37,7 @@
#include "SVGNames.h"
#include "Settings.h"
#include "TelephoneNumberDetector.h"
+#include "UserAgentStyle.h"
#include "WebKitFontFamilyNames.h"
#include "XLinkNames.h"
#include "XMLNSNames.h"
@@ -67,7 +67,7 @@
Settings::create(nullptr);
// Prewarms user agent stylesheet.
- CSSDefaultStyleSheets::loadFullDefaultStyle();
+ Style::UserAgentStyle::loadFullDefaultStyle();
// Prewarms JS VM.
commonVM();
Modified: trunk/Source/WebCore/style/ElementRuleCollector.cpp (252638 => 252639)
--- trunk/Source/WebCore/style/ElementRuleCollector.cpp 2019-11-19 18:58:04 UTC (rev 252638)
+++ trunk/Source/WebCore/style/ElementRuleCollector.cpp 2019-11-19 19:04:38 UTC (rev 252639)
@@ -29,7 +29,6 @@
#include "config.h"
#include "ElementRuleCollector.h"
-#include "CSSDefaultStyleSheets.h"
#include "CSSRuleList.h"
#include "CSSSelector.h"
#include "CSSValueKeywords.h"
@@ -44,6 +43,7 @@
#include "StyleScope.h"
#include "StyleScopeRuleSets.h"
#include "StyledElement.h"
+#include "UserAgentStyle.h"
#include <wtf/SetForScope.h>
namespace WebCore {
@@ -384,15 +384,15 @@
void ElementRuleCollector::matchUARules()
{
// First we match rules from the user agent sheet.
- if (CSSDefaultStyleSheets::simpleDefaultStyleSheet)
+ if (UserAgentStyle::simpleDefaultStyleSheet)
m_result.isCacheable = false;
auto* userAgentStyleSheet = m_isPrintStyle
- ? CSSDefaultStyleSheets::defaultPrintStyle : CSSDefaultStyleSheets::defaultStyle;
+ ? UserAgentStyle::defaultPrintStyle : UserAgentStyle::defaultStyle;
matchUARules(*userAgentStyleSheet);
// In quirks mode, we match rules from the quirks user agent sheet.
if (element().document().inQuirksMode())
- matchUARules(*CSSDefaultStyleSheets::defaultQuirksStyle);
+ matchUARules(*UserAgentStyle::defaultQuirksStyle);
if (m_userAgentMediaQueryStyle)
matchUARules(*m_userAgentMediaQueryStyle);
Copied: trunk/Source/WebCore/style/InspectorCSSOMWrappers.cpp (from rev 252638, trunk/Source/WebCore/css/InspectorCSSOMWrappers.cpp) (0 => 252639)
--- trunk/Source/WebCore/style/InspectorCSSOMWrappers.cpp (rev 0)
+++ trunk/Source/WebCore/style/InspectorCSSOMWrappers.cpp 2019-11-19 19:04:38 UTC (rev 252639)
@@ -0,0 +1,140 @@
+/*
+ * Copyright (C) 1999 Lars Knoll ([email protected])
+ * (C) 2004-2005 Allan Sandfeld Jensen ([email protected])
+ * Copyright (C) 2006, 2007 Nicholas Shanks ([email protected])
+ * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved.
+ * Copyright (C) 2007 Alexey Proskuryakov <[email protected]>
+ * Copyright (C) 2007, 2008 Eric Seidel <[email protected]>
+ * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/)
+ * Copyright (c) 2011, Code Aurora Forum. All rights reserved.
+ * Copyright (C) Research In Motion Limited 2011. All rights reserved.
+ * Copyright (C) 2012 Google Inc. All rights reserved.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+#include "InspectorCSSOMWrappers.h"
+
+#include "CSSImportRule.h"
+#include "CSSMediaRule.h"
+#include "CSSRule.h"
+#include "CSSStyleRule.h"
+#include "CSSStyleSheet.h"
+#include "CSSSupportsRule.h"
+#include "ExtensionStyleSheets.h"
+#include "StyleScope.h"
+#include "StyleSheetContents.h"
+#include "UserAgentStyle.h"
+
+namespace WebCore {
+namespace Style {
+
+void InspectorCSSOMWrappers::collectFromStyleSheetIfNeeded(CSSStyleSheet* styleSheet)
+{
+ if (!m_styleRuleToCSSOMWrapperMap.isEmpty())
+ collect(styleSheet);
+}
+
+template <class ListType>
+void InspectorCSSOMWrappers::collect(ListType* listType)
+{
+ if (!listType)
+ return;
+ unsigned size = listType->length();
+ for (unsigned i = 0; i < size; ++i) {
+ CSSRule* cssRule = listType->item(i);
+ switch (cssRule->type()) {
+ case CSSRule::IMPORT_RULE:
+ collect(downcast<CSSImportRule>(*cssRule).styleSheet());
+ break;
+ case CSSRule::MEDIA_RULE:
+ collect(downcast<CSSMediaRule>(cssRule));
+ break;
+ case CSSRule::SUPPORTS_RULE:
+ collect(downcast<CSSSupportsRule>(cssRule));
+ break;
+ case CSSRule::STYLE_RULE:
+ m_styleRuleToCSSOMWrapperMap.add(&downcast<CSSStyleRule>(*cssRule).styleRule(), downcast<CSSStyleRule>(cssRule));
+ break;
+ default:
+ break;
+ }
+ }
+}
+
+void InspectorCSSOMWrappers::collectFromStyleSheetContents(StyleSheetContents* styleSheet)
+{
+ if (!styleSheet)
+ return;
+ auto styleSheetWrapper = CSSStyleSheet::create(*styleSheet);
+ m_styleSheetCSSOMWrapperSet.add(styleSheetWrapper.copyRef());
+ collect(styleSheetWrapper.ptr());
+}
+
+void InspectorCSSOMWrappers::collectFromStyleSheets(const Vector<RefPtr<CSSStyleSheet>>& sheets)
+{
+ for (auto& sheet : sheets)
+ collect(sheet.get());
+}
+
+void InspectorCSSOMWrappers::maybeCollectFromStyleSheets(const Vector<RefPtr<CSSStyleSheet>>& sheets)
+{
+ for (auto& sheet : sheets) {
+ if (!m_styleSheetCSSOMWrapperSet.contains(sheet.get())) {
+ m_styleSheetCSSOMWrapperSet.add(sheet);
+ collect(sheet.get());
+ }
+ }
+}
+
+void InspectorCSSOMWrappers::collectDocumentWrappers(ExtensionStyleSheets& extensionStyleSheets)
+{
+ if (m_styleRuleToCSSOMWrapperMap.isEmpty()) {
+ collectFromStyleSheetContents(UserAgentStyle::simpleDefaultStyleSheet);
+ collectFromStyleSheetContents(UserAgentStyle::defaultStyleSheet);
+ collectFromStyleSheetContents(UserAgentStyle::quirksStyleSheet);
+ collectFromStyleSheetContents(UserAgentStyle::svgStyleSheet);
+ collectFromStyleSheetContents(UserAgentStyle::mathMLStyleSheet);
+ collectFromStyleSheetContents(UserAgentStyle::mediaControlsStyleSheet);
+ collectFromStyleSheetContents(UserAgentStyle::fullscreenStyleSheet);
+#if ENABLE(DATALIST_ELEMENT)
+ collectFromStyleSheetContents(UserAgentStyle::dataListStyleSheet);
+#endif
+#if ENABLE(INPUT_TYPE_COLOR)
+ collectFromStyleSheetContents(UserAgentStyle::colorInputStyleSheet);
+#endif
+ collectFromStyleSheetContents(UserAgentStyle::plugInsStyleSheet);
+ collectFromStyleSheetContents(UserAgentStyle::mediaQueryStyleSheet);
+
+ collect(extensionStyleSheets.pageUserSheet());
+ collectFromStyleSheets(extensionStyleSheets.injectedUserStyleSheets());
+ collectFromStyleSheets(extensionStyleSheets.documentUserStyleSheets());
+ }
+}
+
+void InspectorCSSOMWrappers::collectScopeWrappers(Scope& styleScope)
+{
+ maybeCollectFromStyleSheets(styleScope.activeStyleSheets());
+}
+
+CSSStyleRule* InspectorCSSOMWrappers::getWrapperForRuleInSheets(StyleRule* rule)
+{
+ return m_styleRuleToCSSOMWrapperMap.get(rule);
+}
+
+} // namespace Style
+} // namespace WebCore
Copied: trunk/Source/WebCore/style/InspectorCSSOMWrappers.h (from rev 252638, trunk/Source/WebCore/css/InspectorCSSOMWrappers.h) (0 => 252639)
--- trunk/Source/WebCore/style/InspectorCSSOMWrappers.h (rev 0)
+++ trunk/Source/WebCore/style/InspectorCSSOMWrappers.h 2019-11-19 19:04:38 UTC (rev 252639)
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 1999 Lars Knoll ([email protected])
+ * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved.
+ * Copyright (C) 2013 Google Inc. All rights reserved.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#pragma once
+
+#include <wtf/Forward.h>
+#include <wtf/HashMap.h>
+#include <wtf/HashSet.h>
+#include <wtf/RefPtr.h>
+
+namespace WebCore {
+
+class CSSStyleRule;
+class CSSStyleSheet;
+class ExtensionStyleSheets;
+class StyleRule;
+class StyleSheetContents;
+
+namespace Style {
+
+class Scope;
+
+class InspectorCSSOMWrappers {
+public:
+ // WARNING. This will construct CSSOM wrappers for all style rules and cache them in a map for significant memory cost.
+ // It is here to support inspector. Don't use for any regular engine functions.
+ CSSStyleRule* getWrapperForRuleInSheets(StyleRule*);
+ void collectFromStyleSheetIfNeeded(CSSStyleSheet*);
+ void collectDocumentWrappers(ExtensionStyleSheets&);
+ void collectScopeWrappers(Scope&);
+
+private:
+ template <class ListType>
+ void collect(ListType*);
+
+ void collectFromStyleSheetContents(StyleSheetContents*);
+ void collectFromStyleSheets(const Vector<RefPtr<CSSStyleSheet>>&);
+ void maybeCollectFromStyleSheets(const Vector<RefPtr<CSSStyleSheet>>&);
+
+ HashMap<StyleRule*, RefPtr<CSSStyleRule>> m_styleRuleToCSSOMWrapperMap;
+ HashSet<RefPtr<CSSStyleSheet>> m_styleSheetCSSOMWrapperSet;
+};
+
+} // namespace Style
+} // namespace WebCore
Modified: trunk/Source/WebCore/style/PageRuleCollector.cpp (252638 => 252639)
--- trunk/Source/WebCore/style/PageRuleCollector.cpp 2019-11-19 18:58:04 UTC (rev 252638)
+++ trunk/Source/WebCore/style/PageRuleCollector.cpp 2019-11-19 19:04:38 UTC (rev 252639)
@@ -29,9 +29,9 @@
#include "config.h"
#include "PageRuleCollector.h"
-#include "CSSDefaultStyleSheets.h"
#include "StyleProperties.h"
#include "StyleRule.h"
+#include "UserAgentStyle.h"
namespace WebCore {
namespace Style {
@@ -68,7 +68,7 @@
const bool isFirst = isFirstPage(pageIndex);
const String page = pageName(pageIndex);
- matchPageRules(CSSDefaultStyleSheets::defaultPrintStyle, isLeft, isFirst, page);
+ matchPageRules(UserAgentStyle::defaultPrintStyle, isLeft, isFirst, page);
matchPageRules(m_ruleSets.userStyle(), isLeft, isFirst, page);
// Only consider the global author RuleSet for @page rules, as per the HTML5 spec.
if (m_ruleSets.isAuthorStyleDefined())
Modified: trunk/Source/WebCore/style/RuleData.h (252638 => 252639)
--- trunk/Source/WebCore/style/RuleData.h 2019-11-19 18:58:04 UTC (rev 252638)
+++ trunk/Source/WebCore/style/RuleData.h 2019-11-19 19:04:38 UTC (rev 252639)
@@ -23,8 +23,6 @@
#include "SelectorFilter.h"
#include "StyleRule.h"
-#include <wtf/text/AtomString.h>
-#include <wtf/text/AtomStringHash.h>
namespace WebCore {
namespace Style {
Modified: trunk/Source/WebCore/style/RuleSet.h (252638 => 252639)
--- trunk/Source/WebCore/style/RuleSet.h 2019-11-19 18:58:04 UTC (rev 252638)
+++ trunk/Source/WebCore/style/RuleSet.h 2019-11-19 19:04:38 UTC (rev 252639)
@@ -24,7 +24,6 @@
#include "RuleData.h"
#include "RuleFeature.h"
#include "SelectorCompiler.h"
-#include "SelectorFilter.h"
#include "StyleRule.h"
#include <wtf/Forward.h>
#include <wtf/HashMap.h>
Modified: trunk/Source/WebCore/style/StyleResolver.cpp (252638 => 252639)
--- trunk/Source/WebCore/style/StyleResolver.cpp 2019-11-19 18:58:04 UTC (rev 252638)
+++ trunk/Source/WebCore/style/StyleResolver.cpp 2019-11-19 19:04:38 UTC (rev 252639)
@@ -30,7 +30,6 @@
#include "config.h"
#include "StyleResolver.h"
-#include "CSSDefaultStyleSheets.h"
#include "CSSFontSelector.h"
#include "CSSKeyframeRule.h"
#include "CSSKeyframesRule.h"
@@ -71,7 +70,7 @@
#include "StyleResolveForDocument.h"
#include "StyleRule.h"
#include "StyleSheetContents.h"
-#include "UserAgentStyleSheets.h"
+#include "UserAgentStyle.h"
#include "ViewportStyleResolver.h"
#include "VisitedLinkState.h"
#include "WebKitFontFamilyNames.h"
@@ -95,7 +94,7 @@
{
Element* root = m_document.documentElement();
- CSSDefaultStyleSheets::initDefaultStyle(root);
+ UserAgentStyle::initDefaultStyle(root);
// construct document root element default style. this is needed
// to evaluate media queries that contain relative constraints, like "screen and (max-width: 10em)"
@@ -236,7 +235,7 @@
style.setInsideLink(linkState);
}
- CSSDefaultStyleSheets::ensureDefaultStyleSheetsForElement(element);
+ UserAgentStyle::ensureDefaultStyleSheetsForElement(element);
ElementRuleCollector collector(element, m_ruleSets, selectorFilter);
collector.setMedium(&m_mediaQueryEvaluator);
Modified: trunk/Source/WebCore/style/StyleScopeRuleSets.cpp (252638 => 252639)
--- trunk/Source/WebCore/style/StyleScopeRuleSets.cpp 2019-11-19 18:58:04 UTC (rev 252638)
+++ trunk/Source/WebCore/style/StyleScopeRuleSets.cpp 2019-11-19 19:04:38 UTC (rev 252639)
@@ -62,10 +62,10 @@
void ScopeRuleSets::updateUserAgentMediaQueryStyleIfNeeded() const
{
- if (!CSSDefaultStyleSheets::mediaQueryStyleSheet)
+ if (!UserAgentStyle::mediaQueryStyleSheet)
return;
- auto ruleCount = CSSDefaultStyleSheets::mediaQueryStyleSheet->ruleCount();
+ auto ruleCount = UserAgentStyle::mediaQueryStyleSheet->ruleCount();
if (m_userAgentMediaQueryStyle && ruleCount == m_userAgentMediaQueryRuleCountOnUpdate)
return;
m_userAgentMediaQueryRuleCountOnUpdate = ruleCount;
@@ -77,7 +77,7 @@
// Media queries on user agent sheet need to evaluated in document context. They behave like author sheets in this respect.
auto& mediaQueryEvaluator = m_styleResolver.mediaQueryEvaluator();
m_userAgentMediaQueryStyle = makeUnique<RuleSet>();
- m_userAgentMediaQueryStyle->addRulesFromSheet(*CSSDefaultStyleSheets::mediaQueryStyleSheet, mediaQueryEvaluator, &m_styleResolver);
+ m_userAgentMediaQueryStyle->addRulesFromSheet(*UserAgentStyle::mediaQueryStyleSheet, mediaQueryEvaluator, &m_styleResolver);
// Viewport dependent queries are currently too inefficient to allow on UA sheet.
ASSERT(!m_styleResolver.hasViewportDependentMediaQueries() || hadViewportDependentMediaQueries);
@@ -158,9 +158,9 @@
// Collect all ids and rules using sibling selectors (:first-child and similar)
// in the current set of stylesheets. Style sharing code uses this information to reject
// sharing candidates.
- if (CSSDefaultStyleSheets::defaultStyle)
- m_features.add(CSSDefaultStyleSheets::defaultStyle->features());
- m_defaultStyleVersionOnFeatureCollection = CSSDefaultStyleSheets::defaultStyleVersion;
+ if (UserAgentStyle::defaultStyle)
+ m_features.add(UserAgentStyle::defaultStyle->features());
+ m_defaultStyleVersionOnFeatureCollection = UserAgentStyle::defaultStyleVersion;
if (auto* userAgentMediaQueryStyle = this->userAgentMediaQueryStyle())
m_features.add(userAgentMediaQueryStyle->features());
Modified: trunk/Source/WebCore/style/StyleScopeRuleSets.h (252638 => 252639)
--- trunk/Source/WebCore/style/StyleScopeRuleSets.h 2019-11-19 18:58:04 UTC (rev 252638)
+++ trunk/Source/WebCore/style/StyleScopeRuleSets.h 2019-11-19 19:04:38 UTC (rev 252639)
@@ -22,9 +22,9 @@
#pragma once
-#include "CSSDefaultStyleSheets.h"
#include "RuleFeature.h"
#include "RuleSet.h"
+#include "UserAgentStyle.h"
#include <memory>
#include <wtf/HashMap.h>
#include <wtf/RefPtr.h>
@@ -113,7 +113,7 @@
inline const RuleFeatureSet& ScopeRuleSets::features() const
{
- if (m_defaultStyleVersionOnFeatureCollection < CSSDefaultStyleSheets::defaultStyleVersion)
+ if (m_defaultStyleVersionOnFeatureCollection < UserAgentStyle::defaultStyleVersion)
collectFeatures();
return m_features;
}
@@ -121,7 +121,7 @@
// FIXME: There should be just the const version.
inline RuleFeatureSet& ScopeRuleSets::mutableFeatures()
{
- if (m_defaultStyleVersionOnFeatureCollection < CSSDefaultStyleSheets::defaultStyleVersion)
+ if (m_defaultStyleVersionOnFeatureCollection < UserAgentStyle::defaultStyleVersion)
collectFeatures();
return m_features;
}
Modified: trunk/Source/WebCore/style/StyleSharingResolver.h (252638 => 252639)
--- trunk/Source/WebCore/style/StyleSharingResolver.h 2019-11-19 18:58:04 UTC (rev 252638)
+++ trunk/Source/WebCore/style/StyleSharingResolver.h 2019-11-19 19:04:38 UTC (rev 252639)
@@ -33,7 +33,6 @@
class Element;
class Node;
class RenderStyle;
-class RuleSet;
class SelectorFilter;
class SpaceSplitString;
class StyledElement;
@@ -40,6 +39,7 @@
namespace Style {
+class RuleSet;
class ScopeRuleSets;
class Update;
Copied: trunk/Source/WebCore/style/UserAgentStyle.cpp (from rev 252638, trunk/Source/WebCore/css/CSSDefaultStyleSheets.cpp) (0 => 252639)
--- trunk/Source/WebCore/style/UserAgentStyle.cpp (rev 0)
+++ trunk/Source/WebCore/style/UserAgentStyle.cpp 2019-11-19 19:04:38 UTC (rev 252639)
@@ -0,0 +1,297 @@
+/*
+ * Copyright (C) 1999 Lars Knoll ([email protected])
+ * (C) 2004-2005 Allan Sandfeld Jensen ([email protected])
+ * Copyright (C) 2006, 2007 Nicholas Shanks ([email protected])
+ * Copyright (C) 2005-2017 Apple Inc. All rights reserved.
+ * Copyright (C) 2007 Alexey Proskuryakov <[email protected]>
+ * Copyright (C) 2007, 2008 Eric Seidel <[email protected]>
+ * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/)
+ * Copyright (c) 2011, Code Aurora Forum. All rights reserved.
+ * Copyright (C) Research In Motion Limited 2011. All rights reserved.
+ * Copyright (C) 2012 Google Inc. All rights reserved.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+#include "UserAgentStyle.h"
+
+#include "Chrome.h"
+#include "ChromeClient.h"
+#include "FullscreenManager.h"
+#include "HTMLAnchorElement.h"
+#include "HTMLBRElement.h"
+#include "HTMLBodyElement.h"
+#include "HTMLDataListElement.h"
+#include "HTMLDivElement.h"
+#include "HTMLEmbedElement.h"
+#include "HTMLHeadElement.h"
+#include "HTMLHtmlElement.h"
+#include "HTMLInputElement.h"
+#include "HTMLMediaElement.h"
+#include "HTMLObjectElement.h"
+#include "HTMLSpanElement.h"
+#include "MathMLElement.h"
+#include "MediaQueryEvaluator.h"
+#include "Page.h"
+#include "Quirks.h"
+#include "RenderTheme.h"
+#include "RuleSet.h"
+#include "SVGElement.h"
+#include "StyleSheetContents.h"
+#include "UserAgentStyleSheets.h"
+#include <wtf/NeverDestroyed.h>
+
+namespace WebCore {
+namespace Style {
+
+using namespace HTMLNames;
+
+RuleSet* UserAgentStyle::defaultStyle;
+RuleSet* UserAgentStyle::defaultQuirksStyle;
+RuleSet* UserAgentStyle::defaultPrintStyle;
+unsigned UserAgentStyle::defaultStyleVersion;
+
+StyleSheetContents* UserAgentStyle::simpleDefaultStyleSheet;
+StyleSheetContents* UserAgentStyle::defaultStyleSheet;
+StyleSheetContents* UserAgentStyle::quirksStyleSheet;
+StyleSheetContents* UserAgentStyle::svgStyleSheet;
+StyleSheetContents* UserAgentStyle::mathMLStyleSheet;
+StyleSheetContents* UserAgentStyle::mediaControlsStyleSheet;
+StyleSheetContents* UserAgentStyle::fullscreenStyleSheet;
+StyleSheetContents* UserAgentStyle::plugInsStyleSheet;
+StyleSheetContents* UserAgentStyle::imageControlsStyleSheet;
+StyleSheetContents* UserAgentStyle::mediaQueryStyleSheet;
+#if ENABLE(DATALIST_ELEMENT)
+StyleSheetContents* UserAgentStyle::dataListStyleSheet;
+#endif
+#if ENABLE(INPUT_TYPE_COLOR)
+StyleSheetContents* UserAgentStyle::colorInputStyleSheet;
+#endif
+
+#if PLATFORM(IOS_FAMILY)
+#define DEFAULT_OUTLINE_WIDTH "3px"
+#else
+#define DEFAULT_OUTLINE_WIDTH "5px"
+#endif
+
+#if HAVE(OS_DARK_MODE_SUPPORT)
+#define CSS_DARK_MODE_ADDITION "html{color:text}"
+#else
+#define CSS_DARK_MODE_ADDITION ""
+#endif
+
+// FIXME: It would be nice to use some mechanism that guarantees this is in sync with the real UA stylesheet.
+static const char simpleUserAgentStyleSheet[] = "html,body,div{display:block}" CSS_DARK_MODE_ADDITION "head{display:none}body{margin:8px}div:focus,span:focus,a:focus{outline:auto " DEFAULT_OUTLINE_WIDTH " -webkit-focus-ring-color}a:any-link{color:-webkit-link;text-decoration:underline}a:any-link:active{color:-webkit-activelink}";
+
+static inline bool elementCanUseSimpleDefaultStyle(const Element& element)
+{
+ return is<HTMLHtmlElement>(element) || is<HTMLHeadElement>(element)
+ || is<HTMLBodyElement>(element) || is<HTMLDivElement>(element)
+ || is<HTMLSpanElement>(element) || is<HTMLBRElement>(element)
+ || is<HTMLAnchorElement>(element);
+}
+
+static const MediaQueryEvaluator& screenEval()
+{
+ static NeverDestroyed<const MediaQueryEvaluator> staticScreenEval(String(MAKE_STATIC_STRING_IMPL("screen")));
+ return staticScreenEval;
+}
+
+static const MediaQueryEvaluator& printEval()
+{
+ static NeverDestroyed<const MediaQueryEvaluator> staticPrintEval(String(MAKE_STATIC_STRING_IMPL("print")));
+ return staticPrintEval;
+}
+
+static StyleSheetContents* parseUASheet(const String& str)
+{
+ StyleSheetContents& sheet = StyleSheetContents::create(CSSParserContext(UASheetMode)).leakRef(); // leak the sheet on purpose
+ sheet.parseString(str);
+ return &sheet;
+}
+
+static StyleSheetContents* parseUASheet(const char* characters, unsigned size)
+{
+ return parseUASheet(String(characters, size));
+}
+
+void UserAgentStyle::initDefaultStyle(const Element* root)
+{
+ if (!defaultStyle) {
+ if (!root || elementCanUseSimpleDefaultStyle(*root))
+ loadSimpleDefaultStyle();
+ else
+ loadFullDefaultStyle();
+ }
+}
+
+void UserAgentStyle::addToDefaultStyle(StyleSheetContents& sheet)
+{
+ defaultStyle->addRulesFromSheet(sheet, screenEval());
+ defaultPrintStyle->addRulesFromSheet(sheet, printEval());
+
+ // Build a stylesheet consisting of non-trivial media queries seen in default style.
+ // Rulesets for these can't be global and need to be built in document context.
+ for (auto& rule : sheet.childRules()) {
+ if (!is<StyleRuleMedia>(*rule))
+ continue;
+ auto& mediaRule = downcast<StyleRuleMedia>(*rule);
+ auto* mediaQuery = mediaRule.mediaQueries();
+ if (!mediaQuery)
+ continue;
+ if (screenEval().evaluate(*mediaQuery, nullptr))
+ continue;
+ if (printEval().evaluate(*mediaQuery, nullptr))
+ continue;
+ mediaQueryStyleSheet->parserAppendRule(mediaRule.copy());
+ }
+
+ ++defaultStyleVersion;
+}
+
+void UserAgentStyle::loadFullDefaultStyle()
+{
+ if (defaultStyle && !simpleDefaultStyleSheet)
+ return;
+
+ if (simpleDefaultStyleSheet) {
+ ASSERT(defaultStyle);
+ ASSERT(defaultPrintStyle == defaultStyle);
+ delete defaultStyle;
+ simpleDefaultStyleSheet->deref();
+ simpleDefaultStyleSheet = nullptr;
+ } else {
+ ASSERT(!defaultStyle);
+ defaultQuirksStyle = makeUnique<RuleSet>().release();
+ }
+
+ defaultStyle = makeUnique<RuleSet>().release();
+ defaultPrintStyle = makeUnique<RuleSet>().release();
+ mediaQueryStyleSheet = &StyleSheetContents::create(CSSParserContext(UASheetMode)).leakRef();
+
+ // Strict-mode rules.
+ String defaultRules = String(htmlUserAgentStyleSheet, sizeof(htmlUserAgentStyleSheet)) + RenderTheme::singleton().extraDefaultStyleSheet();
+ defaultStyleSheet = parseUASheet(defaultRules);
+ addToDefaultStyle(*defaultStyleSheet);
+
+ // Quirks-mode rules.
+ String quirksRules = String(quirksUserAgentStyleSheet, sizeof(quirksUserAgentStyleSheet)) + RenderTheme::singleton().extraQuirksStyleSheet();
+ quirksStyleSheet = parseUASheet(quirksRules);
+ defaultQuirksStyle->addRulesFromSheet(*quirksStyleSheet, screenEval());
+}
+
+void UserAgentStyle::loadSimpleDefaultStyle()
+{
+ ASSERT(!defaultStyle);
+ ASSERT(!simpleDefaultStyleSheet);
+
+ defaultStyle = makeUnique<RuleSet>().release();
+ // There are no media-specific rules in the simple default style.
+ defaultPrintStyle = defaultStyle;
+ defaultQuirksStyle = makeUnique<RuleSet>().release();
+
+ simpleDefaultStyleSheet = parseUASheet(simpleUserAgentStyleSheet, strlen(simpleUserAgentStyleSheet));
+ defaultStyle->addRulesFromSheet(*simpleDefaultStyleSheet, screenEval());
+ ++defaultStyleVersion;
+ // No need to initialize quirks sheet yet as there are no quirk rules for elements allowed in simple default style.
+}
+
+void UserAgentStyle::ensureDefaultStyleSheetsForElement(const Element& element)
+{
+ if (simpleDefaultStyleSheet && !elementCanUseSimpleDefaultStyle(element)) {
+ loadFullDefaultStyle();
+ ++defaultStyleVersion;
+ }
+
+ if (is<HTMLElement>(element)) {
+ if (is<HTMLObjectElement>(element) || is<HTMLEmbedElement>(element)) {
+ if (!plugInsStyleSheet && element.document().page()) {
+ String plugInsRules = RenderTheme::singleton().extraPlugInsStyleSheet() + element.document().page()->chrome().client().plugInExtraStyleSheet();
+ if (plugInsRules.isEmpty())
+ plugInsRules = String(plugInsUserAgentStyleSheet, sizeof(plugInsUserAgentStyleSheet));
+ plugInsStyleSheet = parseUASheet(plugInsRules);
+ addToDefaultStyle(*plugInsStyleSheet);
+ }
+ }
+#if ENABLE(VIDEO)
+ else if (is<HTMLMediaElement>(element)) {
+ if (!mediaControlsStyleSheet) {
+ String mediaRules = RenderTheme::singleton().mediaControlsStyleSheet();
+ if (mediaRules.isEmpty())
+ mediaRules = String(mediaControlsUserAgentStyleSheet, sizeof(mediaControlsUserAgentStyleSheet)) + RenderTheme::singleton().extraMediaControlsStyleSheet();
+ mediaControlsStyleSheet = parseUASheet(mediaRules);
+ addToDefaultStyle(*mediaControlsStyleSheet);
+
+ }
+ }
+#endif // ENABLE(VIDEO)
+#if ENABLE(SERVICE_CONTROLS)
+ else if (is<HTMLDivElement>(element) && element.isImageControlsRootElement()) {
+ if (!imageControlsStyleSheet) {
+ String imageControlsRules = RenderTheme::singleton().imageControlsStyleSheet();
+ imageControlsStyleSheet = parseUASheet(imageControlsRules);
+ addToDefaultStyle(*imageControlsStyleSheet);
+ }
+ }
+#endif // ENABLE(SERVICE_CONTROLS)
+#if ENABLE(DATALIST_ELEMENT)
+ else if (!dataListStyleSheet && is<HTMLDataListElement>(element)) {
+ dataListStyleSheet = parseUASheet(RenderTheme::singleton().dataListStyleSheet());
+ addToDefaultStyle(*dataListStyleSheet);
+ }
+#endif // ENABLE(DATALIST_ELEMENT)
+#if ENABLE(INPUT_TYPE_COLOR)
+ else if (!colorInputStyleSheet && is<HTMLInputElement>(element) && downcast<HTMLInputElement>(element).isColorControl()) {
+ colorInputStyleSheet = parseUASheet(RenderTheme::singleton().colorInputStyleSheet());
+ addToDefaultStyle(*colorInputStyleSheet);
+ }
+#endif // ENABLE(INPUT_TYPE_COLOR)
+ } else if (is<SVGElement>(element)) {
+ if (!svgStyleSheet) {
+ // SVG rules.
+ svgStyleSheet = parseUASheet(svgUserAgentStyleSheet, sizeof(svgUserAgentStyleSheet));
+ addToDefaultStyle(*svgStyleSheet);
+ }
+ }
+#if ENABLE(MATHML)
+ else if (is<MathMLElement>(element)) {
+ if (!mathMLStyleSheet) {
+ // MathML rules.
+ mathMLStyleSheet = parseUASheet(mathmlUserAgentStyleSheet, sizeof(mathmlUserAgentStyleSheet));
+ addToDefaultStyle(*mathMLStyleSheet);
+ }
+ }
+#endif // ENABLE(MATHML)
+
+#if ENABLE(FULLSCREEN_API)
+ if (!fullscreenStyleSheet && element.document().fullscreenManager().isFullscreen()) {
+ StringBuilder fullscreenRules;
+ fullscreenRules.appendCharacters(fullscreenUserAgentStyleSheet, sizeof(fullscreenUserAgentStyleSheet));
+ fullscreenRules.append(RenderTheme::singleton().extraFullScreenStyleSheet());
+ if (element.document().quirks().needsFullWidthHeightFullscreenStyleQuirk())
+ fullscreenRules.append(":-webkit-full-screen { width:100%; height:100%; }");
+ fullscreenStyleSheet = parseUASheet(fullscreenRules.toString());
+ addToDefaultStyle(*fullscreenStyleSheet);
+ }
+#endif // ENABLE(FULLSCREEN_API)
+
+ ASSERT(defaultStyle->features().idsInRules.isEmpty());
+ ASSERT(mathMLStyleSheet || defaultStyle->features().siblingRules.isEmpty());
+}
+
+} // namespace Style
+} // namespace WebCore
Copied: trunk/Source/WebCore/style/UserAgentStyle.h (from rev 252638, trunk/Source/WebCore/css/CSSDefaultStyleSheets.h) (0 => 252639)
--- trunk/Source/WebCore/style/UserAgentStyle.h (rev 0)
+++ trunk/Source/WebCore/style/UserAgentStyle.h 2019-11-19 19:04:38 UTC (rev 252639)
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 1999 Lars Knoll ([email protected])
+ * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserved.
+ * Copyright (C) 2013 Google Inc. All rights reserved.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#pragma once
+
+namespace WebCore {
+
+class Element;
+class StyleSheetContents;
+
+namespace Style {
+
+class RuleSet;
+
+class UserAgentStyle {
+public:
+ static RuleSet* defaultStyle;
+ static RuleSet* defaultQuirksStyle;
+ static RuleSet* defaultPrintStyle;
+ static unsigned defaultStyleVersion;
+
+ static StyleSheetContents* simpleDefaultStyleSheet;
+ static StyleSheetContents* defaultStyleSheet;
+ static StyleSheetContents* quirksStyleSheet;
+ static StyleSheetContents* svgStyleSheet;
+ static StyleSheetContents* mathMLStyleSheet;
+ static StyleSheetContents* mediaControlsStyleSheet;
+ static StyleSheetContents* fullscreenStyleSheet;
+ static StyleSheetContents* plugInsStyleSheet;
+ static StyleSheetContents* imageControlsStyleSheet;
+#if ENABLE(DATALIST_ELEMENT)
+ static StyleSheetContents* dataListStyleSheet;
+#endif
+#if ENABLE(INPUT_TYPE_COLOR)
+ static StyleSheetContents* colorInputStyleSheet;
+#endif
+
+ static StyleSheetContents* mediaQueryStyleSheet;
+
+ static void initDefaultStyle(const Element*);
+ static void ensureDefaultStyleSheetsForElement(const Element&);
+ static void loadFullDefaultStyle();
+
+private:
+ static void loadSimpleDefaultStyle();
+ static void addToDefaultStyle(StyleSheetContents&);
+};
+
+} // namespace Style
+} // namespace WebCore