Index: third_party/WebKit/Source/core/dom/StyleEngine.cpp |
diff --git a/third_party/WebKit/Source/core/dom/StyleEngine.cpp b/third_party/WebKit/Source/core/dom/StyleEngine.cpp |
index 00b7648b4e1a7bca2d65b40d050a4bec99821368..1aafe09b6864acea84da637e6cd980af5d470a3c 100644 |
--- a/third_party/WebKit/Source/core/dom/StyleEngine.cpp |
+++ b/third_party/WebKit/Source/core/dom/StyleEngine.cpp |
@@ -265,7 +265,7 @@ bool StyleEngine::shouldUpdateShadowTreeStyleSheetCollection( |
return !m_dirtyTreeScopes.isEmpty() || updateMode == FullStyleUpdate; |
} |
-void StyleEngine::clearMediaQueryRuleSetOnTreeScopeStyleSheets( |
+void StyleEngine::mediaQueryAffectingValueChanged( |
UnorderedTreeScopeSet& treeScopes) { |
for (TreeScope* treeScope : treeScopes) { |
DCHECK(treeScope != m_document); |
@@ -276,10 +276,12 @@ void StyleEngine::clearMediaQueryRuleSetOnTreeScopeStyleSheets( |
} |
} |
-void StyleEngine::clearMediaQueryRuleSetStyleSheets() { |
+void StyleEngine::mediaQueryAffectingValueChanged() { |
resolverChanged(FullStyleUpdate); |
documentStyleSheetCollection().clearMediaQueryRuleSetStyleSheets(); |
- clearMediaQueryRuleSetOnTreeScopeStyleSheets(m_activeTreeScopes); |
+ mediaQueryAffectingValueChanged(m_activeTreeScopes); |
+ if (m_resolver) |
+ m_resolver->updateMediaType(); |
} |
void StyleEngine::updateStyleSheetsInImport( |
@@ -493,7 +495,8 @@ void StyleEngine::clearMasterResolver() { |
void StyleEngine::didDetach() { |
clearResolver(); |
- m_viewportResolver.clear(); |
+ m_viewportResolver = nullptr; |
+ m_mediaQueryEvaluator = nullptr; |
} |
bool StyleEngine::shouldClearResolver() const { |
@@ -1136,6 +1139,16 @@ void StyleEngine::applyRuleSetChanges( |
scheduleInvalidationsForRuleSets(treeScope, changedRuleSets); |
} |
+const MediaQueryEvaluator& StyleEngine::ensureMediaQueryEvaluator() { |
+ if (!m_mediaQueryEvaluator) { |
+ if (document().frame()) |
+ m_mediaQueryEvaluator = new MediaQueryEvaluator(document().frame()); |
+ else |
+ m_mediaQueryEvaluator = new MediaQueryEvaluator("all"); |
+ } |
+ return *m_mediaQueryEvaluator; |
+} |
+ |
DEFINE_TRACE(StyleEngine) { |
visitor->trace(m_document); |
visitor->trace(m_injectedAuthorStyleSheets); |
@@ -1148,6 +1161,7 @@ DEFINE_TRACE(StyleEngine) { |
visitor->trace(m_globalRuleSet); |
visitor->trace(m_resolver); |
visitor->trace(m_viewportResolver); |
+ visitor->trace(m_mediaQueryEvaluator); |
visitor->trace(m_styleInvalidator); |
visitor->trace(m_fontSelector); |
visitor->trace(m_textToSheetCache); |