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 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
167 | 167 |
168 // Any existing CSSOM wrappers need to be connected to the copied child rule
s. | 168 // Any existing CSSOM wrappers need to be connected to the copied child rule
s. |
169 reattachChildRuleCSSOMWrappers(); | 169 reattachChildRuleCSSOMWrappers(); |
170 } | 170 } |
171 | 171 |
172 void CSSStyleSheet::didMutateRules() | 172 void CSSStyleSheet::didMutateRules() |
173 { | 173 { |
174 ASSERT(m_contents->isMutable()); | 174 ASSERT(m_contents->isMutable()); |
175 ASSERT(m_contents->clientSize() <= 1); | 175 ASSERT(m_contents->clientSize() <= 1); |
176 | 176 |
177 didMutate(PartialRuleUpdate); | 177 didMutate(); |
178 } | 178 } |
179 | 179 |
180 void CSSStyleSheet::didMutate(StyleSheetUpdateType updateType) | 180 void CSSStyleSheet::didMutate() |
181 { | 181 { |
182 Document* owner = ownerDocument(); | 182 Document* owner = ownerDocument(); |
183 if (!owner) | 183 if (!owner) |
184 return; | 184 return; |
185 | 185 if (!ownerNode()) |
186 // Need FullStyleUpdate when insertRule or deleteRule, | 186 return; |
187 // because StyleSheetCollection::analyzeStyleSheetChange cannot detect parti
al rule update. | 187 if (ownerNode()->inShadowIncludingDocument()) |
188 StyleResolverUpdateMode updateMode = updateType != PartialRuleUpdate ? Analy
zedStyleUpdate : FullStyleUpdate; | 188 owner->styleEngine().setNeedsActiveStyleUpdate(ownerNode()->treeScope())
; |
189 owner->styleEngine().setNeedsActiveStyleUpdate(this, updateMode); | |
190 } | 189 } |
191 | 190 |
192 void CSSStyleSheet::reattachChildRuleCSSOMWrappers() | 191 void CSSStyleSheet::reattachChildRuleCSSOMWrappers() |
193 { | 192 { |
194 for (unsigned i = 0; i < m_childRuleCSSOMWrappers.size(); ++i) { | 193 for (unsigned i = 0; i < m_childRuleCSSOMWrappers.size(); ++i) { |
195 if (!m_childRuleCSSOMWrappers[i]) | 194 if (!m_childRuleCSSOMWrappers[i]) |
196 continue; | 195 continue; |
197 m_childRuleCSSOMWrappers[i]->reattach(m_contents->ruleAt(i)); | 196 m_childRuleCSSOMWrappers[i]->reattach(m_contents->ruleAt(i)); |
198 } | 197 } |
199 } | 198 } |
200 | 199 |
201 void CSSStyleSheet::setDisabled(bool disabled) | 200 void CSSStyleSheet::setDisabled(bool disabled) |
202 { | 201 { |
203 if (disabled == m_isDisabled) | 202 if (disabled == m_isDisabled) |
204 return; | 203 return; |
205 m_isDisabled = disabled; | 204 m_isDisabled = disabled; |
206 | 205 |
207 didMutate(); | 206 didMutate(); |
208 } | 207 } |
209 | 208 |
210 void CSSStyleSheet::setMediaQueries(MediaQuerySet* mediaQueries) | 209 void CSSStyleSheet::setMediaQueries(MediaQuerySet* mediaQueries) |
211 { | 210 { |
212 m_mediaQueries = mediaQueries; | 211 m_mediaQueries = mediaQueries; |
213 if (m_mediaCSSOMWrapper && m_mediaQueries) | 212 if (m_mediaCSSOMWrapper && m_mediaQueries) |
214 m_mediaCSSOMWrapper->reattach(m_mediaQueries.get()); | 213 m_mediaCSSOMWrapper->reattach(m_mediaQueries.get()); |
215 | 214 |
216 } | 215 } |
217 | 216 |
| 217 bool CSSStyleSheet::matchesMediaQueries(const MediaQueryEvaluator& evaluator) |
| 218 { |
| 219 m_viewportDependentMediaQueryResults.clear(); |
| 220 m_deviceDependentMediaQueryResults.clear(); |
| 221 |
| 222 if (!m_mediaQueries) |
| 223 return true; |
| 224 |
| 225 return evaluator.eval(m_mediaQueries, &m_viewportDependentMediaQueryResults,
&m_deviceDependentMediaQueryResults); |
| 226 } |
| 227 |
218 unsigned CSSStyleSheet::length() const | 228 unsigned CSSStyleSheet::length() const |
219 { | 229 { |
220 return m_contents->ruleCount(); | 230 return m_contents->ruleCount(); |
221 } | 231 } |
222 | 232 |
223 CSSRule* CSSStyleSheet::item(unsigned index) | 233 CSSRule* CSSStyleSheet::item(unsigned index) |
224 { | 234 { |
225 unsigned ruleCount = length(); | 235 unsigned ruleCount = length(); |
226 if (index >= ruleCount) | 236 if (index >= ruleCount) |
227 return nullptr; | 237 return nullptr; |
228 | 238 |
229 if (m_childRuleCSSOMWrappers.isEmpty()) | 239 if (m_childRuleCSSOMWrappers.isEmpty()) |
230 m_childRuleCSSOMWrappers.grow(ruleCount); | 240 m_childRuleCSSOMWrappers.grow(ruleCount); |
231 ASSERT(m_childRuleCSSOMWrappers.size() == ruleCount); | 241 ASSERT(m_childRuleCSSOMWrappers.size() == ruleCount); |
232 | 242 |
233 Member<CSSRule>& cssRule = m_childRuleCSSOMWrappers[index]; | 243 Member<CSSRule>& cssRule = m_childRuleCSSOMWrappers[index]; |
234 if (!cssRule) | 244 if (!cssRule) |
235 cssRule = m_contents->ruleAt(index)->createCSSOMWrapper(this); | 245 cssRule = m_contents->ruleAt(index)->createCSSOMWrapper(this); |
236 return cssRule.get(); | 246 return cssRule.get(); |
237 } | 247 } |
238 | 248 |
239 void CSSStyleSheet::clearOwnerNode() | 249 void CSSStyleSheet::clearOwnerNode() |
240 { | 250 { |
241 didMutate(EntireStyleSheetUpdate); | 251 didMutate(); |
242 if (m_ownerNode) | 252 if (m_ownerNode) |
243 m_contents->unregisterClient(this); | 253 m_contents->unregisterClient(this); |
244 m_ownerNode = nullptr; | 254 m_ownerNode = nullptr; |
245 } | 255 } |
246 | 256 |
247 bool CSSStyleSheet::canAccessRules() const | 257 bool CSSStyleSheet::canAccessRules() const |
248 { | 258 { |
249 if (m_isInlineStylesheet) | 259 if (m_isInlineStylesheet) |
250 return true; | 260 return true; |
251 KURL baseURL = m_contents->baseURL(); | 261 KURL baseURL = m_contents->baseURL(); |
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
431 | 441 |
432 CSSStyleSheet::RuleMutationScope mutationScope(this); | 442 CSSStyleSheet::RuleMutationScope mutationScope(this); |
433 m_contents->clearRules(); | 443 m_contents->clearRules(); |
434 m_contents->parseString(text); | 444 m_contents->parseString(text); |
435 } | 445 } |
436 | 446 |
437 DEFINE_TRACE(CSSStyleSheet) | 447 DEFINE_TRACE(CSSStyleSheet) |
438 { | 448 { |
439 visitor->trace(m_contents); | 449 visitor->trace(m_contents); |
440 visitor->trace(m_mediaQueries); | 450 visitor->trace(m_mediaQueries); |
| 451 visitor->trace(m_viewportDependentMediaQueryResults); |
| 452 visitor->trace(m_deviceDependentMediaQueryResults); |
441 visitor->trace(m_ownerNode); | 453 visitor->trace(m_ownerNode); |
442 visitor->trace(m_ownerRule); | 454 visitor->trace(m_ownerRule); |
443 visitor->trace(m_mediaCSSOMWrapper); | 455 visitor->trace(m_mediaCSSOMWrapper); |
444 visitor->trace(m_childRuleCSSOMWrappers); | 456 visitor->trace(m_childRuleCSSOMWrappers); |
445 visitor->trace(m_ruleListCSSOMWrapper); | 457 visitor->trace(m_ruleListCSSOMWrapper); |
446 StyleSheet::trace(visitor); | 458 StyleSheet::trace(visitor); |
447 } | 459 } |
448 | 460 |
449 } // namespace blink | 461 } // namespace blink |
OLD | NEW |