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

Side by Side Diff: Source/core/css/resolver/StyleResolver.cpp

Issue 1155393002: Refactor matched rule ranges. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 7 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, 2013 Apple Inc. All rights reserved. 5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights 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 365 matching lines...) Expand 10 before | Expand all | Expand 10 after
376 if (!treeScope) 376 if (!treeScope)
377 return nullptr; 377 return nullptr;
378 if (element->shadowPseudoId().isEmpty() && !element->isVTTElement()) 378 if (element->shadowPseudoId().isEmpty() && !element->isVTTElement())
379 return nullptr; 379 return nullptr;
380 return treeScope->scopedStyleResolver(); 380 return treeScope->scopedStyleResolver();
381 } 381 }
382 382
383 void StyleResolver::matchAuthorRules(Element* element, ElementRuleCollector& col lector, bool includeEmptyRules) 383 void StyleResolver::matchAuthorRules(Element* element, ElementRuleCollector& col lector, bool includeEmptyRules)
384 { 384 {
385 collector.clearMatchedRules(); 385 collector.clearMatchedRules();
386 collector.matchedResult().ranges.lastAuthorRule = collector.matchedResult(). matchedProperties.size() - 1;
387 386
388 CascadeOrder cascadeOrder = 0; 387 CascadeOrder cascadeOrder = 0;
389 WillBeHeapVector<RawPtrWillBeMember<ScopedStyleResolver>, 8> resolversInShad owTree; 388 WillBeHeapVector<RawPtrWillBeMember<ScopedStyleResolver>, 8> resolversInShad owTree;
390 collectScopedResolversForHostedShadowTrees(element, resolversInShadowTree); 389 collectScopedResolversForHostedShadowTrees(element, resolversInShadowTree);
391 390
392 // Apply :host and :host-context rules from inner scopes. 391 // Apply :host and :host-context rules from inner scopes.
393 for (int j = resolversInShadowTree.size() - 1; j >= 0; --j) 392 for (int j = resolversInShadowTree.size() - 1; j >= 0; --j)
394 resolversInShadowTree.at(j)->collectMatchingShadowHostRules(collector, i ncludeEmptyRules, ++cascadeOrder); 393 resolversInShadowTree.at(j)->collectMatchingShadowHostRules(collector, i ncludeEmptyRules, ++cascadeOrder);
395 394
396 // Apply normal rules from element scope. 395 // Apply normal rules from element scope.
(...skipping 20 matching lines...) Expand all
417 // If document uses view source styles (in view source mode or in xml viewer mode), then we match rules from the view source style sheet. 416 // If document uses view source styles (in view source mode or in xml viewer mode), then we match rules from the view source style sheet.
418 if (document().isViewSource()) 417 if (document().isViewSource())
419 matchRuleSet(collector, defaultStyleSheets.defaultViewSourceStyle()); 418 matchRuleSet(collector, defaultStyleSheets.defaultViewSourceStyle());
420 419
421 collector.setMatchingUARules(false); 420 collector.setMatchingUARules(false);
422 } 421 }
423 422
424 void StyleResolver::matchRuleSet(ElementRuleCollector& collector, RuleSet* rules ) 423 void StyleResolver::matchRuleSet(ElementRuleCollector& collector, RuleSet* rules )
425 { 424 {
426 collector.clearMatchedRules(); 425 collector.clearMatchedRules();
427 collector.matchedResult().ranges.lastUARule = collector.matchedResult().matc hedProperties.size() - 1; 426 collector.collectMatchingRules(MatchRequest(rules));
428
429 RuleRange ruleRange = collector.matchedResult().ranges.UARuleRange();
430 collector.collectMatchingRules(MatchRequest(rules), ruleRange);
431
432 collector.sortAndTransferMatchedRules(); 427 collector.sortAndTransferMatchedRules();
433 } 428 }
434 429
435 void StyleResolver::matchAllRules(StyleResolverState& state, ElementRuleCollecto r& collector, bool includeSMILProperties) 430 void StyleResolver::matchAllRules(StyleResolverState& state, ElementRuleCollecto r& collector, bool includeSMILProperties)
436 { 431 {
437 matchUARules(collector); 432 matchUARules(collector);
438 433
439 // Now check author rules, beginning first with presentational attributes ma pped from HTML. 434 // Now check author rules, beginning first with presentational attributes ma pped from HTML.
440 if (state.element()->isStyledElement()) { 435 if (state.element()->isStyledElement()) {
441 collector.addElementStyleProperties(state.element()->presentationAttribu teStyle()); 436 collector.addElementStyleProperties(state.element()->presentationAttribu teStyle());
442 437
443 // Now we check additional mapped declarations. 438 // Now we check additional mapped declarations.
444 // Tables and table cells share an additional mapped rule that must be a pplied 439 // Tables and table cells share an additional mapped rule that must be a pplied
445 // after all attributes, since their mapped style depends on the values of multiple attributes. 440 // after all attributes, since their mapped style depends on the values of multiple attributes.
446 collector.addElementStyleProperties(state.element()->additionalPresentat ionAttributeStyle()); 441 collector.addElementStyleProperties(state.element()->additionalPresentat ionAttributeStyle());
447 442
448 if (state.element()->isHTMLElement()) { 443 if (state.element()->isHTMLElement()) {
449 bool isAuto; 444 bool isAuto;
450 TextDirection textDirection = toHTMLElement(state.element())->direct ionalityIfhasDirAutoAttribute(isAuto); 445 TextDirection textDirection = toHTMLElement(state.element())->direct ionalityIfhasDirAutoAttribute(isAuto);
451 if (isAuto) { 446 if (isAuto) {
452 state.setHasDirAutoAttribute(true); 447 state.setHasDirAutoAttribute(true);
453 collector.matchedResult().addMatchedProperties(textDirection == LTR ? leftToRightDeclaration() : rightToLeftDeclaration()); 448 collector.addElementStyleProperties(textDirection == LTR ? leftT oRightDeclaration() : rightToLeftDeclaration());
454 } 449 }
455 } 450 }
456 } 451 }
457 452
458 matchAuthorRules(state.element(), collector, false); 453 matchAuthorRules(state.element(), collector, false);
459 454
460 if (state.element()->isStyledElement()) { 455 if (state.element()->isStyledElement()) {
461 if (state.element()->inlineStyle()) { 456 if (state.element()->inlineStyle()) {
462 // Inline style is immutable as long as there is no CSSOM wrapper. 457 // Inline style is immutable as long as there is no CSSOM wrapper.
463 bool isInlineStyleCacheable = !state.element()->inlineStyle()->isMut able(); 458 bool isInlineStyleCacheable = !state.element()->inlineStyle()->isMut able();
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
665 660
666 // Create the style 661 // Create the style
667 state.setStyle(ComputedStyle::clone(elementStyle)); 662 state.setStyle(ComputedStyle::clone(elementStyle));
668 663
669 // We don't need to bother with !important. Since there is only ever one 664 // We don't need to bother with !important. Since there is only ever one
670 // decl, there's nothing to override. So just add the first properties. 665 // decl, there's nothing to override. So just add the first properties.
671 // We also don't need to bother with animation properties since the only 666 // We also don't need to bother with animation properties since the only
672 // relevant one is animation-timing-function and we special-case that in 667 // relevant one is animation-timing-function and we special-case that in
673 // CSSAnimations.cpp 668 // CSSAnimations.cpp
674 bool inheritedOnly = false; 669 bool inheritedOnly = false;
675 applyMatchedProperties<HighPropertyPriority>(state, result, false, 0, result .matchedProperties.size() - 1, inheritedOnly); 670 applyMatchedProperties<HighPropertyPriority>(state, result, false, result.fi rstRule(), result.lastRule(), inheritedOnly);
676 671
677 // If our font got dirtied, go ahead and update it now. 672 // If our font got dirtied, go ahead and update it now.
678 updateFont(state); 673 updateFont(state);
679 674
680 // Now do rest of the properties. 675 // Now do rest of the properties.
681 applyMatchedProperties<LowPropertyPriority>(state, result, false, 0, result. matchedProperties.size() - 1, inheritedOnly); 676 applyMatchedProperties<LowPropertyPriority>(state, result, false, result.fir stRule(), result.lastRule(), inheritedOnly);
682 677
683 loadPendingResources(state); 678 loadPendingResources(state);
684 679
685 didAccess(); 680 didAccess();
686 681
687 return state.takeStyle(); 682 return state.takeStyle();
688 } 683 }
689 684
690 // This function is used by the WebAnimations JavaScript API method animate(). 685 // This function is used by the WebAnimations JavaScript API method animate().
691 // FIXME: Remove this when animate() switches away from resolution-dependent par sing. 686 // FIXME: Remove this when animate() switches away from resolution-dependent par sing.
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
859 854
860 PageRuleCollector collector(rootElementStyle, pageIndex); 855 PageRuleCollector collector(rootElementStyle, pageIndex);
861 856
862 collector.matchPageRules(CSSDefaultStyleSheets::instance().defaultPrintStyle ()); 857 collector.matchPageRules(CSSDefaultStyleSheets::instance().defaultPrintStyle ());
863 858
864 if (ScopedStyleResolver* scopedResolver = document().scopedStyleResolver()) 859 if (ScopedStyleResolver* scopedResolver = document().scopedStyleResolver())
865 scopedResolver->matchPageRules(collector); 860 scopedResolver->matchPageRules(collector);
866 861
867 bool inheritedOnly = false; 862 bool inheritedOnly = false;
868 863
869 MatchResult& result = collector.matchedResult(); 864 const MatchResult& result = collector.matchedResult();
870 applyMatchedProperties<HighPropertyPriority>(state, result, false, 0, result .matchedProperties.size() - 1, inheritedOnly); 865 applyMatchedProperties<HighPropertyPriority>(state, result, false, result.fi rstRule(), result.lastRule(), inheritedOnly);
871 866
872 // If our font got dirtied, go ahead and update it now. 867 // If our font got dirtied, go ahead and update it now.
873 updateFont(state); 868 updateFont(state);
874 869
875 applyMatchedProperties<LowPropertyPriority>(state, result, false, 0, result. matchedProperties.size() - 1, inheritedOnly); 870 applyMatchedProperties<LowPropertyPriority>(state, result, false, result.fir stRule(), result.lastRule(), inheritedOnly);
876 871
877 loadPendingResources(state); 872 loadPendingResources(state);
878 873
879 didAccess(); 874 didAccess();
880 875
881 // Now return the style. 876 // Now return the style.
882 return state.takeStyle(); 877 return state.takeStyle();
883 } 878 }
884 879
885 PassRefPtr<ComputedStyle> StyleResolver::initialStyleForElement() 880 PassRefPtr<ComputedStyle> StyleResolver::initialStyleForElement()
(...skipping 382 matching lines...) Expand 10 before | Expand all | Expand 10 after
1268 StyleBuilder::applyProperty(current.id(), state, current.value()); 1263 StyleBuilder::applyProperty(current.id(), state, current.value());
1269 } 1264 }
1270 } 1265 }
1271 1266
1272 template <CSSPropertyPriority priority> 1267 template <CSSPropertyPriority priority>
1273 void StyleResolver::applyMatchedProperties(StyleResolverState& state, const Matc hResult& matchResult, bool isImportant, int startIndex, int endIndex, bool inher itedOnly) 1268 void StyleResolver::applyMatchedProperties(StyleResolverState& state, const Matc hResult& matchResult, bool isImportant, int startIndex, int endIndex, bool inher itedOnly)
1274 { 1269 {
1275 if (startIndex == -1) 1270 if (startIndex == -1)
1276 return; 1271 return;
1277 1272
1273 ASSERT(startIndex >= 0 && endIndex < static_cast<int>(matchResult.matchedPro perties.size()));
1274
1278 if (state.style()->insideLink() != NotInsideLink) { 1275 if (state.style()->insideLink() != NotInsideLink) {
1279 for (int i = startIndex; i <= endIndex; ++i) { 1276 for (int i = startIndex; i <= endIndex; ++i) {
1280 const MatchedProperties& matchedProperties = matchResult.matchedProp erties[i]; 1277 const MatchedProperties& matchedProperties = matchResult.matchedProp erties[i];
1281 unsigned linkMatchType = matchedProperties.m_types.linkMatchType; 1278 unsigned linkMatchType = matchedProperties.m_types.linkMatchType;
1282 // FIXME: It would be nicer to pass these as arguments but that requ ires changes in many places. 1279 // FIXME: It would be nicer to pass these as arguments but that requ ires changes in many places.
1283 state.setApplyPropertyToRegularStyle(linkMatchType & CSSSelector::Ma tchLink); 1280 state.setApplyPropertyToRegularStyle(linkMatchType & CSSSelector::Ma tchLink);
1284 state.setApplyPropertyToVisitedLinkStyle(linkMatchType & CSSSelector ::MatchVisited); 1281 state.setApplyPropertyToVisitedLinkStyle(linkMatchType & CSSSelector ::MatchVisited);
1285 1282
1286 applyProperties<priority>(state, matchedProperties.properties.get(), isImportant, inheritedOnly, static_cast<PropertyWhitelistType>(matchedPropertie s.m_types.whitelistType)); 1283 applyProperties<priority>(state, matchedProperties.properties.get(), isImportant, inheritedOnly, static_cast<PropertyWhitelistType>(matchedPropertie s.m_types.whitelistType));
1287 } 1284 }
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
1344 1341
1345 return; 1342 return;
1346 } 1343 }
1347 applyInheritedOnly = true; 1344 applyInheritedOnly = true;
1348 } 1345 }
1349 1346
1350 // Now we have all of the matched rules in the appropriate order. Walk the r ules and apply 1347 // Now we have all of the matched rules in the appropriate order. Walk the r ules and apply
1351 // high-priority properties first, i.e., those properties that other propert ies depend on. 1348 // high-priority properties first, i.e., those properties that other propert ies depend on.
1352 // The order is (1) high-priority not important, (2) high-priority important , (3) normal not important 1349 // The order is (1) high-priority not important, (2) high-priority important , (3) normal not important
1353 // and (4) normal important. 1350 // and (4) normal important.
1354 applyMatchedProperties<HighPropertyPriority>(state, matchResult, false, 0, m atchResult.matchedProperties.size() - 1, applyInheritedOnly); 1351 applyMatchedProperties<HighPropertyPriority>(state, matchResult, false, matc hResult.firstRule(), matchResult.lastRule(), applyInheritedOnly);
1355 applyMatchedProperties<HighPropertyPriority>(state, matchResult, true, match Result.ranges.firstAuthorRule, matchResult.ranges.lastAuthorRule, applyInherited Only); 1352 applyMatchedProperties<HighPropertyPriority>(state, matchResult, true, match Result.firstAuthorRule(), matchResult.lastAuthorRule(), applyInheritedOnly);
1356 applyMatchedProperties<HighPropertyPriority>(state, matchResult, true, match Result.ranges.firstUARule, matchResult.ranges.lastUARule, applyInheritedOnly); 1353 applyMatchedProperties<HighPropertyPriority>(state, matchResult, true, match Result.firstUARule(), matchResult.lastUARule(), applyInheritedOnly);
1357 1354
1358 if (UNLIKELY(isSVGForeignObjectElement(element))) { 1355 if (UNLIKELY(isSVGForeignObjectElement(element))) {
1359 // LayoutSVGRoot handles zooming for the whole SVG subtree, so foreignOb ject content should not be scaled again. 1356 // LayoutSVGRoot handles zooming for the whole SVG subtree, so foreignOb ject content should not be scaled again.
1360 // 1357 //
1361 // FIXME: The following hijacks the zoom property for foreignObject so t hat children of foreignObject get the 1358 // FIXME: The following hijacks the zoom property for foreignObject so t hat children of foreignObject get the
1362 // correct font-size in case of zooming. 'zoom' has HighPropertyPriority , along with other font-related 1359 // correct font-size in case of zooming. 'zoom' has HighPropertyPriority , along with other font-related
1363 // properties used as input to the FontBuilder, so resetting it here may cause the FontBuilder to recompute the 1360 // properties used as input to the FontBuilder, so resetting it here may cause the FontBuilder to recompute the
1364 // font used as inheritable font for foreignObject content. If we want t o support zoom on foreignObject we'll 1361 // font used as inheritable font for foreignObject content. If we want t o support zoom on foreignObject we'll
1365 // need to find another way of handling the SVG zoom model. 1362 // need to find another way of handling the SVG zoom model.
1366 state.setEffectiveZoom(ComputedStyle::initialZoom()); 1363 state.setEffectiveZoom(ComputedStyle::initialZoom());
1367 } 1364 }
1368 1365
1369 if (cachedMatchedProperties && cachedMatchedProperties->computedStyle->effec tiveZoom() != state.style()->effectiveZoom()) { 1366 if (cachedMatchedProperties && cachedMatchedProperties->computedStyle->effec tiveZoom() != state.style()->effectiveZoom()) {
1370 state.fontBuilder().didChangeEffectiveZoom(); 1367 state.fontBuilder().didChangeEffectiveZoom();
1371 applyInheritedOnly = false; 1368 applyInheritedOnly = false;
1372 } 1369 }
1373 1370
1374 // If our font got dirtied, go ahead and update it now. 1371 // If our font got dirtied, go ahead and update it now.
1375 updateFont(state); 1372 updateFont(state);
1376 1373
1377 // Many properties depend on the font. If it changes we just apply all prope rties. 1374 // Many properties depend on the font. If it changes we just apply all prope rties.
1378 if (cachedMatchedProperties && cachedMatchedProperties->computedStyle->fontD escription() != state.style()->fontDescription()) 1375 if (cachedMatchedProperties && cachedMatchedProperties->computedStyle->fontD escription() != state.style()->fontDescription())
1379 applyInheritedOnly = false; 1376 applyInheritedOnly = false;
1380 1377
1381 // Now do the normal priority UA properties. 1378 // Now do the normal priority UA properties.
1382 applyMatchedProperties<LowPropertyPriority>(state, matchResult, false, match Result.ranges.firstUARule, matchResult.ranges.lastUARule, applyInheritedOnly); 1379 applyMatchedProperties<LowPropertyPriority>(state, matchResult, false, match Result.firstUARule(), matchResult.lastUARule(), applyInheritedOnly);
1383 1380
1384 // Cache the UA properties to pass them to LayoutTheme in adjustComputedStyl e. 1381 // Cache the UA properties to pass them to LayoutTheme in adjustComputedStyl e.
1385 state.cacheUserAgentBorderAndBackground(); 1382 state.cacheUserAgentBorderAndBackground();
1386 1383
1387 // Now do the author and user normal priority properties and all the !import ant properties. 1384 // Now do the author and user normal priority properties and all the !import ant properties.
1388 applyMatchedProperties<LowPropertyPriority>(state, matchResult, false, match Result.ranges.lastUARule + 1, matchResult.matchedProperties.size() - 1, applyInh eritedOnly); 1385 applyMatchedProperties<LowPropertyPriority>(state, matchResult, false, match Result.firstAuthorRule(), matchResult.lastAuthorRule(), applyInheritedOnly);
1389 applyMatchedProperties<LowPropertyPriority>(state, matchResult, true, matchR esult.ranges.firstAuthorRule, matchResult.ranges.lastAuthorRule, applyInheritedO nly); 1386 applyMatchedProperties<LowPropertyPriority>(state, matchResult, true, matchR esult.firstAuthorRule(), matchResult.lastAuthorRule(), applyInheritedOnly);
1390 applyMatchedProperties<LowPropertyPriority>(state, matchResult, true, matchR esult.ranges.firstUARule, matchResult.ranges.lastUARule, applyInheritedOnly); 1387 applyMatchedProperties<LowPropertyPriority>(state, matchResult, true, matchR esult.firstUARule(), matchResult.lastUARule(), applyInheritedOnly);
1391 1388
1392 loadPendingResources(state); 1389 loadPendingResources(state);
1393 1390
1394 if (!cachedMatchedProperties && cacheHash && MatchedPropertiesCache::isCache able(element, *state.style(), *state.parentStyle())) { 1391 if (!cachedMatchedProperties && cacheHash && MatchedPropertiesCache::isCache able(element, *state.style(), *state.parentStyle())) {
1395 INCREMENT_STYLE_STATS_COUNTER(*this, matchedPropertyCacheAdded); 1392 INCREMENT_STYLE_STATS_COUNTER(*this, matchedPropertyCacheAdded);
1396 m_matchedPropertiesCache.add(*state.style(), *state.parentStyle(), cache Hash, matchResult); 1393 m_matchedPropertiesCache.add(*state.style(), *state.parentStyle(), cache Hash, matchResult);
1397 } 1394 }
1398 1395
1399 ASSERT(!state.fontBuilder().fontDirty()); 1396 ASSERT(!state.fontBuilder().fontDirty());
1400 } 1397 }
1401 1398
1402 void StyleResolver::applyCallbackSelectors(StyleResolverState& state) 1399 void StyleResolver::applyCallbackSelectors(StyleResolverState& state)
1403 { 1400 {
1404 if (!m_watchedSelectorsRules) 1401 if (!m_watchedSelectorsRules)
1405 return; 1402 return;
1406 1403
1407 ElementRuleCollector collector(state.elementContext(), m_selectorFilter, sta te.style()); 1404 ElementRuleCollector collector(state.elementContext(), m_selectorFilter, sta te.style());
1408 collector.setMode(SelectorChecker::CollectingStyleRules); 1405 collector.setMode(SelectorChecker::CollectingStyleRules);
1409 1406
1410 MatchRequest matchRequest(m_watchedSelectorsRules.get(), true); 1407 MatchRequest matchRequest(m_watchedSelectorsRules.get(), true);
1411 RuleRange ruleRange = collector.matchedResult().ranges.authorRuleRange(); 1408 collector.collectMatchingRules(matchRequest);
1412 collector.collectMatchingRules(matchRequest, ruleRange);
1413 collector.sortAndTransferMatchedRules(); 1409 collector.sortAndTransferMatchedRules();
1414 1410
1415 RefPtrWillBeRawPtr<StyleRuleList> rules = collector.matchedStyleRuleList(); 1411 RefPtrWillBeRawPtr<StyleRuleList> rules = collector.matchedStyleRuleList();
1416 if (!rules) 1412 if (!rules)
1417 return; 1413 return;
1418 for (size_t i = 0; i < rules->m_list.size(); i++) 1414 for (size_t i = 0; i < rules->m_list.size(); i++)
1419 state.style()->addCallbackSelector(rules->m_list[i]->selectorList().sele ctorsText()); 1415 state.style()->addCallbackSelector(rules->m_list[i]->selectorList().sele ctorsText());
1420 } 1416 }
1421 1417
1422 void StyleResolver::enableStats(StatsReportType reportType) 1418 void StyleResolver::enableStats(StatsReportType reportType)
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
1499 visitor->trace(m_watchedSelectorsRules); 1495 visitor->trace(m_watchedSelectorsRules);
1500 visitor->trace(m_treeBoundaryCrossingRules); 1496 visitor->trace(m_treeBoundaryCrossingRules);
1501 visitor->trace(m_styleResourceLoader); 1497 visitor->trace(m_styleResourceLoader);
1502 visitor->trace(m_styleSharingLists); 1498 visitor->trace(m_styleSharingLists);
1503 visitor->trace(m_pendingStyleSheets); 1499 visitor->trace(m_pendingStyleSheets);
1504 visitor->trace(m_document); 1500 visitor->trace(m_document);
1505 #endif 1501 #endif
1506 } 1502 }
1507 1503
1508 } // namespace blink 1504 } // namespace blink
OLDNEW
« Source/core/css/ElementRuleCollector.h ('K') | « Source/core/css/resolver/ScopedStyleResolver.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698