Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / core / css / resolver / StyleResolverParentScope.h
index 87ca21c..a0ff955 100644 (file)
@@ -6,13 +6,15 @@
 #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();
@@ -21,8 +23,9 @@ public:
 
 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;
@@ -34,9 +37,9 @@ inline StyleResolverParentScope::StyleResolverParentScope(Node& parent)
     : 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();
@@ -48,10 +51,8 @@ inline StyleResolverParentScope::~StyleResolverParentScope()
     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()
@@ -66,13 +67,11 @@ inline void StyleResolverParentScope::pushParentIfNeeded()
         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