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

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: 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
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..c5aa8bf0031ce3ebe5d41e3bdac03ada9c249618 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,28 @@ 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 ( ; scopeResolver; scopeResolver = scopeResolver->parent())
hayato 2013/05/29 11:16:27 Now we can remove L115-L117, that can be merged to
tasak 2013/05/31 10:06:58 Done.
+ 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 +144,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)

Powered by Google App Engine
This is Rietveld 408576698