OLD | NEW |
1 /* | 1 /* |
2 * (C) 1999-2003 Lars Knoll (knoll@kde.org) | 2 * (C) 1999-2003 Lars Knoll (knoll@kde.org) |
3 * Copyright (C) 2004, 2006, 2007, 2012 Apple Inc. All rights reserved. | 3 * Copyright (C) 2004, 2006, 2007, 2012 Apple Inc. All rights reserved. |
4 * | 4 * |
5 * This library is free software; you can redistribute it and/or | 5 * This library is free software; you can redistribute it and/or |
6 * modify it under the terms of the GNU Library General Public | 6 * modify it under the terms of the GNU Library General Public |
7 * License as published by the Free Software Foundation; either | 7 * License as published by the Free Software Foundation; either |
8 * version 2 of the License, or (at your option) any later version. | 8 * version 2 of the License, or (at your option) any later version. |
9 * | 9 * |
10 * This library is distributed in the hope that it will be useful, | 10 * This library is distributed in the hope that it will be useful, |
(...skipping 28 matching lines...) Expand all Loading... |
39 #include "core/html/HTMLStyleElement.h" | 39 #include "core/html/HTMLStyleElement.h" |
40 #include "core/inspector/InspectorInstrumentation.h" | 40 #include "core/inspector/InspectorInstrumentation.h" |
41 #include "core/svg/SVGStyleElement.h" | 41 #include "core/svg/SVGStyleElement.h" |
42 #include "platform/weborigin/SecurityOrigin.h" | 42 #include "platform/weborigin/SecurityOrigin.h" |
43 #include "wtf/text/StringBuilder.h" | 43 #include "wtf/text/StringBuilder.h" |
44 | 44 |
45 namespace blink { | 45 namespace blink { |
46 | 46 |
47 class StyleSheetCSSRuleList final : public CSSRuleList { | 47 class StyleSheetCSSRuleList final : public CSSRuleList { |
48 public: | 48 public: |
49 static RawPtr<StyleSheetCSSRuleList> create(CSSStyleSheet* sheet) | 49 static StyleSheetCSSRuleList* create(CSSStyleSheet* sheet) |
50 { | 50 { |
51 return new StyleSheetCSSRuleList(sheet); | 51 return new StyleSheetCSSRuleList(sheet); |
52 } | 52 } |
53 | 53 |
54 DEFINE_INLINE_VIRTUAL_TRACE() | 54 DEFINE_INLINE_VIRTUAL_TRACE() |
55 { | 55 { |
56 visitor->trace(m_styleSheet); | 56 visitor->trace(m_styleSheet); |
57 CSSRuleList::trace(visitor); | 57 CSSRuleList::trace(visitor); |
58 } | 58 } |
59 | 59 |
(...skipping 23 matching lines...) Expand all Loading... |
83 // clearOwnerNode() in the owner's destructor in oilpan. | 83 // clearOwnerNode() in the owner's destructor in oilpan. |
84 return !parentNode | 84 return !parentNode |
85 || parentNode->isDocumentNode() | 85 || parentNode->isDocumentNode() |
86 || isHTMLLinkElement(*parentNode) | 86 || isHTMLLinkElement(*parentNode) |
87 || isHTMLStyleElement(*parentNode) | 87 || isHTMLStyleElement(*parentNode) |
88 || isSVGStyleElement(*parentNode) | 88 || isSVGStyleElement(*parentNode) |
89 || parentNode->getNodeType() == Node::PROCESSING_INSTRUCTION_NODE; | 89 || parentNode->getNodeType() == Node::PROCESSING_INSTRUCTION_NODE; |
90 } | 90 } |
91 #endif | 91 #endif |
92 | 92 |
93 RawPtr<CSSStyleSheet> CSSStyleSheet::create(RawPtr<StyleSheetContents> sheet, CS
SImportRule* ownerRule) | 93 CSSStyleSheet* CSSStyleSheet::create(StyleSheetContents* sheet, CSSImportRule* o
wnerRule) |
94 { | 94 { |
95 return new CSSStyleSheet(sheet, ownerRule); | 95 return new CSSStyleSheet(sheet, ownerRule); |
96 } | 96 } |
97 | 97 |
98 RawPtr<CSSStyleSheet> CSSStyleSheet::create(RawPtr<StyleSheetContents> sheet, No
de* ownerNode) | 98 CSSStyleSheet* CSSStyleSheet::create(StyleSheetContents* sheet, Node* ownerNode) |
99 { | 99 { |
100 return new CSSStyleSheet(sheet, ownerNode, false, TextPosition::minimumPosit
ion()); | 100 return new CSSStyleSheet(sheet, ownerNode, false, TextPosition::minimumPosit
ion()); |
101 } | 101 } |
102 | 102 |
103 RawPtr<CSSStyleSheet> CSSStyleSheet::createInline(RawPtr<StyleSheetContents> she
et, Node* ownerNode, const TextPosition& startPosition) | 103 CSSStyleSheet* CSSStyleSheet::createInline(StyleSheetContents* sheet, Node* owne
rNode, const TextPosition& startPosition) |
104 { | 104 { |
105 ASSERT(sheet); | 105 ASSERT(sheet); |
106 return new CSSStyleSheet(sheet, ownerNode, true, startPosition); | 106 return new CSSStyleSheet(sheet, ownerNode, true, startPosition); |
107 } | 107 } |
108 | 108 |
109 RawPtr<CSSStyleSheet> CSSStyleSheet::createInline(Node* ownerNode, const KURL& b
aseURL, const TextPosition& startPosition, const String& encoding) | 109 CSSStyleSheet* CSSStyleSheet::createInline(Node* ownerNode, const KURL& baseURL,
const TextPosition& startPosition, const String& encoding) |
110 { | 110 { |
111 CSSParserContext parserContext(ownerNode->document(), 0, baseURL, encoding); | 111 CSSParserContext parserContext(ownerNode->document(), 0, baseURL, encoding); |
112 RawPtr<StyleSheetContents> sheet = StyleSheetContents::create(baseURL.getStr
ing(), parserContext); | 112 StyleSheetContents* sheet = StyleSheetContents::create(baseURL.getString(),
parserContext); |
113 return new CSSStyleSheet(sheet.release(), ownerNode, true, startPosition); | 113 return new CSSStyleSheet(sheet, ownerNode, true, startPosition); |
114 } | 114 } |
115 | 115 |
116 CSSStyleSheet::CSSStyleSheet(RawPtr<StyleSheetContents> contents, CSSImportRule*
ownerRule) | 116 CSSStyleSheet::CSSStyleSheet(StyleSheetContents* contents, CSSImportRule* ownerR
ule) |
117 : m_contents(contents) | 117 : m_contents(contents) |
118 , m_isInlineStylesheet(false) | 118 , m_isInlineStylesheet(false) |
119 , m_isDisabled(false) | 119 , m_isDisabled(false) |
120 , m_ownerNode(nullptr) | 120 , m_ownerNode(nullptr) |
121 , m_ownerRule(ownerRule) | 121 , m_ownerRule(ownerRule) |
122 , m_startPosition(TextPosition::minimumPosition()) | 122 , m_startPosition(TextPosition::minimumPosition()) |
123 , m_loadCompleted(false) | 123 , m_loadCompleted(false) |
124 { | 124 { |
125 m_contents->registerClient(this); | 125 m_contents->registerClient(this); |
126 } | 126 } |
127 | 127 |
128 CSSStyleSheet::CSSStyleSheet(RawPtr<StyleSheetContents> contents, Node* ownerNod
e, bool isInlineStylesheet, const TextPosition& startPosition) | 128 CSSStyleSheet::CSSStyleSheet(StyleSheetContents* contents, Node* ownerNode, bool
isInlineStylesheet, const TextPosition& startPosition) |
129 : m_contents(contents) | 129 : m_contents(contents) |
130 , m_isInlineStylesheet(isInlineStylesheet) | 130 , m_isInlineStylesheet(isInlineStylesheet) |
131 , m_isDisabled(false) | 131 , m_isDisabled(false) |
132 , m_ownerNode(ownerNode) | 132 , m_ownerNode(ownerNode) |
133 , m_ownerRule(nullptr) | 133 , m_ownerRule(nullptr) |
134 , m_startPosition(startPosition) | 134 , m_startPosition(startPosition) |
135 , m_loadCompleted(false) | 135 , m_loadCompleted(false) |
136 { | 136 { |
137 ASSERT(isAcceptableCSSStyleSheetParent(ownerNode)); | 137 ASSERT(isAcceptableCSSStyleSheetParent(ownerNode)); |
138 m_contents->registerClient(this); | 138 m_contents->registerClient(this); |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
215 | 215 |
216 void CSSStyleSheet::setDisabled(bool disabled) | 216 void CSSStyleSheet::setDisabled(bool disabled) |
217 { | 217 { |
218 if (disabled == m_isDisabled) | 218 if (disabled == m_isDisabled) |
219 return; | 219 return; |
220 m_isDisabled = disabled; | 220 m_isDisabled = disabled; |
221 | 221 |
222 didMutate(); | 222 didMutate(); |
223 } | 223 } |
224 | 224 |
225 void CSSStyleSheet::setMediaQueries(RawPtr<MediaQuerySet> mediaQueries) | 225 void CSSStyleSheet::setMediaQueries(MediaQuerySet* mediaQueries) |
226 { | 226 { |
227 m_mediaQueries = mediaQueries; | 227 m_mediaQueries = mediaQueries; |
228 if (m_mediaCSSOMWrapper && m_mediaQueries) | 228 if (m_mediaCSSOMWrapper && m_mediaQueries) |
229 m_mediaCSSOMWrapper->reattach(m_mediaQueries.get()); | 229 m_mediaCSSOMWrapper->reattach(m_mediaQueries.get()); |
230 | 230 |
231 } | 231 } |
232 | 232 |
233 unsigned CSSStyleSheet::length() const | 233 unsigned CSSStyleSheet::length() const |
234 { | 234 { |
235 return m_contents->ruleCount(); | 235 return m_contents->ruleCount(); |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
269 Document* document = ownerDocument(); | 269 Document* document = ownerDocument(); |
270 if (!document) | 270 if (!document) |
271 return true; | 271 return true; |
272 if (document->getSecurityOrigin()->canRequestNoSuborigin(baseURL)) | 272 if (document->getSecurityOrigin()->canRequestNoSuborigin(baseURL)) |
273 return true; | 273 return true; |
274 if (m_allowRuleAccessFromOrigin && document->getSecurityOrigin()->canAccessC
heckSuborigins(m_allowRuleAccessFromOrigin.get())) | 274 if (m_allowRuleAccessFromOrigin && document->getSecurityOrigin()->canAccessC
heckSuborigins(m_allowRuleAccessFromOrigin.get())) |
275 return true; | 275 return true; |
276 return false; | 276 return false; |
277 } | 277 } |
278 | 278 |
279 RawPtr<CSSRuleList> CSSStyleSheet::rules() | 279 CSSRuleList* CSSStyleSheet::rules() |
280 { | 280 { |
281 return cssRules(); | 281 return cssRules(); |
282 } | 282 } |
283 | 283 |
284 unsigned CSSStyleSheet::insertRule(const String& ruleString, unsigned index, Exc
eptionState& exceptionState) | 284 unsigned CSSStyleSheet::insertRule(const String& ruleString, unsigned index, Exc
eptionState& exceptionState) |
285 { | 285 { |
286 ASSERT(m_childRuleCSSOMWrappers.isEmpty() || m_childRuleCSSOMWrappers.size()
== m_contents->ruleCount()); | 286 ASSERT(m_childRuleCSSOMWrappers.isEmpty() || m_childRuleCSSOMWrappers.size()
== m_contents->ruleCount()); |
287 | 287 |
288 if (index > length()) { | 288 if (index > length()) { |
289 exceptionState.throwDOMException(IndexSizeError, "The index provided ("
+ String::number(index) + ") is larger than the maximum index (" + String::numbe
r(length()) + ")."); | 289 exceptionState.throwDOMException(IndexSizeError, "The index provided ("
+ String::number(index) + ") is larger than the maximum index (" + String::numbe
r(length()) + ")."); |
290 return 0; | 290 return 0; |
291 } | 291 } |
292 CSSParserContext context(m_contents->parserContext(), UseCounter::getFrom(th
is)); | 292 CSSParserContext context(m_contents->parserContext(), UseCounter::getFrom(th
is)); |
293 RawPtr<StyleRuleBase> rule = CSSParser::parseRule(context, m_contents.get(),
ruleString); | 293 StyleRuleBase* rule = CSSParser::parseRule(context, m_contents.get(), ruleSt
ring); |
294 | 294 |
295 if (!rule) { | 295 if (!rule) { |
296 exceptionState.throwDOMException(SyntaxError, "Failed to parse the rule
'" + ruleString + "'."); | 296 exceptionState.throwDOMException(SyntaxError, "Failed to parse the rule
'" + ruleString + "'."); |
297 return 0; | 297 return 0; |
298 } | 298 } |
299 RuleMutationScope mutationScope(this); | 299 RuleMutationScope mutationScope(this); |
300 | 300 |
301 bool success = m_contents->wrapperInsertRule(rule, index); | 301 bool success = m_contents->wrapperInsertRule(rule, index); |
302 if (!success) { | 302 if (!success) { |
303 if (rule->isNamespaceRule()) | 303 if (rule->isNamespaceRule()) |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
355 // As per Microsoft documentation, always return -1. | 355 // As per Microsoft documentation, always return -1. |
356 return -1; | 356 return -1; |
357 } | 357 } |
358 | 358 |
359 int CSSStyleSheet::addRule(const String& selector, const String& style, Exceptio
nState& exceptionState) | 359 int CSSStyleSheet::addRule(const String& selector, const String& style, Exceptio
nState& exceptionState) |
360 { | 360 { |
361 return addRule(selector, style, length(), exceptionState); | 361 return addRule(selector, style, length(), exceptionState); |
362 } | 362 } |
363 | 363 |
364 | 364 |
365 RawPtr<CSSRuleList> CSSStyleSheet::cssRules() | 365 CSSRuleList* CSSStyleSheet::cssRules() |
366 { | 366 { |
367 if (!canAccessRules()) | 367 if (!canAccessRules()) |
368 return nullptr; | 368 return nullptr; |
369 if (!m_ruleListCSSOMWrapper) | 369 if (!m_ruleListCSSOMWrapper) |
370 m_ruleListCSSOMWrapper = StyleSheetCSSRuleList::create(this); | 370 m_ruleListCSSOMWrapper = StyleSheetCSSRuleList::create(this); |
371 return m_ruleListCSSOMWrapper.get(); | 371 return m_ruleListCSSOMWrapper.get(); |
372 } | 372 } |
373 | 373 |
374 String CSSStyleSheet::href() const | 374 String CSSStyleSheet::href() const |
375 { | 375 { |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
455 visitor->trace(m_mediaQueries); | 455 visitor->trace(m_mediaQueries); |
456 visitor->trace(m_ownerNode); | 456 visitor->trace(m_ownerNode); |
457 visitor->trace(m_ownerRule); | 457 visitor->trace(m_ownerRule); |
458 visitor->trace(m_mediaCSSOMWrapper); | 458 visitor->trace(m_mediaCSSOMWrapper); |
459 visitor->trace(m_childRuleCSSOMWrappers); | 459 visitor->trace(m_childRuleCSSOMWrappers); |
460 visitor->trace(m_ruleListCSSOMWrapper); | 460 visitor->trace(m_ruleListCSSOMWrapper); |
461 StyleSheet::trace(visitor); | 461 StyleSheet::trace(visitor); |
462 } | 462 } |
463 | 463 |
464 } // namespace blink | 464 } // namespace blink |
OLD | NEW |