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

Unified Diff: third_party/WebKit/Source/core/dom/StyleEngine.cpp

Issue 2443933002: Move TreeBoundaryCrossingScopes to StyleEngine. (Closed)
Patch Set: Created 4 years, 2 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
« no previous file with comments | « third_party/WebKit/Source/core/dom/StyleEngine.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 531253c4f769e31e74050b4c17570d5048b6a7b0..2c1ab5550ef6c6a909628ea901a1c6758c288845 100644
--- a/third_party/WebKit/Source/core/dom/StyleEngine.cpp
+++ b/third_party/WebKit/Source/core/dom/StyleEngine.cpp
@@ -381,16 +381,39 @@ void StyleEngine::didRemoveShadowRoot(ShadowRoot* shadowRoot) {
void StyleEngine::shadowRootRemovedFromDocument(ShadowRoot* shadowRoot) {
if (StyleResolver* styleResolver = resolver()) {
- styleResolver->resetAuthorStyle(*shadowRoot);
+ styleResolver->resetRuleFeatures();
if (TreeScopeStyleSheetCollection* collection =
styleSheetCollectionFor(*shadowRoot))
styleResolver->removePendingAuthorStyleSheets(
collection->activeAuthorStyleSheets());
}
+ shadowRoot->clearScopedStyleResolver();
m_styleSheetCollectionMap.remove(shadowRoot);
m_activeTreeScopes.remove(shadowRoot);
m_dirtyTreeScopes.remove(shadowRoot);
+ m_treeBoundaryCrossingScopes.remove(&shadowRoot->rootNode());
+}
+
+void StyleEngine::addTreeBoundaryCrossingScope(const TreeScope& treeScope) {
+ m_treeBoundaryCrossingScopes.add(&treeScope.rootNode());
+}
+
+void StyleEngine::resetAuthorStyle(TreeScope& treeScope) {
+ m_treeBoundaryCrossingScopes.remove(&treeScope.rootNode());
+
+ ScopedStyleResolver* scopedResolver = treeScope.scopedStyleResolver();
+ if (!scopedResolver)
+ return;
+
+ DCHECK(m_resolver);
+ m_resolver->resetRuleFeatures();
+ if (treeScope.rootNode().isDocumentNode()) {
+ scopedResolver->resetAuthorStyle();
+ return;
+ }
+
+ treeScope.clearScopedStyleResolver();
}
void StyleEngine::appendActiveAuthorStyleSheets() {
@@ -987,6 +1010,7 @@ DEFINE_TRACE(StyleEngine) {
visitor->trace(m_styleInvalidator);
visitor->trace(m_dirtyTreeScopes);
visitor->trace(m_activeTreeScopes);
+ visitor->trace(m_treeBoundaryCrossingScopes);
visitor->trace(m_fontSelector);
visitor->trace(m_textToSheetCache);
visitor->trace(m_sheetToTextCache);
« no previous file with comments | « third_party/WebKit/Source/core/dom/StyleEngine.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698