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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: Source/core/css/resolver/StyleResolver.cpp
diff --git a/Source/core/css/resolver/StyleResolver.cpp b/Source/core/css/resolver/StyleResolver.cpp
index 6a3b2ac47f325aae8c9a7622a86f31013bde7b99..facc6eb9fc24fc3362068a8638e2cd707b383c2b 100644
--- a/Source/core/css/resolver/StyleResolver.cpp
+++ b/Source/core/css/resolver/StyleResolver.cpp
@@ -383,7 +383,6 @@ static inline ScopedStyleResolver* scopedResolverFor(const Element* element)
void StyleResolver::matchAuthorRules(Element* element, ElementRuleCollector& collector, bool includeEmptyRules)
{
collector.clearMatchedRules();
- collector.matchedResult().ranges.lastAuthorRule = collector.matchedResult().matchedProperties.size() - 1;
CascadeOrder cascadeOrder = 0;
WillBeHeapVector<RawPtrWillBeMember<ScopedStyleResolver>, 8> resolversInShadowTree;
@@ -424,11 +423,7 @@ void StyleResolver::matchUARules(ElementRuleCollector& collector)
void StyleResolver::matchRuleSet(ElementRuleCollector& collector, RuleSet* rules)
{
collector.clearMatchedRules();
- collector.matchedResult().ranges.lastUARule = collector.matchedResult().matchedProperties.size() - 1;
-
- RuleRange ruleRange = collector.matchedResult().ranges.UARuleRange();
- collector.collectMatchingRules(MatchRequest(rules), ruleRange);
-
+ collector.collectMatchingRules(MatchRequest(rules));
collector.sortAndTransferMatchedRules();
}
@@ -450,7 +445,7 @@ void StyleResolver::matchAllRules(StyleResolverState& state, ElementRuleCollecto
TextDirection textDirection = toHTMLElement(state.element())->directionalityIfhasDirAutoAttribute(isAuto);
if (isAuto) {
state.setHasDirAutoAttribute(true);
- collector.matchedResult().addMatchedProperties(textDirection == LTR ? leftToRightDeclaration() : rightToLeftDeclaration());
+ collector.addElementStyleProperties(textDirection == LTR ? leftToRightDeclaration() : rightToLeftDeclaration());
}
}
}
@@ -672,13 +667,13 @@ PassRefPtr<ComputedStyle> StyleResolver::styleForKeyframe(Element& element, cons
// relevant one is animation-timing-function and we special-case that in
// CSSAnimations.cpp
bool inheritedOnly = false;
- applyMatchedProperties<HighPropertyPriority>(state, result, false, 0, result.matchedProperties.size() - 1, inheritedOnly);
+ applyMatchedProperties<HighPropertyPriority>(state, result, false, result.firstRule(), result.lastRule(), inheritedOnly);
// If our font got dirtied, go ahead and update it now.
updateFont(state);
// Now do rest of the properties.
- applyMatchedProperties<LowPropertyPriority>(state, result, false, 0, result.matchedProperties.size() - 1, inheritedOnly);
+ applyMatchedProperties<LowPropertyPriority>(state, result, false, result.firstRule(), result.lastRule(), inheritedOnly);
loadPendingResources(state);
@@ -866,13 +861,13 @@ PassRefPtr<ComputedStyle> StyleResolver::styleForPage(int pageIndex)
bool inheritedOnly = false;
- MatchResult& result = collector.matchedResult();
- applyMatchedProperties<HighPropertyPriority>(state, result, false, 0, result.matchedProperties.size() - 1, inheritedOnly);
+ const MatchResult& result = collector.matchedResult();
+ applyMatchedProperties<HighPropertyPriority>(state, result, false, result.firstRule(), result.lastRule(), inheritedOnly);
// If our font got dirtied, go ahead and update it now.
updateFont(state);
- applyMatchedProperties<LowPropertyPriority>(state, result, false, 0, result.matchedProperties.size() - 1, inheritedOnly);
+ applyMatchedProperties<LowPropertyPriority>(state, result, false, result.firstRule(), result.lastRule(), inheritedOnly);
loadPendingResources(state);
@@ -1275,6 +1270,8 @@ void StyleResolver::applyMatchedProperties(StyleResolverState& state, const Matc
if (startIndex == -1)
return;
+ ASSERT(startIndex >= 0 && endIndex < static_cast<int>(matchResult.matchedProperties.size()));
+
if (state.style()->insideLink() != NotInsideLink) {
for (int i = startIndex; i <= endIndex; ++i) {
const MatchedProperties& matchedProperties = matchResult.matchedProperties[i];
@@ -1351,9 +1348,9 @@ void StyleResolver::applyMatchedProperties(StyleResolverState& state, const Matc
// high-priority properties first, i.e., those properties that other properties depend on.
// The order is (1) high-priority not important, (2) high-priority important, (3) normal not important
// and (4) normal important.
- applyMatchedProperties<HighPropertyPriority>(state, matchResult, false, 0, matchResult.matchedProperties.size() - 1, applyInheritedOnly);
- applyMatchedProperties<HighPropertyPriority>(state, matchResult, true, matchResult.ranges.firstAuthorRule, matchResult.ranges.lastAuthorRule, applyInheritedOnly);
- applyMatchedProperties<HighPropertyPriority>(state, matchResult, true, matchResult.ranges.firstUARule, matchResult.ranges.lastUARule, applyInheritedOnly);
+ applyMatchedProperties<HighPropertyPriority>(state, matchResult, false, matchResult.firstRule(), matchResult.lastRule(), applyInheritedOnly);
+ applyMatchedProperties<HighPropertyPriority>(state, matchResult, true, matchResult.firstAuthorRule(), matchResult.lastAuthorRule(), applyInheritedOnly);
+ applyMatchedProperties<HighPropertyPriority>(state, matchResult, true, matchResult.firstUARule(), matchResult.lastUARule(), applyInheritedOnly);
if (UNLIKELY(isSVGForeignObjectElement(element))) {
// LayoutSVGRoot handles zooming for the whole SVG subtree, so foreignObject content should not be scaled again.
@@ -1379,15 +1376,15 @@ void StyleResolver::applyMatchedProperties(StyleResolverState& state, const Matc
applyInheritedOnly = false;
// Now do the normal priority UA properties.
- applyMatchedProperties<LowPropertyPriority>(state, matchResult, false, matchResult.ranges.firstUARule, matchResult.ranges.lastUARule, applyInheritedOnly);
+ applyMatchedProperties<LowPropertyPriority>(state, matchResult, false, matchResult.firstUARule(), matchResult.lastUARule(), applyInheritedOnly);
// Cache the UA properties to pass them to LayoutTheme in adjustComputedStyle.
state.cacheUserAgentBorderAndBackground();
// Now do the author and user normal priority properties and all the !important properties.
- applyMatchedProperties<LowPropertyPriority>(state, matchResult, false, matchResult.ranges.lastUARule + 1, matchResult.matchedProperties.size() - 1, applyInheritedOnly);
- applyMatchedProperties<LowPropertyPriority>(state, matchResult, true, matchResult.ranges.firstAuthorRule, matchResult.ranges.lastAuthorRule, applyInheritedOnly);
- applyMatchedProperties<LowPropertyPriority>(state, matchResult, true, matchResult.ranges.firstUARule, matchResult.ranges.lastUARule, applyInheritedOnly);
+ applyMatchedProperties<LowPropertyPriority>(state, matchResult, false, matchResult.firstAuthorRule(), matchResult.lastAuthorRule(), applyInheritedOnly);
+ applyMatchedProperties<LowPropertyPriority>(state, matchResult, true, matchResult.firstAuthorRule(), matchResult.lastAuthorRule(), applyInheritedOnly);
+ applyMatchedProperties<LowPropertyPriority>(state, matchResult, true, matchResult.firstUARule(), matchResult.lastUARule(), applyInheritedOnly);
loadPendingResources(state);
@@ -1408,8 +1405,7 @@ void StyleResolver::applyCallbackSelectors(StyleResolverState& state)
collector.setMode(SelectorChecker::CollectingStyleRules);
MatchRequest matchRequest(m_watchedSelectorsRules.get(), true);
- RuleRange ruleRange = collector.matchedResult().ranges.authorRuleRange();
- collector.collectMatchingRules(matchRequest, ruleRange);
+ collector.collectMatchingRules(matchRequest);
collector.sortAndTransferMatchedRules();
RefPtrWillBeRawPtr<StyleRuleList> rules = collector.matchedStyleRuleList();
« 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