Index: third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.cc |
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.cc b/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.cc |
index c2cd78d076505807f45c6463f56aa132689ab38f..7c8e546d99ba3e7126ce8b7dc1ee5248cdbe4cf1 100644 |
--- a/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.cc |
+++ b/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.cc |
@@ -6,7 +6,8 @@ |
namespace blink { |
-NGFragmentBuilder::NGFragmentBuilder(NGFragmentBase::NGFragmentType type) |
+NGFragmentBuilder::NGFragmentBuilder( |
+ NGPhysicalFragmentBase::NGFragmentType type) |
: type_(type), |
writing_mode_(HorizontalTopBottom), |
direction_(LeftToRight) {} |
@@ -42,19 +43,32 @@ NGFragmentBuilder& NGFragmentBuilder::SetBlockOverflow(LayoutUnit size) { |
return *this; |
} |
-NGFragmentBuilder& NGFragmentBuilder::AddChild(const NGFragment* child) { |
- DCHECK_EQ(type_, NGFragmentBase::FragmentBox) |
+NGFragmentBuilder& NGFragmentBuilder::AddChild(NGFragment* child, |
+ NGLogicalOffset offset) { |
+ DCHECK_EQ(type_, NGPhysicalFragmentBase::FragmentBox) |
<< "Only box fragments can have children"; |
- children_.append(child); |
+ children_.append(child->PhysicalFragment()); |
+ offsets_.append(offset); |
return *this; |
} |
-NGFragment* NGFragmentBuilder::ToFragment() { |
+NGPhysicalFragment* NGFragmentBuilder::ToFragment() { |
// TODO(layout-ng): Support text fragments |
- DCHECK_EQ(type_, NGFragmentBase::FragmentBox); |
- NGFragment* fragment = |
- new NGFragment(size_, overflow_, writing_mode_, direction_, children_); |
- return fragment; |
+ DCHECK_EQ(type_, NGPhysicalFragmentBase::FragmentBox); |
+ DCHECK_EQ(offsets_.size(), children_.size()); |
+ |
+ NGPhysicalSize physical_size = size_.ConvertToPhysical(writing_mode_); |
+ HeapVector<Member<const NGPhysicalFragmentBase>> children(children_.size()); |
+ |
+ for (size_t i = 0; i < children_.size(); ++i) { |
+ NGPhysicalFragmentBase* child = children_[i].get(); |
+ child->SetOffset(offsets_[i].ConvertToPhysical( |
+ writing_mode_, direction_, physical_size, child->Size())); |
+ children.append(child); |
+ } |
+ |
+ return new NGPhysicalFragment( |
+ physical_size, overflow_.ConvertToPhysical(writing_mode_), children); |
} |
} // namespace blink |