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

Unified Diff: Source/core/css/resolver/ScopedStyleResolver.cpp

Issue 16194002: Make ScopedStyleResolver use apply-author-styles of a given element's treescope. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rewrite layout test Created 7 years, 7 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 | « Source/core/css/resolver/ScopedStyleResolver.h ('k') | Source/core/css/resolver/StyleResolver.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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)
« no previous file with comments | « Source/core/css/resolver/ScopedStyleResolver.h ('k') | Source/core/css/resolver/StyleResolver.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698