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

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

Issue 1913833002: Current work-in-progress crbug.com/567021 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: More assert fixes Created 4 years, 6 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 r ights reserved. 5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All r ights reserved.
6 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> 6 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org>
7 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org> 7 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org>
8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/) 8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/)
9 * Copyright (c) 2011, Code Aurora Forum. All rights reserved. 9 * Copyright (c) 2011, Code Aurora Forum. All rights reserved.
10 * Copyright (C) Research In Motion Limited 2011. All rights reserved. 10 * Copyright (C) Research In Motion Limited 2011. All rights reserved.
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 { 65 {
66 StyleSheetContents* sheet = StyleSheetContents::create(CSSParserContext(UASh eetMode, 0)); 66 StyleSheetContents* sheet = StyleSheetContents::create(CSSParserContext(UASh eetMode, 0));
67 sheet->parseString(str); 67 sheet->parseString(str);
68 // User Agent stylesheets are parsed once for the lifetime of the renderer 68 // User Agent stylesheets are parsed once for the lifetime of the renderer
69 // process and are intentionally leaked. 69 // process and are intentionally leaked.
70 LEAK_SANITIZER_IGNORE_OBJECT(sheet); 70 LEAK_SANITIZER_IGNORE_OBJECT(sheet);
71 return sheet; 71 return sheet;
72 } 72 }
73 73
74 CSSDefaultStyleSheets::CSSDefaultStyleSheets() 74 CSSDefaultStyleSheets::CSSDefaultStyleSheets()
75 : m_defaultStyle(nullptr)
76 , m_defaultMobileViewportStyle(nullptr)
77 , m_defaultTelevisionViewportStyle(nullptr)
78 , m_defaultQuirksStyle(nullptr)
79 , m_defaultPrintStyle(nullptr)
80 , m_defaultViewSourceStyle(nullptr)
81 , m_defaultXHTMLMobileProfileStyle(nullptr)
82 , m_defaultStyleSheet(nullptr)
83 , m_mobileViewportStyleSheet(nullptr)
84 , m_televisionViewportStyleSheet(nullptr)
85 , m_quirksStyleSheet(nullptr)
86 , m_svgStyleSheet(nullptr)
87 , m_mathmlStyleSheet(nullptr)
88 , m_mediaControlsStyleSheet(nullptr)
89 , m_fullscreenStyleSheet(nullptr)
90 { 75 {
91 m_defaultStyle = RuleSet::create(); 76 m_defaultStyle = RuleSet::create();
92 m_defaultPrintStyle = RuleSet::create(); 77 m_defaultPrintStyle = RuleSet::create();
93 m_defaultQuirksStyle = RuleSet::create(); 78 m_defaultQuirksStyle = RuleSet::create();
94 79
95 // Strict-mode rules. 80 // Strict-mode rules.
96 String defaultRules = loadResourceAsASCIIString("html.css") + LayoutTheme::t heme().extraDefaultStyleSheet(); 81 String defaultRules = loadResourceAsASCIIString("html.css") + LayoutTheme::t heme().extraDefaultStyleSheet();
97 m_defaultStyleSheet = parseUASheet(defaultRules); 82 m_defaultStyleSheet = parseUASheet(defaultRules);
98 m_defaultStyle->addRulesFromSheet(defaultStyleSheet(), screenEval()); 83 m_defaultStyle->addRulesFromSheet(defaultStyleSheet(), screenEval());
99 m_defaultPrintStyle->addRulesFromSheet(defaultStyleSheet(), printEval()); 84 m_defaultPrintStyle->addRulesFromSheet(defaultStyleSheet(), printEval());
100 85
101 // Quirks-mode rules. 86 // Quirks-mode rules.
102 String quirksRules = loadResourceAsASCIIString("quirks.css") + LayoutTheme:: theme().extraQuirksStyleSheet(); 87 String quirksRules = loadResourceAsASCIIString("quirks.css") + LayoutTheme:: theme().extraQuirksStyleSheet();
103 m_quirksStyleSheet = parseUASheet(quirksRules); 88 m_quirksStyleSheet = parseUASheet(quirksRules);
104 m_defaultQuirksStyle->addRulesFromSheet(quirksStyleSheet(), screenEval()); 89 m_defaultQuirksStyle->addRulesFromSheet(quirksStyleSheet(), screenEval());
105 } 90 }
106 91
107 RuleSet* CSSDefaultStyleSheets::defaultViewSourceStyle() 92 RuleSet* CSSDefaultStyleSheets::defaultViewSourceStyle()
108 { 93 {
109 if (!m_defaultViewSourceStyle) { 94 if (!m_defaultViewSourceStyle) {
110 m_defaultViewSourceStyle = RuleSet::create(); 95 m_defaultViewSourceStyle = RuleSet::create();
111 // Loaded stylesheet is leaked on purpose. 96 // Loaded stylesheet is leaked on purpose.
112 StyleSheetContents* stylesheet = parseUASheet(loadResourceAsASCIIString( "view-source.css")); 97 StyleSheetContents* stylesheet = parseUASheet(loadResourceAsASCIIString( "view-source.css"));
113 m_defaultViewSourceStyle->addRulesFromSheet(stylesheet, screenEval()); 98 m_defaultViewSourceStyle->addRulesFromSheet(stylesheet, screenEval());
114 } 99 }
115 return m_defaultViewSourceStyle.get(); 100 return m_defaultViewSourceStyle.get();
116 } 101 }
117 102
118 RuleSet* CSSDefaultStyleSheets::defaultXHTMLMobileProfileStyle() 103 StyleSheetContents* CSSDefaultStyleSheets::ensureXHTMLMobileProfileStyleSheet()
119 { 104 {
120 if (!m_defaultXHTMLMobileProfileStyle) { 105 if (!m_xhtmlMobileProfileStyleSheet)
121 m_defaultXHTMLMobileProfileStyle = RuleSet::create(); 106 m_xhtmlMobileProfileStyleSheet = parseUASheet(loadResourceAsASCIIString( "xhtmlmp.css"));
122 // Loaded stylesheet is leaked on purpose. 107 return m_xhtmlMobileProfileStyleSheet.get();
123 StyleSheetContents* stylesheet = parseUASheet(loadResourceAsASCIIString( "xhtmlmp.css"));
124 m_defaultXHTMLMobileProfileStyle->addRulesFromSheet(stylesheet, screenEv al());
125 }
126 return m_defaultXHTMLMobileProfileStyle.get();
127 } 108 }
128 109
129 RuleSet* CSSDefaultStyleSheets::defaultMobileViewportStyle() 110 StyleSheetContents* CSSDefaultStyleSheets::ensureMobileViewportStyleSheet()
130 { 111 {
131 if (!m_defaultMobileViewportStyle) { 112 if (!m_mobileViewportStyleSheet)
132 m_defaultMobileViewportStyle = RuleSet::create();
133 m_mobileViewportStyleSheet = parseUASheet(loadResourceAsASCIIString("vie wportAndroid.css")); 113 m_mobileViewportStyleSheet = parseUASheet(loadResourceAsASCIIString("vie wportAndroid.css"));
134 m_defaultMobileViewportStyle->addRulesFromSheet(m_mobileViewportStyleShe et.get(), screenEval()); 114 return m_mobileViewportStyleSheet.get();
135 }
136 return m_defaultMobileViewportStyle.get();
137 } 115 }
138 116
139 RuleSet* CSSDefaultStyleSheets::defaultTelevisionViewportStyle() 117 StyleSheetContents* CSSDefaultStyleSheets::ensureTelevisionViewportStyleSheet()
140 { 118 {
141 if (!m_defaultTelevisionViewportStyle) { 119 if (!m_televisionViewportStyleSheet)
142 m_defaultTelevisionViewportStyle = RuleSet::create();
143 m_televisionViewportStyleSheet = parseUASheet(loadResourceAsASCIIString( "viewportTelevision.css")); 120 m_televisionViewportStyleSheet = parseUASheet(loadResourceAsASCIIString( "viewportTelevision.css"));
144 m_defaultTelevisionViewportStyle->addRulesFromSheet(m_televisionViewport StyleSheet.get(), screenEval()); 121 return m_televisionViewportStyleSheet.get();
145 }
146 return m_defaultTelevisionViewportStyle.get();
147 } 122 }
148 123
149 void CSSDefaultStyleSheets::ensureDefaultStyleSheetsForElement(const Element& el ement, bool& changedDefaultStyle) 124 bool CSSDefaultStyleSheets::ensureDefaultStyleSheetsForElement(const Element& el ement)
150 { 125 {
126 bool changedDefaultStyle = false;
127
151 // FIXME: We should assert that the sheet only styles SVG elements. 128 // FIXME: We should assert that the sheet only styles SVG elements.
152 if (element.isSVGElement() && !m_svgStyleSheet) { 129 if (element.isSVGElement() && !m_svgStyleSheet) {
153 m_svgStyleSheet = parseUASheet(loadResourceAsASCIIString("svg.css")); 130 m_svgStyleSheet = parseUASheet(loadResourceAsASCIIString("svg.css"));
154 m_defaultStyle->addRulesFromSheet(svgStyleSheet(), screenEval()); 131 m_defaultStyle->addRulesFromSheet(svgStyleSheet(), screenEval());
155 m_defaultPrintStyle->addRulesFromSheet(svgStyleSheet(), printEval()); 132 m_defaultPrintStyle->addRulesFromSheet(svgStyleSheet(), printEval());
156 changedDefaultStyle = true; 133 changedDefaultStyle = true;
157 } 134 }
158 135
159 // FIXME: We should assert that the sheet only styles MathML elements. 136 // FIXME: We should assert that the sheet only styles MathML elements.
160 if (element.namespaceURI() == MathMLNames::mathmlNamespaceURI 137 if (element.namespaceURI() == MathMLNames::mathmlNamespaceURI
(...skipping 11 matching lines...) Expand all
172 "mediaControlsNew.css" : "mediaControls.css") + 149 "mediaControlsNew.css" : "mediaControls.css") +
173 LayoutTheme::theme().extraMediaControlsStyleSheet(); 150 LayoutTheme::theme().extraMediaControlsStyleSheet();
174 m_mediaControlsStyleSheet = parseUASheet(mediaRules); 151 m_mediaControlsStyleSheet = parseUASheet(mediaRules);
175 m_defaultStyle->addRulesFromSheet(mediaControlsStyleSheet(), screenEval( )); 152 m_defaultStyle->addRulesFromSheet(mediaControlsStyleSheet(), screenEval( ));
176 m_defaultPrintStyle->addRulesFromSheet(mediaControlsStyleSheet(), printE val()); 153 m_defaultPrintStyle->addRulesFromSheet(mediaControlsStyleSheet(), printE val());
177 changedDefaultStyle = true; 154 changedDefaultStyle = true;
178 } 155 }
179 156
180 ASSERT(!m_defaultStyle->features().hasIdsInSelectors()); 157 ASSERT(!m_defaultStyle->features().hasIdsInSelectors());
181 ASSERT(m_defaultStyle->features().siblingRules.isEmpty()); 158 ASSERT(m_defaultStyle->features().siblingRules.isEmpty());
159
160 return changedDefaultStyle;
182 } 161 }
183 162
184 void CSSDefaultStyleSheets::ensureDefaultStyleSheetForFullscreen() 163 bool CSSDefaultStyleSheets::ensureDefaultStyleSheetForFullscreen()
185 { 164 {
186 if (m_fullscreenStyleSheet) 165 if (m_fullscreenStyleSheet)
187 return; 166 return false;
188 167
189 String fullscreenRules = loadResourceAsASCIIString("fullscreen.css") + Layou tTheme::theme().extraFullScreenStyleSheet(); 168 String fullscreenRules = loadResourceAsASCIIString("fullscreen.css") + Layou tTheme::theme().extraFullScreenStyleSheet();
190 m_fullscreenStyleSheet = parseUASheet(fullscreenRules); 169 m_fullscreenStyleSheet = parseUASheet(fullscreenRules);
191 m_defaultStyle->addRulesFromSheet(fullscreenStyleSheet(), screenEval()); 170 m_defaultStyle->addRulesFromSheet(fullscreenStyleSheet(), screenEval());
192 m_defaultQuirksStyle->addRulesFromSheet(fullscreenStyleSheet(), screenEval() ); 171 m_defaultQuirksStyle->addRulesFromSheet(fullscreenStyleSheet(), screenEval() );
172 return true;
193 } 173 }
194 174
195 DEFINE_TRACE(CSSDefaultStyleSheets) 175 DEFINE_TRACE(CSSDefaultStyleSheets)
196 { 176 {
197 visitor->trace(m_defaultStyle); 177 visitor->trace(m_defaultStyle);
198 visitor->trace(m_defaultMobileViewportStyle);
199 visitor->trace(m_defaultTelevisionViewportStyle);
200 visitor->trace(m_defaultQuirksStyle); 178 visitor->trace(m_defaultQuirksStyle);
201 visitor->trace(m_defaultPrintStyle); 179 visitor->trace(m_defaultPrintStyle);
202 visitor->trace(m_defaultViewSourceStyle); 180 visitor->trace(m_defaultViewSourceStyle);
203 visitor->trace(m_defaultXHTMLMobileProfileStyle);
204 visitor->trace(m_defaultStyleSheet); 181 visitor->trace(m_defaultStyleSheet);
205 visitor->trace(m_mobileViewportStyleSheet); 182 visitor->trace(m_mobileViewportStyleSheet);
206 visitor->trace(m_televisionViewportStyleSheet); 183 visitor->trace(m_televisionViewportStyleSheet);
184 visitor->trace(m_xhtmlMobileProfileStyleSheet);
207 visitor->trace(m_quirksStyleSheet); 185 visitor->trace(m_quirksStyleSheet);
208 visitor->trace(m_svgStyleSheet); 186 visitor->trace(m_svgStyleSheet);
209 visitor->trace(m_mathmlStyleSheet); 187 visitor->trace(m_mathmlStyleSheet);
210 visitor->trace(m_mediaControlsStyleSheet); 188 visitor->trace(m_mediaControlsStyleSheet);
211 visitor->trace(m_fullscreenStyleSheet); 189 visitor->trace(m_fullscreenStyleSheet);
212 } 190 }
213 191
214 } // namespace blink 192 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/css/CSSDefaultStyleSheets.h ('k') | third_party/WebKit/Source/core/css/CSSGlobalRuleSet.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698