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

Unified Diff: Source/core/css/RuleSet.cpp

Issue 42543007: StyleResolver should update RuleSets lazily. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Revised Created 7 years, 1 month 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/RuleSet.cpp
diff --git a/Source/core/css/RuleSet.cpp b/Source/core/css/RuleSet.cpp
index 8d42b39848e321cf91ddc8d738677436852e956a..090710dd32511127d90d939991dbff949385181c 100644
--- a/Source/core/css/RuleSet.cpp
+++ b/Source/core/css/RuleSet.cpp
@@ -365,7 +365,7 @@ void RuleSet::addRegionRule(StyleRuleRegion* regionRule, bool hasDocumentSecurit
m_regionSelectorsAndRuleSets.append(RuleSetSelectorPair(regionRule->selectorList().first(), regionRuleSet.release()));
}
-void RuleSet::addChildRules(const Vector<RefPtr<StyleRuleBase> >& rules, const MediaQueryEvaluator& medium, bool hasDocumentSecurityOrigin, AddRuleFlags addRuleFlags)
+void RuleSet::addChildRules(const Vector<RefPtr<StyleRuleBase> >& rules, const MediaQueryEvaluator& medium, AddRuleFlags addRuleFlags)
{
for (unsigned i = 0; i < rules.size(); ++i) {
StyleRuleBase* rule = rules[i].get();
@@ -388,24 +388,24 @@ void RuleSet::addChildRules(const Vector<RefPtr<StyleRuleBase> >& rules, const M
} else if (rule->isMediaRule()) {
StyleRuleMedia* mediaRule = static_cast<StyleRuleMedia*>(rule);
if ((!mediaRule->mediaQueries() || medium.eval(mediaRule->mediaQueries(), &m_viewportDependentMediaQueryResults)))
- addChildRules(mediaRule->childRules(), medium, hasDocumentSecurityOrigin, addRuleFlags);
+ addChildRules(mediaRule->childRules(), medium, addRuleFlags);
} else if (rule->isFontFaceRule()) {
addFontFaceRule(static_cast<StyleRuleFontFace*>(rule));
} else if (rule->isKeyframesRule()) {
addKeyframesRule(static_cast<StyleRuleKeyframes*>(rule));
} else if (rule->isRegionRule()) {
- addRegionRule(static_cast<StyleRuleRegion*>(rule), hasDocumentSecurityOrigin);
+ addRegionRule(static_cast<StyleRuleRegion*>(rule), addRuleFlags & RuleHasDocumentSecurityOrigin);
} else if (rule->isHostRule()) {
addHostRule(static_cast<StyleRuleHost*>(rule));
- } else if (rule->isViewportRule()) {
+ } else if (rule->isViewportRule() && !(addRuleFlags & ViewportRuleIsProcessed)) {
addViewportRule(static_cast<StyleRuleViewport*>(rule));
} else if (rule->isSupportsRule() && static_cast<StyleRuleSupports*>(rule)->conditionIsSupported()) {
- addChildRules(static_cast<StyleRuleSupports*>(rule)->childRules(), medium, hasDocumentSecurityOrigin, addRuleFlags);
+ addChildRules(static_cast<StyleRuleSupports*>(rule)->childRules(), medium, addRuleFlags);
}
}
}
-void RuleSet::addRulesFromSheet(StyleSheetContents* sheet, const MediaQueryEvaluator& medium, bool hasDocumentSecurityOrigin)
+void RuleSet::addRulesFromSheet(StyleSheetContents* sheet, const MediaQueryEvaluator& medium, AddRuleFlags addRuleFlags)
{
ASSERT(sheet);
@@ -413,11 +413,10 @@ void RuleSet::addRulesFromSheet(StyleSheetContents* sheet, const MediaQueryEvalu
for (unsigned i = 0; i < importRules.size(); ++i) {
StyleRuleImport* importRule = importRules[i].get();
if (importRule->styleSheet() && (!importRule->mediaQueries() || medium.eval(importRule->mediaQueries(), &m_viewportDependentMediaQueryResults)))
- addRulesFromSheet(importRule->styleSheet(), medium);
+ addRulesFromSheet(importRule->styleSheet(), medium, addRuleFlags);
}
- AddRuleFlags addRuleFlags = static_cast<AddRuleFlags>((hasDocumentSecurityOrigin ? RuleHasDocumentSecurityOrigin : 0) | RuleCanUseFastCheckSelector);
- addChildRules(sheet->childRules(), medium, hasDocumentSecurityOrigin, addRuleFlags);
+ addChildRules(sheet->childRules(), medium, static_cast<AddRuleFlags>(addRuleFlags | RuleCanUseFastCheckSelector));
}
void RuleSet::addStyleRule(StyleRule* rule, AddRuleFlags addRuleFlags)

Powered by Google App Engine
This is Rietveld 408576698