| Index: Source/core/css/resolver/StyleResolver.cpp
|
| diff --git a/Source/core/css/resolver/StyleResolver.cpp b/Source/core/css/resolver/StyleResolver.cpp
|
| index 54dd5636646847aae469d2e2eafc45bae6d99dbe..7a9505417256eadeb614542a78019577a7b3f7ae 100644
|
| --- a/Source/core/css/resolver/StyleResolver.cpp
|
| +++ b/Source/core/css/resolver/StyleResolver.cpp
|
| @@ -184,7 +184,7 @@ void StyleResolver::finishAppendAuthorStyleSheets()
|
|
|
| void StyleResolver::resetAuthorStyle(const ContainerNode* scopingNode)
|
| {
|
| - ScopedStyleResolver* resolver = scopingNode ? m_styleTree.scopedStyleResolverFor(scopingNode) : m_styleTree.scopedStyleResolverForDocument();
|
| + ScopedStyleResolver* resolver = scopingNode ? m_styleTree.scopedStyleResolverFor(*scopingNode) : m_styleTree.scopedStyleResolverForDocument();
|
| if (!resolver)
|
| return;
|
|
|
| @@ -210,7 +210,8 @@ void StyleResolver::resetAtHostRules(const ContainerNode* scopingNode)
|
|
|
| const ShadowRoot* shadowRoot = toShadowRoot(scopingNode);
|
| const ContainerNode* shadowHost = shadowRoot->shadowHost();
|
| - ScopedStyleResolver* resolver = m_styleTree.scopedStyleResolverFor(shadowHost);
|
| + ASSERT(shadowHost);
|
| + ScopedStyleResolver* resolver = m_styleTree.scopedStyleResolverFor(*shadowHost);
|
| if (!resolver)
|
| return;
|
|
|
| @@ -244,6 +245,7 @@ void StyleResolver::collectFeatures()
|
|
|
| void StyleResolver::pushParentElement(Element* parent)
|
| {
|
| + ASSERT(parent);
|
| const ContainerNode* parentsParent = parent->parentOrShadowHostElement();
|
|
|
| // We are not always invoked consistently. For example, script execution can cause us to enter
|
| @@ -256,28 +258,29 @@ void StyleResolver::pushParentElement(Element* parent)
|
| m_selectorFilter.pushParent(parent);
|
|
|
| // Note: We mustn't skip ShadowRoot nodes for the scope stack.
|
| - m_styleTree.pushStyleCache(parent, parent->parentOrShadowHostNode());
|
| + m_styleTree.pushStyleCache(*parent, parent->parentOrShadowHostNode());
|
| }
|
|
|
| void StyleResolver::popParentElement(Element* parent)
|
| {
|
| + ASSERT(parent);
|
| // Note that we may get invoked for some random elements in some wacky cases during style resolve.
|
| // Pause maintaining the stack in this case.
|
| if (m_selectorFilter.parentStackIsConsistent(parent))
|
| m_selectorFilter.popParent();
|
|
|
| - m_styleTree.popStyleCache(parent);
|
| + m_styleTree.popStyleCache(*parent);
|
| }
|
|
|
| -void StyleResolver::pushParentShadowRoot(const ShadowRoot* shadowRoot)
|
| +void StyleResolver::pushParentShadowRoot(const ShadowRoot& shadowRoot)
|
| {
|
| - ASSERT(shadowRoot->host());
|
| - m_styleTree.pushStyleCache(shadowRoot, shadowRoot->host());
|
| + ASSERT(shadowRoot.host());
|
| + m_styleTree.pushStyleCache(shadowRoot, shadowRoot.host());
|
| }
|
|
|
| -void StyleResolver::popParentShadowRoot(const ShadowRoot* shadowRoot)
|
| +void StyleResolver::popParentShadowRoot(const ShadowRoot& shadowRoot)
|
| {
|
| - ASSERT(shadowRoot->host());
|
| + ASSERT(shadowRoot.host());
|
| m_styleTree.popStyleCache(shadowRoot);
|
| }
|
|
|
| @@ -316,7 +319,7 @@ inline void StyleResolver::matchShadowDistributedRules(ElementRuleCollector& col
|
|
|
| void StyleResolver::matchHostRules(Element* element, ScopedStyleResolver* resolver, ElementRuleCollector& collector, bool includeEmptyRules)
|
| {
|
| - if (element != resolver->scopingNode())
|
| + if (element != &resolver->scopingNode())
|
| return;
|
| resolver->matchHostRules(collector, includeEmptyRules);
|
| }
|
| @@ -379,7 +382,7 @@ void StyleResolver::matchScopedAuthorRules(Element* element, ElementRuleCollecto
|
| for (unsigned i = 0; i < resolvers.size(); ++i, --cascadeOrder) {
|
| ScopedStyleResolver* resolver = resolvers.at(i);
|
| // FIXME: Need to clarify how to treat style scoped.
|
| - resolver->collectMatchingAuthorRules(collector, includeEmptyRules, applyAuthorStyles, cascadeScope++, resolver->treeScope() == element->treeScope() && resolver->scopingNode()->isShadowRoot() ? 0 : cascadeOrder);
|
| + resolver->collectMatchingAuthorRules(collector, includeEmptyRules, applyAuthorStyles, cascadeScope++, resolver->treeScope() == element->treeScope() && resolver->scopingNode().isShadowRoot() ? 0 : cascadeOrder);
|
| }
|
|
|
| collector.sortAndTransferMatchedRules();
|
|
|