#define StyleResolverParentScope_h
#include "core/css/resolver/StyleResolver.h"
+#include "core/dom/Document.h"
#include "core/dom/Element.h"
#include "core/dom/shadow/ShadowRoot.h"
-namespace WebCore {
+namespace blink {
// Maintains the parent element stack (and bloom filter) inside recalcStyle.
class StyleResolverParentScope FINAL {
+ STACK_ALLOCATED();
public:
explicit StyleResolverParentScope(Node& parent);
~StyleResolverParentScope();
private:
void pushParentIfNeeded();
+ Node& parent() const { return *m_parent; }
- Node& m_parent;
+ RawPtrWillBeMember<Node> m_parent;
bool m_pushed;
StyleResolverParentScope* m_previous;
StyleResolver& m_resolver;
: m_parent(parent)
, m_pushed(false)
, m_previous(s_currentScope)
- , m_resolver(*m_parent.document().styleResolver())
+ , m_resolver(*parent.document().styleResolver())
{
- ASSERT(m_parent.document().inStyleRecalc());
+ ASSERT(parent.document().inStyleRecalc());
ASSERT(parent.isElementNode() || parent.isShadowRoot());
s_currentScope = this;
m_resolver.increaseStyleSharingDepth();
m_resolver.decreaseStyleSharingDepth();
if (!m_pushed)
return;
- if (m_parent.isElementNode())
- m_resolver.popParentElement(toElement(m_parent));
- else
- m_resolver.popParentShadowRoot(toShadowRoot(m_parent));
+ if (parent().isElementNode())
+ m_resolver.popParentElement(toElement(parent()));
}
inline void StyleResolverParentScope::ensureParentStackIsPushed()
return;
if (m_previous)
m_previous->pushParentIfNeeded();
- if (m_parent.isElementNode())
- m_resolver.pushParentElement(toElement(m_parent));
- else
- m_resolver.pushParentShadowRoot(toShadowRoot(m_parent));
+ if (parent().isElementNode())
+ m_resolver.pushParentElement(toElement(parent()));
m_pushed = true;
}
-} // namespace WebCore
+} // namespace blink
#endif // StyleResolverParentScope_h