Index: third_party/WebKit/Source/core/css/StyleSheetContents.cpp |
diff --git a/third_party/WebKit/Source/core/css/StyleSheetContents.cpp b/third_party/WebKit/Source/core/css/StyleSheetContents.cpp |
index 1403ca2372c1bee0095f3b9f4729b0a62146f8ee..4d90718d15188934e5706eed8bd874099ee42ef6 100644 |
--- a/third_party/WebKit/Source/core/css/StyleSheetContents.cpp |
+++ b/third_party/WebKit/Source/core/css/StyleSheetContents.cpp |
@@ -618,10 +618,14 @@ RuleSet& StyleSheetContents::ensureRuleSet(const MediaQueryEvaluator& medium, |
return *m_ruleSet.get(); |
} |
-static void clearResolvers(HeapHashSet<WeakMember<CSSStyleSheet>>& clients) { |
+static void setNeedsActiveStyleUpdateForClients( |
+ HeapHashSet<WeakMember<CSSStyleSheet>>& clients) { |
for (const auto& sheet : clients) { |
- if (Document* document = sheet->ownerDocument()) |
- document->styleEngine().clearResolver(); |
+ Document* document = sheet->ownerDocument(); |
+ Node* node = sheet->ownerNode(); |
+ if (!document || !node || !node->isConnected()) |
+ continue; |
+ document->styleEngine().setNeedsActiveStyleUpdate(node->treeScope()); |
esprehn
2016/12/09 01:36:21
Should this be a method on TreeScope instead?
rune
2016/12/09 08:55:50
We will need to pass the tree-scope on to StyleEng
|
} |
} |
@@ -629,18 +633,12 @@ void StyleSheetContents::clearRuleSet() { |
if (StyleSheetContents* parentSheet = parentStyleSheet()) |
parentSheet->clearRuleSet(); |
- // Don't want to clear the StyleResolver if the RuleSet hasn't been created |
- // since we only clear the StyleResolver so that it's members are properly |
- // updated in ScopedStyleResolver::addRulesFromSheet. |
if (!m_ruleSet) |
return; |
- // Clearing the ruleSet means we need to recreate the styleResolver data |
- // structures. See the StyleResolver calls in |
- // ScopedStyleResolver::addRulesFromSheet. |
- clearResolvers(m_loadingClients); |
- clearResolvers(m_completedClients); |
m_ruleSet.clear(); |
+ setNeedsActiveStyleUpdateForClients(m_loadingClients); |
+ setNeedsActiveStyleUpdateForClients(m_completedClients); |
} |
static void removeFontFaceRules(HeapHashSet<WeakMember<CSSStyleSheet>>& clients, |