| Index: third_party/WebKit/Source/core/layout/ng/ng_inline_layout_algorithm.cc
|
| diff --git a/third_party/WebKit/Source/core/layout/ng/ng_inline_layout_algorithm.cc b/third_party/WebKit/Source/core/layout/ng/ng_inline_layout_algorithm.cc
|
| index 422164dedfcd20a115bf5a102454c8f742ae5d00..1bad392aa053633ced9525994783aea8dc56273d 100644
|
| --- a/third_party/WebKit/Source/core/layout/ng/ng_inline_layout_algorithm.cc
|
| +++ b/third_party/WebKit/Source/core/layout/ng/ng_inline_layout_algorithm.cc
|
| @@ -213,10 +213,8 @@ LayoutUnit NGInlineLayoutAlgorithm::InlineSize(const NGLayoutInlineItem& item,
|
|
|
| LayoutUnit NGInlineLayoutAlgorithm::InlineSizeFromLayout(
|
| const NGLayoutInlineItem& item) {
|
| - return NGBoxFragment(ConstraintSpace().WritingMode(),
|
| - ToNGPhysicalBoxFragment(
|
| - LayoutItem(item)->PhysicalFragment().Get()))
|
| - .InlineSize();
|
| + NGPhysicalSize size = LayoutItem(item)->PhysicalFragment()->Size();
|
| + return size.ConvertToLogical(ConstraintSpace().WritingMode()).inline_size;
|
| }
|
|
|
| const NGLayoutResult* NGInlineLayoutAlgorithm::LayoutItem(
|
| @@ -360,7 +358,7 @@ void NGInlineLayoutAlgorithm::LayoutAndPositionFloat(
|
| origin_offset, from_offset, margins,
|
| layout_result->PhysicalFragment().Get());
|
|
|
| - bool float_does_not_fit = end_position + float_fragment.InlineSize() >
|
| + bool float_does_not_fit = end_position + float_fragment.Size().inline_size >
|
| current_opportunity_.InlineSize();
|
| // Check if we already have a pending float. That's because a float cannot be
|
| // higher than any block or floated box generated before.
|
| @@ -511,12 +509,12 @@ LayoutUnit NGInlineLayoutAlgorithm::PlaceAtomicInline(
|
| ConstraintSpace().WritingMode(),
|
| ToNGPhysicalBoxFragment(LayoutItem(item)->PhysicalFragment().Get()));
|
| // TODO(kojii): Margin and border in block progression not implemented yet.
|
| - LayoutUnit block_size = fragment.BlockSize();
|
| + NGLogicalSize fragment_size = fragment.Size();
|
|
|
| // TODO(kojii): Try to eliminate the wrapping text fragment and use the
|
| // |fragment| directly. Currently |CopyFragmentDataToLayoutBlockFlow|
|
| // requires a text fragment.
|
| - text_builder->SetInlineSize(fragment.InlineSize()).SetBlockSize(block_size);
|
| + text_builder->SetSize(fragment_size);
|
|
|
| // TODO(kojii): Add baseline position to NGPhysicalFragment.
|
| LayoutBox* box = ToLayoutBox(item.GetLayoutObject());
|
| @@ -525,7 +523,8 @@ LayoutUnit NGInlineLayoutAlgorithm::PlaceAtomicInline(
|
| : LineDirectionMode::kVerticalLine;
|
| LayoutUnit baseline_offset(box->BaselinePosition(
|
| baseline_type_, IsFirstLine(), line_direction_mode));
|
| - line_box->UniteMetrics({baseline_offset, block_size - baseline_offset});
|
| + line_box->UniteMetrics(
|
| + {baseline_offset, fragment_size.block_size - baseline_offset});
|
|
|
| // TODO(kojii): Figure out what to do with OOF in NGLayoutResult.
|
| // Floats are ok because atomic inlines are BFC?
|
| @@ -638,9 +637,10 @@ void NGInlineLayoutAlgorithm::CopyFragmentDataToLayoutBlockFlow(
|
| NGTextFragment fragment(ConstraintSpace().WritingMode(),
|
| ToNGPhysicalTextFragment(physical_fragment));
|
| InlineBox* inline_box = run->box_;
|
| - inline_box->SetLogicalWidth(fragment.InlineSize());
|
| - inline_box->SetLogicalLeft(fragment.InlineOffset());
|
| - inline_box->SetLogicalTop(fragment.BlockOffset());
|
| + inline_box->SetLogicalWidth(fragment.Size().inline_size);
|
| + NGLogicalOffset fragment_offset = fragment.Offset();
|
| + inline_box->SetLogicalLeft(fragment_offset.inline_offset);
|
| + inline_box->SetLogicalTop(fragment_offset.block_offset);
|
| if (inline_box->GetLineLayoutItem().IsBox()) {
|
| LineLayoutBox box(inline_box->GetLineLayoutItem());
|
| box.SetLocation(inline_box->Location());
|
| @@ -652,8 +652,8 @@ void NGInlineLayoutAlgorithm::CopyFragmentDataToLayoutBlockFlow(
|
| // Copy to RootInlineBox.
|
| NGLineBoxFragment line_box(ConstraintSpace().WritingMode(),
|
| physical_line_box);
|
| - root_line_box->SetLogicalWidth(line_box.InlineSize());
|
| - LayoutUnit line_top = line_box.BlockOffset();
|
| + root_line_box->SetLogicalWidth(line_box.Size().inline_size);
|
| + LayoutUnit line_top = line_box.Offset().block_offset;
|
| root_line_box->SetLogicalTop(line_top);
|
| NGLineHeightMetrics line_metrics(Style(), baseline_type_);
|
| const NGLineHeightMetrics& max_with_leading = physical_line_box->Metrics();
|
|
|