| Index: third_party/WebKit/Source/core/layout/ng/ng_inline_node.cc
|
| diff --git a/third_party/WebKit/Source/core/layout/ng/ng_inline_node.cc b/third_party/WebKit/Source/core/layout/ng/ng_inline_node.cc
|
| index 15de182f3a291fb4d271ac89a3eac3d2e973df5c..4be176f1e3ad4fa21e035decc06c1298d777beb1 100644
|
| --- a/third_party/WebKit/Source/core/layout/ng/ng_inline_node.cc
|
| +++ b/third_party/WebKit/Source/core/layout/ng/ng_inline_node.cc
|
| @@ -11,12 +11,12 @@
|
| #include "core/layout/ng/ng_box_fragment.h"
|
| #include "core/layout/ng/ng_constraint_space_builder.h"
|
| #include "core/layout/ng/ng_fragment_builder.h"
|
| +#include "core/layout/ng/ng_inline_break_token.h"
|
| +#include "core/layout/ng/ng_inline_layout_algorithm.h"
|
| #include "core/layout/ng/ng_layout_inline_items_builder.h"
|
| -#include "core/layout/ng/ng_line_builder.h"
|
| #include "core/layout/ng/ng_physical_box_fragment.h"
|
| #include "core/layout/ng/ng_physical_text_fragment.h"
|
| #include "core/layout/ng/ng_text_fragment.h"
|
| -#include "core/layout/ng/ng_text_layout_algorithm.h"
|
| #include "core/style/ComputedStyle.h"
|
| #include "platform/fonts/CharacterRange.h"
|
| #include "platform/fonts/shaping/CachingWordShapeIterator.h"
|
| @@ -93,7 +93,7 @@ LayoutObject* NGInlineNode::CollectInlines(
|
| } else if (node->isFloating()) {
|
| // Add floats and positioned objects in the same way as atomic inlines.
|
| // Because these objects need positions, they will be handled in
|
| - // NGLineBuilder.
|
| + // NGInlineLayoutAlgorithm.
|
| builder->Append(NGLayoutInlineItem::kFloating, objectReplacementCharacter,
|
| nullptr, node);
|
| } else if (node->isOutOfFlowPositioned()) {
|
| @@ -233,7 +233,7 @@ LayoutUnit NGLayoutInlineItem::InlineSize() const {
|
| return LayoutUnit(shape_result_->width());
|
|
|
| DCHECK(Type() != NGLayoutInlineItem::kAtomicInline)
|
| - << "Use NGLineBuilder::InlineSize";
|
| + << "Use NGInlineLayoutAlgorithm::InlineSize";
|
| // Bidi controls and out-of-flow objects do not have in-flow widths.
|
| return LayoutUnit();
|
| }
|
| @@ -279,27 +279,22 @@ void NGInlineNode::ShapeText() {
|
| }
|
|
|
| RefPtr<NGLayoutResult> NGInlineNode::Layout(NGConstraintSpace* constraint_space,
|
| - NGBreakToken*) {
|
| + NGBreakToken* break_token) {
|
| // TODO(kojii): Invalidate PrepareLayout() more efficiently.
|
| InvalidatePrepareLayout();
|
| - NGLineBuilder line_builder(this, constraint_space);
|
| - Layout(&line_builder);
|
| - RefPtr<NGLayoutResult> result = line_builder.CreateFragments();
|
| - line_builder.CopyFragmentDataToLayoutBlockFlow();
|
| + PrepareLayout();
|
| +
|
| + NGInlineLayoutAlgorithm algorithm(this, constraint_space,
|
| + toNGInlineBreakToken(break_token));
|
| + RefPtr<NGLayoutResult> result = algorithm.Layout();
|
| + algorithm.CopyFragmentDataToLayoutBlockFlow(result.get());
|
| return result;
|
| }
|
|
|
| -void NGInlineNode::Layout(NGLineBuilder* line_builder) {
|
| +MinMaxContentSize NGInlineNode::ComputeMinMaxContentSize() {
|
| if (!IsPrepareLayoutFinished())
|
| PrepareLayout();
|
|
|
| - if (text_content_.isEmpty())
|
| - return;
|
| -
|
| - NGTextLayoutAlgorithm(this).LayoutInline(line_builder);
|
| -}
|
| -
|
| -MinMaxContentSize NGInlineNode::ComputeMinMaxContentSize() {
|
| // Compute the max of inline sizes of all line boxes with 0 available inline
|
| // size. This gives the min-content, the width where lines wrap at every break
|
| // opportunity.
|
| @@ -310,17 +305,8 @@ MinMaxContentSize NGInlineNode::ComputeMinMaxContentSize() {
|
| .SetTextDirection(Style().direction())
|
| .SetAvailableSize({LayoutUnit(), NGSizeIndefinite})
|
| .ToConstraintSpace(writing_mode);
|
| - NGLineBuilder line_builder(this, constraint_space.get());
|
| - Layout(&line_builder);
|
| - MinMaxContentSize sizes;
|
| - sizes.min_content = line_builder.MaxInlineSize();
|
| -
|
| - // max-content is the width without any line wrapping.
|
| - // TODO(kojii): Implement hard breaks (<br> etc.) to break.
|
| - for (const auto& item : items_)
|
| - sizes.max_content += line_builder.InlineSize(item);
|
| -
|
| - return sizes;
|
| + NGInlineLayoutAlgorithm algorithm(this, constraint_space.get());
|
| + return algorithm.ComputeMinMaxContentSizeByLayout();
|
| }
|
|
|
| NGLayoutInputNode* NGInlineNode::NextSibling() {
|
|
|