Index: Source/core/css/resolver/ScopedStyleResolver.cpp |
diff --git a/Source/core/css/resolver/ScopedStyleResolver.cpp b/Source/core/css/resolver/ScopedStyleResolver.cpp |
index 9c17d5536771b0c19494959ac18ecd68c97e74ec..9ec0ed892066e8e840e6f7acc2de57154bcbaa8c 100644 |
--- a/Source/core/css/resolver/ScopedStyleResolver.cpp |
+++ b/Source/core/css/resolver/ScopedStyleResolver.cpp |
@@ -93,7 +93,7 @@ void ScopedStyleTree::setupScopeStylesTree(ScopedStyleResolver* target) |
target->setParent(scopeResolver); |
break; |
} |
- if (e->isShadowRoot() || e->isDocumentNode()) { |
+ if (e->isDocumentNode()) { |
bool dummy; |
ScopedStyleResolver* scopeResolver = addScopedStyleResolver(e, dummy); |
target->setParent(scopeResolver); |
@@ -110,44 +110,24 @@ void ScopedStyleTree::clear() |
m_cache.clear(); |
} |
-void ScopedStyleTree::resolveScopeStyles(const Element* element, Vector<std::pair<ScopedStyleResolver*, bool>, 8>& resolvers) |
+void ScopedStyleTree::resolveScopeStyles(const Element* element, Vector<ScopedStyleResolver*, 8>& resolvers) |
{ |
- ScopedStyleResolver* scopeResolver = scopedResolverFor(element); |
- if (!scopeResolver) |
- return; |
- |
- bool applyAuthorStylesOfElementTreeScope = element->treeScope()->applyAuthorStyles(); |
- bool applyAuthorStyles = m_cache.authorStyleBoundsIndex == m_cache.scopeResolverBoundsIndex ? applyAuthorStylesOfElementTreeScope : false; |
- |
- for ( ; scopeResolver; scopeResolver = scopeResolver->parent()) { |
- resolvers.append(std::pair<ScopedStyleResolver*, bool>(scopeResolver, applyAuthorStyles)); |
- if (scopeResolver->scope()->isShadowRoot()) { |
- if (scopeResolver->parent()->scope()->isInShadowTree()) |
- applyAuthorStyles = applyAuthorStyles && toShadowRoot(scopeResolver->scope())->applyAuthorStyles(); |
- else |
- applyAuthorStyles = applyAuthorStylesOfElementTreeScope; |
- } |
- } |
+ for (ScopedStyleResolver* scopeResolver = scopedResolverFor(element); scopeResolver; scopeResolver = scopeResolver->parent()) |
+ resolvers.append(scopeResolver); |
} |
-inline ScopedStyleResolver* ScopedStyleTree::enclosingScopedStyleResolverFor(const ContainerNode* scope, int& authorStyleBoundsIndex) |
+inline ScopedStyleResolver* ScopedStyleTree::enclosingScopedStyleResolverFor(const ContainerNode* scope) |
{ |
- for (; scope; scope = scope->parentOrShadowHostNode()) { |
+ for (; scope; scope = scope->parentOrShadowHostNode()) |
if (ScopedStyleResolver* scopeStyleResolver = scopedStyleResolverFor(scope)) |
return scopeStyleResolver; |
- if (scope->isShadowRoot() && !toShadowRoot(scope)->applyAuthorStyles()) |
- --authorStyleBoundsIndex; |
- } |
return 0; |
} |
void ScopedStyleTree::resolveStyleCache(const ContainerNode* scope) |
{ |
- int authorStyleBoundsIndex = 0; |
- m_cache.scopeResolver = enclosingScopedStyleResolverFor(scope, authorStyleBoundsIndex); |
- m_cache.scopeResolverBoundsIndex = authorStyleBoundsIndex; |
+ m_cache.scopeResolver = enclosingScopedStyleResolverFor(scope); |
m_cache.nodeForScopeStyles = scope; |
- m_cache.authorStyleBoundsIndex = 0; |
} |
void ScopedStyleTree::pushStyleCache(const ContainerNode* scope, const ContainerNode* parent) |
@@ -160,31 +140,20 @@ void ScopedStyleTree::pushStyleCache(const ContainerNode* scope, const Container |
return; |
} |
- if (scope->isShadowRoot() && !toShadowRoot(scope)->applyAuthorStyles()) |
- ++m_cache.authorStyleBoundsIndex; |
- |
ScopedStyleResolver* scopeResolver = scopedStyleResolverFor(scope); |
- if (scopeResolver) { |
+ if (scopeResolver) |
m_cache.scopeResolver = scopeResolver; |
- m_cache.scopeResolverBoundsIndex = m_cache.authorStyleBoundsIndex; |
- } |
m_cache.nodeForScopeStyles = scope; |
} |
void ScopedStyleTree::popStyleCache(const ContainerNode* scope) |
{ |
- if (cacheIsValid(scope)) { |
- bool needUpdateBoundsIndex = scope->isShadowRoot() && !toShadowRoot(scope)->applyAuthorStyles(); |
+ if (!cacheIsValid(scope)) |
+ return; |
- if (m_cache.scopeResolver && m_cache.scopeResolver->scope() == scope) { |
- m_cache.scopeResolver = m_cache.scopeResolver->parent(); |
- if (needUpdateBoundsIndex) |
- --m_cache.scopeResolverBoundsIndex; |
- } |
- if (needUpdateBoundsIndex) |
- --m_cache.authorStyleBoundsIndex; |
- m_cache.nodeForScopeStyles = scope->parentOrShadowHostNode(); |
- } |
+ if (m_cache.scopeResolver && m_cache.scopeResolver->scope() == scope) |
+ m_cache.scopeResolver = m_cache.scopeResolver->parent(); |
+ m_cache.nodeForScopeStyles = scope->parentOrShadowHostNode(); |
} |
void ScopedStyleTree::collectFeaturesTo(RuleFeatureSet& features) |