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 10 matching lines...) Expand all Loading... |
21 #include "config.h" | 21 #include "config.h" |
22 #include "core/css/CSSStyleSheet.h" | 22 #include "core/css/CSSStyleSheet.h" |
23 | 23 |
24 #include "HTMLNames.h" | 24 #include "HTMLNames.h" |
25 #include "SVGNames.h" | 25 #include "SVGNames.h" |
26 #include "bindings/v8/ExceptionState.h" | 26 #include "bindings/v8/ExceptionState.h" |
27 #include "core/css/CSSCharsetRule.h" | 27 #include "core/css/CSSCharsetRule.h" |
28 #include "core/css/CSSImportRule.h" | 28 #include "core/css/CSSImportRule.h" |
29 #include "core/css/CSSParser.h" | 29 #include "core/css/CSSParser.h" |
30 #include "core/css/CSSRuleList.h" | 30 #include "core/css/CSSRuleList.h" |
| 31 #include "core/css/CSSStyleRule.h" |
31 #include "core/css/MediaList.h" | 32 #include "core/css/MediaList.h" |
32 #include "core/css/StyleRule.h" | 33 #include "core/css/StyleRule.h" |
33 #include "core/css/StyleSheetContents.h" | 34 #include "core/css/StyleSheetContents.h" |
34 #include "core/dom/Document.h" | 35 #include "core/dom/Document.h" |
35 #include "core/dom/ExceptionCode.h" | 36 #include "core/dom/ExceptionCode.h" |
36 #include "core/dom/Node.h" | 37 #include "core/dom/Node.h" |
37 #include "weborigin/SecurityOrigin.h" | 38 #include "weborigin/SecurityOrigin.h" |
38 #include "wtf/text/StringBuilder.h" | 39 #include "wtf/text/StringBuilder.h" |
39 | 40 |
40 namespace WebCore { | 41 namespace WebCore { |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
110 | 111 |
111 CSSStyleSheet::~CSSStyleSheet() | 112 CSSStyleSheet::~CSSStyleSheet() |
112 { | 113 { |
113 // For style rules outside the document, .parentStyleSheet can become null e
ven if the style rule | 114 // For style rules outside the document, .parentStyleSheet can become null e
ven if the style rule |
114 // is still observable from JavaScript. This matches the behavior of .parent
Node for nodes, but | 115 // is still observable from JavaScript. This matches the behavior of .parent
Node for nodes, but |
115 // it's not ideal because it makes the CSSOM's behavior depend on the timing
of garbage collection. | 116 // it's not ideal because it makes the CSSOM's behavior depend on the timing
of garbage collection. |
116 for (unsigned i = 0; i < m_childRuleCSSOMWrappers.size(); ++i) { | 117 for (unsigned i = 0; i < m_childRuleCSSOMWrappers.size(); ++i) { |
117 if (m_childRuleCSSOMWrappers[i]) | 118 if (m_childRuleCSSOMWrappers[i]) |
118 m_childRuleCSSOMWrappers[i]->setParentStyleSheet(0); | 119 m_childRuleCSSOMWrappers[i]->setParentStyleSheet(0); |
119 } | 120 } |
| 121 for (unsigned i = 0; i < m_extraChildRuleCSSOMWrappers.size(); ++i) { |
| 122 m_extraChildRuleCSSOMWrappers[i]->setParentStyleSheet(0); |
| 123 } |
120 if (m_mediaCSSOMWrapper) | 124 if (m_mediaCSSOMWrapper) |
121 m_mediaCSSOMWrapper->clearParentStyleSheet(); | 125 m_mediaCSSOMWrapper->clearParentStyleSheet(); |
122 | 126 |
123 m_contents->unregisterClient(this); | 127 m_contents->unregisterClient(this); |
124 } | 128 } |
125 | 129 |
126 void CSSStyleSheet::willMutateRules() | 130 void CSSStyleSheet::willMutateRules() |
127 { | 131 { |
128 // If we are the only client it is safe to mutate. | 132 // If we are the only client it is safe to mutate. |
129 if (m_contents->hasOneClient() && !m_contents->isInMemoryCache()) { | 133 if (m_contents->hasOneClient() && !m_contents->isInMemoryCache()) { |
(...skipping 27 matching lines...) Expand all Loading... |
157 Document* owner = ownerDocument(); | 161 Document* owner = ownerDocument(); |
158 if (!owner) | 162 if (!owner) |
159 return; | 163 return; |
160 | 164 |
161 // Need FullStyleUpdate when insertRule or deleteRule, | 165 // Need FullStyleUpdate when insertRule or deleteRule, |
162 // because StyleSheetCollection::analyzeStyleSheetChange cannot detect parti
al rule update. | 166 // because StyleSheetCollection::analyzeStyleSheetChange cannot detect parti
al rule update. |
163 StyleResolverUpdateMode updateMode = updateType != PartialRuleUpdate ? Analy
zedStyleUpdate : FullStyleUpdate; | 167 StyleResolverUpdateMode updateMode = updateType != PartialRuleUpdate ? Analy
zedStyleUpdate : FullStyleUpdate; |
164 owner->modifiedStyleSheet(this, RecalcStyleDeferred, updateMode); | 168 owner->modifiedStyleSheet(this, RecalcStyleDeferred, updateMode); |
165 } | 169 } |
166 | 170 |
| 171 void CSSStyleSheet::registerExtraChildRuleCSSOMWrapper(PassRefPtr<CSSRule> rule) |
| 172 { |
| 173 m_extraChildRuleCSSOMWrappers.append(rule); |
| 174 } |
| 175 |
167 void CSSStyleSheet::reattachChildRuleCSSOMWrappers() | 176 void CSSStyleSheet::reattachChildRuleCSSOMWrappers() |
168 { | 177 { |
169 for (unsigned i = 0; i < m_childRuleCSSOMWrappers.size(); ++i) { | 178 for (unsigned i = 0; i < m_childRuleCSSOMWrappers.size(); ++i) { |
170 if (!m_childRuleCSSOMWrappers[i]) | 179 if (!m_childRuleCSSOMWrappers[i]) |
171 continue; | 180 continue; |
172 m_childRuleCSSOMWrappers[i]->reattach(m_contents->ruleAt(i)); | 181 m_childRuleCSSOMWrappers[i]->reattach(m_contents->ruleAt(i)); |
173 } | 182 } |
174 } | 183 } |
175 | 184 |
176 void CSSStyleSheet::setDisabled(bool disabled) | 185 void CSSStyleSheet::setDisabled(bool disabled) |
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
363 root = root->parentStyleSheet(); | 372 root = root->parentStyleSheet(); |
364 return root->ownerNode() ? &root->ownerNode()->document() : 0; | 373 return root->ownerNode() ? &root->ownerNode()->document() : 0; |
365 } | 374 } |
366 | 375 |
367 void CSSStyleSheet::clearChildRuleCSSOMWrappers() | 376 void CSSStyleSheet::clearChildRuleCSSOMWrappers() |
368 { | 377 { |
369 m_childRuleCSSOMWrappers.clear(); | 378 m_childRuleCSSOMWrappers.clear(); |
370 } | 379 } |
371 | 380 |
372 } | 381 } |
OLD | NEW |