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

Unified Diff: Source/core/css/resolver/ScopedStyleResolver.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/resolver/ScopedStyleResolver.cpp
diff --git a/Source/core/css/resolver/ScopedStyleResolver.cpp b/Source/core/css/resolver/ScopedStyleResolver.cpp
index b748dde0c21d8469c48ce453a1574de4f069afbf..a3dd4ee6d8f0a37674ff752d1d2642aa0c5902e0 100644
--- a/Source/core/css/resolver/ScopedStyleResolver.cpp
+++ b/Source/core/css/resolver/ScopedStyleResolver.cpp
@@ -65,17 +65,30 @@ ContainerNode* ScopedStyleResolver::scopingNodeFor(const CSSStyleSheet* sheet)
return (parent->isElementNode() || parent->isShadowRoot()) ? parent : 0;
}
-void ScopedStyleResolver::addRulesFromSheet(StyleSheetContents* sheet, const MediaQueryEvaluator& medium, StyleResolver* resolver)
+inline RuleSet* ScopedStyleResolver::ensureAuthorStyle()
{
if (!m_authorStyle)
m_authorStyle = RuleSet::create();
+ return m_authorStyle.get();
+}
+
+void ScopedStyleResolver::addRulesFromSheet(StyleSheetContents* sheet, const MediaQueryEvaluator& medium, StyleResolver* resolver, bool viewportRuleIsProcessed)
+{
+ AddRuleFlags addRuleFlags = resolver->document().securityOrigin()->canRequest(sheet->baseURL()) ? RuleHasDocumentSecurityOrigin : RuleHasNoSpecialState;
+
+ if (viewportRuleIsProcessed)
+ addRuleFlags = static_cast<AddRuleFlags>(addRuleFlags | ViewportRuleIsProcessed);
- bool hasDocumentSecurityOrigin = resolver->document().securityOrigin()->canRequest(sheet->baseURL());
- m_authorStyle->addRulesFromSheet(sheet, medium, hasDocumentSecurityOrigin);
+ ensureAuthorStyle()->addRulesFromSheet(sheet, medium, addRuleFlags);
resolver->addMediaQueryResults(m_authorStyle->viewportDependentMediaQueryResults());
resolver->processScopedRules(*m_authorStyle, sheet->baseURL(), &m_scopingNode);
}
+void ScopedStyleResolver::addViewportRule(StyleRuleViewport* rule)
+{
+ ensureAuthorStyle()->addViewportRule(rule);
+}
+
inline RuleSet* ScopedStyleResolver::ensureAtHostRuleSetFor(const ShadowRoot* shadowRoot)
{
HashMap<const ShadowRoot*, OwnPtr<RuleSet> >::AddResult addResult = m_atHostRules.add(shadowRoot, nullptr);

Powered by Google App Engine
This is Rietveld 408576698