| 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 |