Index: Source/core/dom/RenderTreeBuilder.h |
diff --git a/Source/core/dom/RenderTreeBuilder.h b/Source/core/dom/RenderTreeBuilder.h |
index dc7a379bd0ffce1d56ec1b5c95f5b3dd4824ea87..30d639c4d921dfedc25c9f910104ecda34f7adc8 100644 |
--- a/Source/core/dom/RenderTreeBuilder.h |
+++ b/Source/core/dom/RenderTreeBuilder.h |
@@ -27,21 +27,36 @@ |
#define RenderTreeBuilder_h |
#include "core/dom/Document.h" |
-#include "core/dom/FirstLetterPseudoElement.h" |
#include "core/dom/Node.h" |
#include "core/dom/NodeRenderingTraversal.h" |
-#include "core/rendering/RenderObject.h" |
#include "wtf/RefPtr.h" |
namespace blink { |
class ContainerNode; |
+class RenderObject; |
class RenderStyle; |
class RenderTreeBuilder { |
STACK_ALLOCATED(); |
public: |
- RenderTreeBuilder(Node*, RenderStyle*); |
+ RenderTreeBuilder(Node* node, RenderStyle* style) |
+ : m_node(node) |
+ , m_renderingParent(nullptr) |
+ , m_style(style) |
+ { |
+ ASSERT(!node->renderer()); |
+ ASSERT(node->needsAttach()); |
+ ASSERT(node->document().inStyleRecalc()); |
+ |
+ // FIXME: We should be able to ASSERT(node->inActiveDocument()) but childrenChanged is called |
+ // before ChildNodeInsertionNotifier in ContainerNode's methods and some implementations |
+ // will trigger a layout inside childrenChanged. |
+ // Mainly HTMLTextAreaElement::childrenChanged calls HTMLTextFormControlElement::setSelectionRange |
+ // which does an updateLayoutIgnorePendingStylesheets. |
+ |
+ m_renderingParent = NodeRenderingTraversal::parent(node, &m_parentDetails); |
+ } |
void createRendererForTextIfNeeded(); |
void createRendererForElementIfNeeded(); |
@@ -53,7 +68,7 @@ private: |
RenderStyle& style() const; |
RawPtrWillBeMember<Node> m_node; |
- RawPtrWillBeMember<RenderObject> m_renderingParent; |
+ RawPtrWillBeMember<ContainerNode> m_renderingParent; |
NodeRenderingTraversal::ParentDetails m_parentDetails; |
mutable RefPtr<RenderStyle> m_style; |
}; |