Title: [252639] trunk/Source/WebCore
Revision
252639
Author
[email protected]
Date
2019-11-19 11:04:38 -0800 (Tue, 19 Nov 2019)

Log Message

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.

Modified Paths

Added Paths

Removed Paths

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
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to