OLD | NEW |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |