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

Side by Side Diff: third_party/WebKit/Source/core/css/RuleSet.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 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com) 3 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com)
4 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com) 4 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com)
5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All r ights reserved. 5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All r ights reserved.
6 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> 6 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org>
7 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org> 7 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org>
8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/) 8 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/)
9 * Copyright (c) 2011, Code Aurora Forum. All rights reserved. 9 * Copyright (c) 2011, Code Aurora Forum. All rights reserved.
10 * Copyright (C) Research In Motion Limited 2011. All rights reserved. 10 * Copyright (C) Research In Motion Limited 2011. All rights reserved.
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 m_universalRules.append(ruleData); 223 m_universalRules.append(ruleData);
224 } 224 }
225 } 225 }
226 226
227 void RuleSet::addPageRule(StyleRulePage* rule) 227 void RuleSet::addPageRule(StyleRulePage* rule)
228 { 228 {
229 ensurePendingRules(); // So that m_pageRules.shrinkToFit() gets called. 229 ensurePendingRules(); // So that m_pageRules.shrinkToFit() gets called.
230 m_pageRules.append(rule); 230 m_pageRules.append(rule);
231 } 231 }
232 232
233 void RuleSet::addViewportRule(StyleRuleViewport* rule)
234 {
235 ensurePendingRules(); // So that m_viewportRules.shrinkToFit() gets called.
236 m_viewportRules.append(rule);
237 }
238
239 void RuleSet::addFontFaceRule(StyleRuleFontFace* rule) 233 void RuleSet::addFontFaceRule(StyleRuleFontFace* rule)
240 { 234 {
241 ensurePendingRules(); // So that m_fontFaceRules.shrinkToFit() gets called. 235 ensurePendingRules(); // So that m_fontFaceRules.shrinkToFit() gets called.
242 m_fontFaceRules.append(rule); 236 m_fontFaceRules.append(rule);
243 } 237 }
244 238
245 void RuleSet::addKeyframesRule(StyleRuleKeyframes* rule) 239 void RuleSet::addKeyframesRule(StyleRuleKeyframes* rule)
246 { 240 {
247 ensurePendingRules(); // So that m_keyframesRules.shrinkToFit() gets called. 241 ensurePendingRules(); // So that m_keyframesRules.shrinkToFit() gets called.
248 m_keyframesRules.append(rule); 242 m_keyframesRules.append(rule);
(...skipping 16 matching lines...) Expand all
265 } else if (selectorList.selectorHasSlottedPseudo(selectorIndex)) { 259 } else if (selectorList.selectorHasSlottedPseudo(selectorIndex)) {
266 m_slottedPseudoElementRules.append(MinimalRuleData(styleRule , selectorIndex, addRuleFlags)); 260 m_slottedPseudoElementRules.append(MinimalRuleData(styleRule , selectorIndex, addRuleFlags));
267 } else { 261 } else {
268 addRule(styleRule, selectorIndex, addRuleFlags); 262 addRule(styleRule, selectorIndex, addRuleFlags);
269 } 263 }
270 } 264 }
271 } else if (rule->isPageRule()) { 265 } else if (rule->isPageRule()) {
272 addPageRule(toStyleRulePage(rule)); 266 addPageRule(toStyleRulePage(rule));
273 } else if (rule->isMediaRule()) { 267 } else if (rule->isMediaRule()) {
274 StyleRuleMedia* mediaRule = toStyleRuleMedia(rule); 268 StyleRuleMedia* mediaRule = toStyleRuleMedia(rule);
275 if ((!mediaRule->mediaQueries() || medium.eval(mediaRule->mediaQueri es(), &m_viewportDependentMediaQueryResults, &m_deviceDependentMediaQueryResults ))) 269 if ((!mediaRule->mediaQueries() || medium.eval(mediaRule->mediaQueri es(), &m_features.viewportDependentMediaQueryResults, &m_features.deviceDependen tMediaQueryResults)))
276 addChildRules(mediaRule->childRules(), medium, addRuleFlags); 270 addChildRules(mediaRule->childRules(), medium, addRuleFlags);
277 } else if (rule->isFontFaceRule()) { 271 } else if (rule->isFontFaceRule()) {
278 addFontFaceRule(toStyleRuleFontFace(rule)); 272 addFontFaceRule(toStyleRuleFontFace(rule));
279 } else if (rule->isKeyframesRule()) { 273 } else if (rule->isKeyframesRule()) {
280 addKeyframesRule(toStyleRuleKeyframes(rule)); 274 addKeyframesRule(toStyleRuleKeyframes(rule));
281 } else if (rule->isViewportRule()) {
282 addViewportRule(toStyleRuleViewport(rule));
283 } else if (rule->isSupportsRule() && toStyleRuleSupports(rule)->conditio nIsSupported()) { 275 } else if (rule->isSupportsRule() && toStyleRuleSupports(rule)->conditio nIsSupported()) {
284 addChildRules(toStyleRuleSupports(rule)->childRules(), medium, addRu leFlags); 276 addChildRules(toStyleRuleSupports(rule)->childRules(), medium, addRu leFlags);
285 } 277 }
286 } 278 }
287 } 279 }
288 280
289 void RuleSet::addRulesFromSheet(StyleSheetContents* sheet, const MediaQueryEvalu ator& medium, AddRuleFlags addRuleFlags) 281 void RuleSet::addRulesFromSheet(StyleSheetContents* sheet, const MediaQueryEvalu ator& medium, AddRuleFlags addRuleFlags)
290 { 282 {
291 TRACE_EVENT0("blink", "RuleSet::addRulesFromSheet"); 283 TRACE_EVENT0("blink", "RuleSet::addRulesFromSheet");
292 284
293 ASSERT(sheet); 285 ASSERT(sheet);
294 286
295 const HeapVector<Member<StyleRuleImport>>& importRules = sheet->importRules( ); 287 const HeapVector<Member<StyleRuleImport>>& importRules = sheet->importRules( );
296 for (unsigned i = 0; i < importRules.size(); ++i) { 288 for (unsigned i = 0; i < importRules.size(); ++i) {
297 StyleRuleImport* importRule = importRules[i].get(); 289 StyleRuleImport* importRule = importRules[i].get();
298 if (importRule->styleSheet() && (!importRule->mediaQueries() || medium.e val(importRule->mediaQueries(), &m_viewportDependentMediaQueryResults, &m_device DependentMediaQueryResults))) 290 if (importRule->styleSheet() && (!importRule->mediaQueries() || medium.e val(importRule->mediaQueries(), &m_features.viewportDependentMediaQueryResults, &m_features.deviceDependentMediaQueryResults)))
299 addRulesFromSheet(importRule->styleSheet(), medium, addRuleFlags); 291 addRulesFromSheet(importRule->styleSheet(), medium, addRuleFlags);
300 } 292 }
301 293
302 addChildRules(sheet->childRules(), medium, addRuleFlags); 294 addChildRules(sheet->childRules(), medium, addRuleFlags);
303 } 295 }
304 296
305 void RuleSet::addStyleRule(StyleRule* rule, AddRuleFlags addRuleFlags) 297 void RuleSet::addStyleRule(StyleRule* rule, AddRuleFlags addRuleFlags)
306 { 298 {
307 for (size_t selectorIndex = 0; selectorIndex != kNotFound; selectorIndex = r ule->selectorList().indexOfNextSelectorAfter(selectorIndex)) 299 for (size_t selectorIndex = 0; selectorIndex != kNotFound; selectorIndex = r ule->selectorList().indexOfNextSelectorAfter(selectorIndex))
308 addRule(rule, selectorIndex, addRuleFlags); 300 addRule(rule, selectorIndex, addRuleFlags);
(...skipping 23 matching lines...) Expand all
332 compactPendingRules(pendingRules->idRules, m_idRules); 324 compactPendingRules(pendingRules->idRules, m_idRules);
333 compactPendingRules(pendingRules->classRules, m_classRules); 325 compactPendingRules(pendingRules->classRules, m_classRules);
334 compactPendingRules(pendingRules->tagRules, m_tagRules); 326 compactPendingRules(pendingRules->tagRules, m_tagRules);
335 compactPendingRules(pendingRules->shadowPseudoElementRules, m_shadowPseudoEl ementRules); 327 compactPendingRules(pendingRules->shadowPseudoElementRules, m_shadowPseudoEl ementRules);
336 m_linkPseudoClassRules.shrinkToFit(); 328 m_linkPseudoClassRules.shrinkToFit();
337 m_cuePseudoRules.shrinkToFit(); 329 m_cuePseudoRules.shrinkToFit();
338 m_focusPseudoClassRules.shrinkToFit(); 330 m_focusPseudoClassRules.shrinkToFit();
339 m_universalRules.shrinkToFit(); 331 m_universalRules.shrinkToFit();
340 m_shadowHostRules.shrinkToFit(); 332 m_shadowHostRules.shrinkToFit();
341 m_pageRules.shrinkToFit(); 333 m_pageRules.shrinkToFit();
342 m_viewportRules.shrinkToFit();
343 m_fontFaceRules.shrinkToFit(); 334 m_fontFaceRules.shrinkToFit();
344 m_keyframesRules.shrinkToFit(); 335 m_keyframesRules.shrinkToFit();
345 m_deepCombinatorOrShadowPseudoRules.shrinkToFit(); 336 m_deepCombinatorOrShadowPseudoRules.shrinkToFit();
346 m_contentPseudoElementRules.shrinkToFit(); 337 m_contentPseudoElementRules.shrinkToFit();
347 m_slottedPseudoElementRules.shrinkToFit(); 338 m_slottedPseudoElementRules.shrinkToFit();
348 } 339 }
349 340
341 RuleSet* RuleSet::emptyRuleSet()
342 {
343 DEFINE_STATIC_LOCAL(Persistent<RuleSet>, s_emptyRuleSet, ());
344 if (!s_emptyRuleSet)
345 s_emptyRuleSet = RuleSet::create();
346 return s_emptyRuleSet;
347 }
348
350 DEFINE_TRACE(MinimalRuleData) 349 DEFINE_TRACE(MinimalRuleData)
351 { 350 {
352 visitor->trace(m_rule); 351 visitor->trace(m_rule);
353 } 352 }
354 353
355 DEFINE_TRACE(RuleData) 354 DEFINE_TRACE(RuleData)
356 { 355 {
357 visitor->trace(m_rule); 356 visitor->trace(m_rule);
358 } 357 }
359 358
(...skipping 11 matching lines...) Expand all
371 visitor->trace(m_classRules); 370 visitor->trace(m_classRules);
372 visitor->trace(m_tagRules); 371 visitor->trace(m_tagRules);
373 visitor->trace(m_shadowPseudoElementRules); 372 visitor->trace(m_shadowPseudoElementRules);
374 visitor->trace(m_linkPseudoClassRules); 373 visitor->trace(m_linkPseudoClassRules);
375 visitor->trace(m_cuePseudoRules); 374 visitor->trace(m_cuePseudoRules);
376 visitor->trace(m_focusPseudoClassRules); 375 visitor->trace(m_focusPseudoClassRules);
377 visitor->trace(m_universalRules); 376 visitor->trace(m_universalRules);
378 visitor->trace(m_shadowHostRules); 377 visitor->trace(m_shadowHostRules);
379 visitor->trace(m_features); 378 visitor->trace(m_features);
380 visitor->trace(m_pageRules); 379 visitor->trace(m_pageRules);
381 visitor->trace(m_viewportRules);
382 visitor->trace(m_fontFaceRules); 380 visitor->trace(m_fontFaceRules);
383 visitor->trace(m_keyframesRules); 381 visitor->trace(m_keyframesRules);
384 visitor->trace(m_deepCombinatorOrShadowPseudoRules); 382 visitor->trace(m_deepCombinatorOrShadowPseudoRules);
385 visitor->trace(m_contentPseudoElementRules); 383 visitor->trace(m_contentPseudoElementRules);
386 visitor->trace(m_slottedPseudoElementRules); 384 visitor->trace(m_slottedPseudoElementRules);
387 visitor->trace(m_viewportDependentMediaQueryResults);
388 visitor->trace(m_deviceDependentMediaQueryResults);
389 visitor->trace(m_pendingRules); 385 visitor->trace(m_pendingRules);
390 #ifndef NDEBUG 386 #ifndef NDEBUG
391 visitor->trace(m_allRules); 387 visitor->trace(m_allRules);
392 #endif 388 #endif
393 } 389 }
394 390
395 #ifndef NDEBUG 391 #ifndef NDEBUG
396 void RuleSet::show() const 392 void RuleSet::show() const
397 { 393 {
398 for (const auto& rule: m_allRules) 394 for (const auto& rule: m_allRules)
399 rule.selector().show(); 395 rule.selector().show();
400 } 396 }
401 #endif 397 #endif
402 398
403 } // namespace blink 399 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/css/RuleSet.h ('k') | third_party/WebKit/Source/core/css/StyleSheetContents.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698