| Index: sky/engine/core/css/resolver/StyleResolver.cpp
|
| diff --git a/sky/engine/core/css/resolver/StyleResolver.cpp b/sky/engine/core/css/resolver/StyleResolver.cpp
|
| index e9d22f55918d169b061e7d36ecabc25162a5ea6a..c2e2b967bab31684cb972353e53b4f005c480bdf 100644
|
| --- a/sky/engine/core/css/resolver/StyleResolver.cpp
|
| +++ b/sky/engine/core/css/resolver/StyleResolver.cpp
|
| @@ -148,12 +148,10 @@ StyleResolver::~StyleResolver()
|
| void StyleResolver::matchRules(Element& element, ElementRuleCollector& collector)
|
| {
|
| collector.clearMatchedRules();
|
| - collector.matchedResult().ranges.lastAuthorRule = collector.matchedResult().matchedProperties.size() - 1;
|
|
|
| CascadeOrder cascadeOrder = 0;
|
|
|
| - RuleRange ruleRange = collector.matchedResult().ranges.authorRuleRange();
|
| - collector.collectMatchingRules(MatchRequest(&defaultStyles()), ruleRange, ++cascadeOrder);
|
| + collector.collectMatchingRules(MatchRequest(&defaultStyles()), ++cascadeOrder);
|
|
|
| if (ShadowRoot* shadowRoot = element.shadowRoot())
|
| shadowRoot->scopedStyleResolver().collectMatchingHostRules(collector, ++cascadeOrder);
|
| @@ -279,7 +277,7 @@ PassRefPtr<RenderStyle> StyleResolver::styleForKeyframe(Element* element, const
|
| // relevant one is animation-timing-function and we special-case that in
|
| // CSSAnimations.cpp
|
| bool inheritedOnly = false;
|
| - applyMatchedProperties<HighPriorityProperties>(state, result, false, 0, result.matchedProperties.size() - 1, inheritedOnly);
|
| + applyMatchedProperties<HighPriorityProperties>(state, result, false, inheritedOnly);
|
|
|
| // If our font got dirtied, go ahead and update it now.
|
| updateFont(state);
|
| @@ -289,7 +287,7 @@ PassRefPtr<RenderStyle> StyleResolver::styleForKeyframe(Element* element, const
|
| StyleBuilder::applyProperty(CSSPropertyLineHeight, state, state.lineHeightValue());
|
|
|
| // Now do rest of the properties.
|
| - applyMatchedProperties<LowPriorityProperties>(state, result, false, 0, result.matchedProperties.size() - 1, inheritedOnly);
|
| + applyMatchedProperties<LowPriorityProperties>(state, result, false, inheritedOnly);
|
|
|
| loadPendingResources(state);
|
|
|
| @@ -522,19 +520,16 @@ void StyleResolver::applyProperties(StyleResolverState& state, const StyleProper
|
| }
|
|
|
| template <StyleResolver::StyleApplicationPass pass>
|
| -void StyleResolver::applyMatchedProperties(StyleResolverState& state, const MatchResult& matchResult, bool isImportant, int startIndex, int endIndex, bool inheritedOnly)
|
| +void StyleResolver::applyMatchedProperties(StyleResolverState& state, const MatchResult& matchResult, bool isImportant, bool inheritedOnly)
|
| {
|
| - if (startIndex == -1)
|
| - return;
|
| - for (int i = startIndex; i <= endIndex; ++i) {
|
| - const MatchedProperties& matchedProperties = matchResult.matchedProperties[i];
|
| - applyProperties<pass>(state, matchedProperties.properties.get(), isImportant, inheritedOnly);
|
| + for (const RefPtr<StylePropertySet>& properties : matchResult.matchedProperties) {
|
| + applyProperties<pass>(state, properties.get(), isImportant, inheritedOnly);
|
| }
|
| }
|
|
|
| -static unsigned computeMatchedPropertiesHash(const MatchedProperties* properties, unsigned size)
|
| +static unsigned computeMatchedPropertiesHash(const RefPtr<StylePropertySet>* properties, unsigned size)
|
| {
|
| - return StringHasher::hashMemory(properties, sizeof(MatchedProperties) * size);
|
| + return StringHasher::hashMemory(properties, sizeof(*properties) * size);
|
| }
|
|
|
| void StyleResolver::invalidateMatchedPropertiesCache()
|
| @@ -582,9 +577,8 @@ void StyleResolver::applyMatchedProperties(StyleResolverState& state, const Matc
|
| // The order is (1) high-priority not important, (2) high-priority important, (3) normal not important
|
| // and (4) normal important.
|
| state.setLineHeightValue(0);
|
| - applyMatchedProperties<HighPriorityProperties>(state, matchResult, false, 0, matchResult.matchedProperties.size() - 1, applyInheritedOnly);
|
| - applyMatchedProperties<HighPriorityProperties>(state, matchResult, true, matchResult.ranges.firstAuthorRule, matchResult.ranges.lastAuthorRule, applyInheritedOnly);
|
| - applyMatchedProperties<HighPriorityProperties>(state, matchResult, true, matchResult.ranges.firstUARule, matchResult.ranges.lastUARule, applyInheritedOnly);
|
| + applyMatchedProperties<HighPriorityProperties>(state, matchResult, false, applyInheritedOnly);
|
| + applyMatchedProperties<HighPriorityProperties>(state, matchResult, true, applyInheritedOnly);
|
|
|
| // If our font got dirtied, go ahead and update it now.
|
| updateFont(state);
|
| @@ -597,13 +591,9 @@ void StyleResolver::applyMatchedProperties(StyleResolverState& state, const Matc
|
| if (cachedMatchedProperties && cachedMatchedProperties->renderStyle->fontDescription() != state.style()->fontDescription())
|
| applyInheritedOnly = false;
|
|
|
| - // Now do the normal priority UA properties.
|
| - applyMatchedProperties<LowPriorityProperties>(state, matchResult, false, matchResult.ranges.firstUARule, matchResult.ranges.lastUARule, applyInheritedOnly);
|
| -
|
| // Now do the author and user normal priority properties and all the !important properties.
|
| - applyMatchedProperties<LowPriorityProperties>(state, matchResult, false, matchResult.ranges.lastUARule + 1, matchResult.matchedProperties.size() - 1, applyInheritedOnly);
|
| - applyMatchedProperties<LowPriorityProperties>(state, matchResult, true, matchResult.ranges.firstAuthorRule, matchResult.ranges.lastAuthorRule, applyInheritedOnly);
|
| - applyMatchedProperties<LowPriorityProperties>(state, matchResult, true, matchResult.ranges.firstUARule, matchResult.ranges.lastUARule, applyInheritedOnly);
|
| + applyMatchedProperties<LowPriorityProperties>(state, matchResult, false, applyInheritedOnly);
|
| + applyMatchedProperties<LowPriorityProperties>(state, matchResult, true, applyInheritedOnly);
|
|
|
| loadPendingResources(state);
|
|
|
|
|