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