Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(54)

Side by Side Diff: third_party/WebKit/Source/core/css/CSSStyleSheet.cpp

Issue 1913833002: Current work-in-progress crbug.com/567021 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: More assert fixes Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/css/CSSStyleSheet.h ('k') | third_party/WebKit/Source/core/css/FontFaceSet.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698