Index: third_party/WebKit/Source/core/layout/ng/ng_box.cc |
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_box.cc b/third_party/WebKit/Source/core/layout/ng/ng_box.cc |
index a0eee39b2e28e8177b85dcd067eded44da8080ba..026d7bde3f958322c119b0cb8ed96425fa6dd9bc 100644 |
--- a/third_party/WebKit/Source/core/layout/ng/ng_box.cc |
+++ b/third_party/WebKit/Source/core/layout/ng/ng_box.cc |
@@ -21,7 +21,7 @@ NGBox::NGBox(LayoutObject* layout_object) |
DCHECK(layout_box_); |
} |
-NGBox::NGBox(ComputedStyle* style) : style_(style) { |
+NGBox::NGBox(ComputedStyle* style) : layout_box_(nullptr), style_(style) { |
DCHECK(style_); |
} |
@@ -95,31 +95,30 @@ const ComputedStyle* NGBox::Style() const { |
return layout_box_->style(); |
} |
-NGBox* NGBox::NextSibling() const { |
- if (style_) |
- return next_sibling_; |
- DCHECK(layout_box_); |
- LayoutObject* next_sibling = layout_box_->nextSibling(); |
- return next_sibling ? new NGBox(next_sibling) : nullptr; |
+NGBox* NGBox::NextSibling() { |
+ if (!next_sibling_) { |
+ LayoutObject* next_sibling = |
+ layout_box_ ? layout_box_->nextSibling() : nullptr; |
+ NGBox* box = next_sibling ? new NGBox(next_sibling) : nullptr; |
+ SetNextSibling(box); |
+ } |
+ return next_sibling_; |
} |
-NGBox* NGBox::FirstChild() const { |
- if (style_) |
- return first_child_; |
- DCHECK(layout_box_); |
- LayoutObject* child = layout_box_->slowFirstChild(); |
- return child ? new NGBox(child) : nullptr; |
+NGBox* NGBox::FirstChild() { |
+ if (!first_child_) { |
+ LayoutObject* child = layout_box_ ? layout_box_->slowFirstChild() : nullptr; |
+ NGBox* box = child ? new NGBox(child) : nullptr; |
+ SetFirstChild(box); |
+ } |
+ return first_child_; |
} |
void NGBox::SetNextSibling(NGBox* sibling) { |
- DCHECK(!layout_box_); |
- DCHECK(style_); |
next_sibling_ = sibling; |
} |
void NGBox::SetFirstChild(NGBox* child) { |
- DCHECK(!layout_box_); |
- DCHECK(style_); |
first_child_ = child; |
} |