| 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)
|
|
|