Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(364)

Side by Side Diff: third_party/WebKit/Source/core/css/CSSDefaultStyleSheets.cpp

Issue 2410283005: Don't generate RuleSets for viewport UA sheets. (Closed)
Patch Set: Rebased Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com) 3 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com)
4 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com) 4 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com)
5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All 5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All
6 * rights reserved. 6 * rights reserved.
7 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> 7 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org>
8 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org> 8 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org>
9 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. 9 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved.
10 * (http://www.torchmobile.com/) 10 * (http://www.torchmobile.com/)
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 static StyleSheetContents* parseUASheet(const String& str) { 66 static StyleSheetContents* parseUASheet(const String& str) {
67 StyleSheetContents* sheet = 67 StyleSheetContents* sheet =
68 StyleSheetContents::create(CSSParserContext(UASheetMode, nullptr)); 68 StyleSheetContents::create(CSSParserContext(UASheetMode, nullptr));
69 sheet->parseString(str); 69 sheet->parseString(str);
70 // User Agent stylesheets are parsed once for the lifetime of the renderer 70 // User Agent stylesheets are parsed once for the lifetime of the renderer
71 // process and are intentionally leaked. 71 // process and are intentionally leaked.
72 LEAK_SANITIZER_IGNORE_OBJECT(sheet); 72 LEAK_SANITIZER_IGNORE_OBJECT(sheet);
73 return sheet; 73 return sheet;
74 } 74 }
75 75
76 CSSDefaultStyleSheets::CSSDefaultStyleSheets() 76 CSSDefaultStyleSheets::CSSDefaultStyleSheets() {
77 : m_defaultStyle(nullptr),
78 m_defaultMobileViewportStyle(nullptr),
79 m_defaultTelevisionViewportStyle(nullptr),
80 m_defaultQuirksStyle(nullptr),
81 m_defaultPrintStyle(nullptr),
82 m_defaultViewSourceStyle(nullptr),
83 m_defaultXHTMLMobileProfileStyle(nullptr),
84 m_defaultStyleSheet(nullptr),
85 m_mobileViewportStyleSheet(nullptr),
86 m_televisionViewportStyleSheet(nullptr),
87 m_quirksStyleSheet(nullptr),
88 m_svgStyleSheet(nullptr),
89 m_mathmlStyleSheet(nullptr),
90 m_mediaControlsStyleSheet(nullptr),
91 m_fullscreenStyleSheet(nullptr) {
92 m_defaultStyle = RuleSet::create(); 77 m_defaultStyle = RuleSet::create();
93 m_defaultPrintStyle = RuleSet::create(); 78 m_defaultPrintStyle = RuleSet::create();
94 m_defaultQuirksStyle = RuleSet::create(); 79 m_defaultQuirksStyle = RuleSet::create();
95 80
96 // Strict-mode rules. 81 // Strict-mode rules.
97 String defaultRules = loadResourceAsASCIIString("html.css") + 82 String defaultRules = loadResourceAsASCIIString("html.css") +
98 LayoutTheme::theme().extraDefaultStyleSheet(); 83 LayoutTheme::theme().extraDefaultStyleSheet();
99 m_defaultStyleSheet = parseUASheet(defaultRules); 84 m_defaultStyleSheet = parseUASheet(defaultRules);
100 m_defaultStyle->addRulesFromSheet(defaultStyleSheet(), screenEval()); 85 m_defaultStyle->addRulesFromSheet(defaultStyleSheet(), screenEval());
101 m_defaultPrintStyle->addRulesFromSheet(defaultStyleSheet(), printEval()); 86 m_defaultPrintStyle->addRulesFromSheet(defaultStyleSheet(), printEval());
102 87
103 // Quirks-mode rules. 88 // Quirks-mode rules.
104 String quirksRules = loadResourceAsASCIIString("quirks.css") + 89 String quirksRules = loadResourceAsASCIIString("quirks.css") +
105 LayoutTheme::theme().extraQuirksStyleSheet(); 90 LayoutTheme::theme().extraQuirksStyleSheet();
106 m_quirksStyleSheet = parseUASheet(quirksRules); 91 m_quirksStyleSheet = parseUASheet(quirksRules);
107 m_defaultQuirksStyle->addRulesFromSheet(quirksStyleSheet(), screenEval()); 92 m_defaultQuirksStyle->addRulesFromSheet(quirksStyleSheet(), screenEval());
108 } 93 }
109 94
110 RuleSet* CSSDefaultStyleSheets::defaultViewSourceStyle() { 95 RuleSet* CSSDefaultStyleSheets::defaultViewSourceStyle() {
111 if (!m_defaultViewSourceStyle) { 96 if (!m_defaultViewSourceStyle) {
112 m_defaultViewSourceStyle = RuleSet::create(); 97 m_defaultViewSourceStyle = RuleSet::create();
113 // Loaded stylesheet is leaked on purpose. 98 // Loaded stylesheet is leaked on purpose.
114 StyleSheetContents* stylesheet = 99 StyleSheetContents* stylesheet =
115 parseUASheet(loadResourceAsASCIIString("view-source.css")); 100 parseUASheet(loadResourceAsASCIIString("view-source.css"));
116 m_defaultViewSourceStyle->addRulesFromSheet(stylesheet, screenEval()); 101 m_defaultViewSourceStyle->addRulesFromSheet(stylesheet, screenEval());
117 } 102 }
118 return m_defaultViewSourceStyle.get(); 103 return m_defaultViewSourceStyle;
119 } 104 }
120 105
121 RuleSet* CSSDefaultStyleSheets::defaultXHTMLMobileProfileStyle() { 106 StyleSheetContents*
122 if (!m_defaultXHTMLMobileProfileStyle) { 107 CSSDefaultStyleSheets::ensureXHTMLMobileProfileStyleSheet() {
123 m_defaultXHTMLMobileProfileStyle = RuleSet::create(); 108 if (!m_xhtmlMobileProfileStyleSheet)
124 // Loaded stylesheet is leaked on purpose. 109 m_xhtmlMobileProfileStyleSheet =
125 StyleSheetContents* stylesheet =
126 parseUASheet(loadResourceAsASCIIString("xhtmlmp.css")); 110 parseUASheet(loadResourceAsASCIIString("xhtmlmp.css"));
127 m_defaultXHTMLMobileProfileStyle->addRulesFromSheet(stylesheet, 111 return m_xhtmlMobileProfileStyleSheet;
128 screenEval());
129 }
130 return m_defaultXHTMLMobileProfileStyle.get();
131 } 112 }
132 113
133 RuleSet* CSSDefaultStyleSheets::defaultMobileViewportStyle() { 114 StyleSheetContents* CSSDefaultStyleSheets::ensureMobileViewportStyleSheet() {
134 if (!m_defaultMobileViewportStyle) { 115 if (!m_mobileViewportStyleSheet)
135 m_defaultMobileViewportStyle = RuleSet::create();
136 m_mobileViewportStyleSheet = 116 m_mobileViewportStyleSheet =
137 parseUASheet(loadResourceAsASCIIString("viewportAndroid.css")); 117 parseUASheet(loadResourceAsASCIIString("viewportAndroid.css"));
138 m_defaultMobileViewportStyle->addRulesFromSheet( 118 return m_mobileViewportStyleSheet;
139 m_mobileViewportStyleSheet.get(), screenEval());
140 }
141 return m_defaultMobileViewportStyle.get();
142 } 119 }
143 120
144 RuleSet* CSSDefaultStyleSheets::defaultTelevisionViewportStyle() { 121 StyleSheetContents*
145 if (!m_defaultTelevisionViewportStyle) { 122 CSSDefaultStyleSheets::ensureTelevisionViewportStyleSheet() {
146 m_defaultTelevisionViewportStyle = RuleSet::create(); 123 if (!m_televisionViewportStyleSheet)
147 m_televisionViewportStyleSheet = 124 m_televisionViewportStyleSheet =
148 parseUASheet(loadResourceAsASCIIString("viewportTelevision.css")); 125 parseUASheet(loadResourceAsASCIIString("viewportTelevision.css"));
149 m_defaultTelevisionViewportStyle->addRulesFromSheet( 126 return m_televisionViewportStyleSheet;
150 m_televisionViewportStyleSheet.get(), screenEval());
151 }
152 return m_defaultTelevisionViewportStyle.get();
153 } 127 }
154 128
155 void CSSDefaultStyleSheets::ensureDefaultStyleSheetsForElement( 129 void CSSDefaultStyleSheets::ensureDefaultStyleSheetsForElement(
156 const Element& element, 130 const Element& element,
157 bool& changedDefaultStyle) { 131 bool& changedDefaultStyle) {
158 // FIXME: We should assert that the sheet only styles SVG elements. 132 // FIXME: We should assert that the sheet only styles SVG elements.
159 if (element.isSVGElement() && !m_svgStyleSheet) { 133 if (element.isSVGElement() && !m_svgStyleSheet) {
160 m_svgStyleSheet = parseUASheet(loadResourceAsASCIIString("svg.css")); 134 m_svgStyleSheet = parseUASheet(loadResourceAsASCIIString("svg.css"));
161 m_defaultStyle->addRulesFromSheet(svgStyleSheet(), screenEval()); 135 m_defaultStyle->addRulesFromSheet(svgStyleSheet(), screenEval());
162 m_defaultPrintStyle->addRulesFromSheet(svgStyleSheet(), printEval()); 136 m_defaultPrintStyle->addRulesFromSheet(svgStyleSheet(), printEval());
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 172
199 String fullscreenRules = loadResourceAsASCIIString("fullscreen.css") + 173 String fullscreenRules = loadResourceAsASCIIString("fullscreen.css") +
200 LayoutTheme::theme().extraFullscreenStyleSheet(); 174 LayoutTheme::theme().extraFullscreenStyleSheet();
201 m_fullscreenStyleSheet = parseUASheet(fullscreenRules); 175 m_fullscreenStyleSheet = parseUASheet(fullscreenRules);
202 m_defaultStyle->addRulesFromSheet(fullscreenStyleSheet(), screenEval()); 176 m_defaultStyle->addRulesFromSheet(fullscreenStyleSheet(), screenEval());
203 m_defaultQuirksStyle->addRulesFromSheet(fullscreenStyleSheet(), screenEval()); 177 m_defaultQuirksStyle->addRulesFromSheet(fullscreenStyleSheet(), screenEval());
204 } 178 }
205 179
206 DEFINE_TRACE(CSSDefaultStyleSheets) { 180 DEFINE_TRACE(CSSDefaultStyleSheets) {
207 visitor->trace(m_defaultStyle); 181 visitor->trace(m_defaultStyle);
208 visitor->trace(m_defaultMobileViewportStyle);
209 visitor->trace(m_defaultTelevisionViewportStyle);
210 visitor->trace(m_defaultQuirksStyle); 182 visitor->trace(m_defaultQuirksStyle);
211 visitor->trace(m_defaultPrintStyle); 183 visitor->trace(m_defaultPrintStyle);
212 visitor->trace(m_defaultViewSourceStyle); 184 visitor->trace(m_defaultViewSourceStyle);
213 visitor->trace(m_defaultXHTMLMobileProfileStyle);
214 visitor->trace(m_defaultStyleSheet); 185 visitor->trace(m_defaultStyleSheet);
215 visitor->trace(m_mobileViewportStyleSheet); 186 visitor->trace(m_mobileViewportStyleSheet);
216 visitor->trace(m_televisionViewportStyleSheet); 187 visitor->trace(m_televisionViewportStyleSheet);
188 visitor->trace(m_xhtmlMobileProfileStyleSheet);
217 visitor->trace(m_quirksStyleSheet); 189 visitor->trace(m_quirksStyleSheet);
218 visitor->trace(m_svgStyleSheet); 190 visitor->trace(m_svgStyleSheet);
219 visitor->trace(m_mathmlStyleSheet); 191 visitor->trace(m_mathmlStyleSheet);
220 visitor->trace(m_mediaControlsStyleSheet); 192 visitor->trace(m_mediaControlsStyleSheet);
221 visitor->trace(m_fullscreenStyleSheet); 193 visitor->trace(m_fullscreenStyleSheet);
222 } 194 }
223 195
224 } // namespace blink 196 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698