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

Unified Diff: sky/engine/core/css/resolver/StyleResolver.cpp

Issue 836193003: Combine match methods on StyleResolver. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 11 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
« no previous file with comments | « sky/engine/core/css/resolver/StyleResolver.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 f0d22a2de6f1c5e8eaace412f0c5bdc5cfc0f07d..d78bb38fed1c5b639ca9cf0b86db1cd71f867d39 100644
--- a/sky/engine/core/css/resolver/StyleResolver.cpp
+++ b/sky/engine/core/css/resolver/StyleResolver.cpp
@@ -239,51 +239,25 @@ StyleResolver::~StyleResolver()
{
}
-void StyleResolver::matchAuthorRulesForShadowHost(Element* element, ElementRuleCollector& collector, bool includeEmptyRules, Vector<RawPtr<ScopedStyleResolver>, 8>& resolvers, Vector<RawPtr<ScopedStyleResolver>, 8>& resolversInShadowTree)
+void StyleResolver::matchAuthorRules(Element* element, ElementRuleCollector& collector)
{
collector.clearMatchedRules();
collector.matchedResult().ranges.lastAuthorRule = collector.matchedResult().matchedProperties.size() - 1;
+ // TODO(esprehn): Eliminate CascadeScope and CascadeOrder.
CascadeScope cascadeScope = 0;
CascadeOrder cascadeOrder = 0;
- for (int j = resolversInShadowTree.size() - 1; j >= 0; --j)
- resolversInShadowTree.at(j)->collectMatchingAuthorRules(collector, includeEmptyRules, cascadeScope, cascadeOrder++);
+ // TODO(esprehn): Remove this.
+ bool includeEmptyRules = false;
- if (resolvers.isEmpty() || resolvers.first()->treeScope() != element->treeScope())
- ++cascadeScope;
- cascadeOrder += resolvers.size();
- for (unsigned i = 0; i < resolvers.size(); ++i)
- resolvers.at(i)->collectMatchingAuthorRules(collector, includeEmptyRules, cascadeScope++, --cascadeOrder);
+ // TODO(esprehn): This can only match :host rules, we should just store
+ // them in a separate RuleSet.
+ if (ShadowRoot* shadowRoot = element->shadowRoot())
+ shadowRoot->scopedStyleResolver().collectMatchingAuthorRules(collector, includeEmptyRules, cascadeScope, cascadeOrder++);
- collector.sortAndTransferMatchedRules();
-}
-
-void StyleResolver::matchAuthorRules(Element* element, ElementRuleCollector& collector, bool includeEmptyRules)
-{
- collector.clearMatchedRules();
- collector.matchedResult().ranges.lastAuthorRule = collector.matchedResult().matchedProperties.size() - 1;
-
- Vector<RawPtr<ScopedStyleResolver>, 8> resolvers;
- resolvers.append(&element->treeScope().scopedStyleResolver());
-
- Vector<RawPtr<ScopedStyleResolver>, 8> resolversInShadowTree;
- collectScopedResolversForHostedShadowTrees(element, resolversInShadowTree);
- if (!resolversInShadowTree.isEmpty()) {
- matchAuthorRulesForShadowHost(element, collector, includeEmptyRules, resolvers, resolversInShadowTree);
- return;
- }
-
- if (resolvers.isEmpty())
- return;
-
- CascadeScope cascadeScope = 0;
- CascadeOrder cascadeOrder = resolvers.size();
- for (unsigned i = 0; i < resolvers.size(); ++i, --cascadeOrder) {
- ScopedStyleResolver* resolver = resolvers.at(i);
- // FIXME: Need to clarify how to treat style scoped.
- resolver->collectMatchingAuthorRules(collector, includeEmptyRules, cascadeScope++, resolver->treeScope() == element->treeScope() && resolver->treeScope().rootNode().isShadowRoot() ? 0 : cascadeOrder);
- }
+ ScopedStyleResolver& resolver = element->treeScope().scopedStyleResolver();
+ resolver.collectMatchingAuthorRules(collector, includeEmptyRules, cascadeScope, cascadeOrder);
collector.sortAndTransferMatchedRules();
}
@@ -292,26 +266,21 @@ void StyleResolver::matchUARules(ElementRuleCollector& collector)
{
collector.setMatchingUARules(true);
- matchUARules(collector, &defaultStyles());
-
- collector.setMatchingUARules(false);
-}
-
-void StyleResolver::matchUARules(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(&defaultStyles()), ruleRange);
collector.sortAndTransferMatchedRules();
+
+ collector.setMatchingUARules(false);
}
void StyleResolver::matchAllRules(StyleResolverState& state, ElementRuleCollector& collector)
{
matchUARules(collector);
- matchAuthorRules(state.element(), collector, false);
+ matchAuthorRules(state.element(), collector);
if (state.element()->isStyledElement()) {
if (state.element()->inlineStyle()) {
@@ -543,21 +512,11 @@ bool StyleResolver::applyAnimatedProperties(StyleResolverState& state, Element*
return true;
}
-void StyleResolver::collectScopedResolversForHostedShadowTrees(const Element* element, Vector<RawPtr<ScopedStyleResolver>, 8>& resolvers)
-{
- ElementShadow* shadow = element->shadow();
- if (!shadow)
- return;
-
- // Adding scoped resolver for active shadow roots for shadow host styling.
- if (ShadowRoot* shadowRoot = shadow->shadowRoot())
- resolvers.append(&shadowRoot->scopedStyleResolver());
-}
-
void StyleResolver::styleTreeResolveScopedKeyframesRules(const Element* element, Vector<RawPtr<ScopedStyleResolver>, 8>& resolvers)
{
// Add resolvers for shadow roots hosted by the given element.
- collectScopedResolversForHostedShadowTrees(element, resolvers);
+ if (ShadowRoot* shadowRoot = element->shadowRoot())
+ resolvers.append(&shadowRoot->scopedStyleResolver());
resolvers.append(&element->treeScope().scopedStyleResolver());
}
« no previous file with comments | « sky/engine/core/css/resolver/StyleResolver.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698