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

Unified Diff: sky/engine/core/css/ElementRuleCollector.cpp

Issue 840163003: Make SelectorChecker a const operation over element. (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
Index: sky/engine/core/css/ElementRuleCollector.cpp
diff --git a/sky/engine/core/css/ElementRuleCollector.cpp b/sky/engine/core/css/ElementRuleCollector.cpp
index 25d0f596b245afc298b06b0bd3e3f3e57b71f846..d8bd61d12638ac3386a2d24e702ae97fd875eec1 100644
--- a/sky/engine/core/css/ElementRuleCollector.cpp
+++ b/sky/engine/core/css/ElementRuleCollector.cpp
@@ -43,7 +43,6 @@ ElementRuleCollector::ElementRuleCollector(const ElementResolveContext& context,
RenderStyle* style)
: m_context(context)
, m_style(style)
- , m_mode(SelectorChecker::ResolvingStyle)
, m_matchingUARules(false)
{ }
@@ -131,11 +130,21 @@ void ElementRuleCollector::sortAndTransferMatchedRules()
inline bool ElementRuleCollector::ruleMatches(const RuleData& ruleData, const ContainerNode* scope)
{
- SelectorChecker selectorChecker(m_context.element()->document(), m_mode);
+ SelectorChecker selectorChecker;
SelectorChecker::SelectorCheckingContext context(ruleData.selector(), m_context.element());
- context.elementStyle = m_style.get();
context.scope = scope;
- return selectorChecker.match(context);
+ if (selectorChecker.match(context)) {
+ if (selectorChecker.matchedAttributeSelector())
+ m_style->setUnique();
+ if (selectorChecker.matchedFocusSelector())
+ m_style->setAffectedByFocus();
+ if (selectorChecker.matchedHoverSelector())
+ m_style->setAffectedByHover();
+ if (selectorChecker.matchedActiveSelector())
+ m_style->setAffectedByActive();
+ return true;
+ }
+ return false;
}
void ElementRuleCollector::collectRuleIfMatches(const RuleData& ruleData, CascadeScope cascadeScope, CascadeOrder cascadeOrder, const MatchRequest& matchRequest, RuleRange& ruleRange)

Powered by Google App Engine
This is Rietveld 408576698