| 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 6b896ddb19dd867b675242c3bcb8e8063a5bf2c1..1137faaf66ef0b6706c0d2b182da31909d70d58c 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
|
| @@ -219,8 +219,11 @@ LayoutUnit NGLayoutInlineItem::InlineSize(unsigned start, unsigned end) const {
|
| return LayoutUnit();
|
|
|
| if (!style_ || !shape_result_) {
|
| - // Bidi controls do not have widths.
|
| - // TODO(kojii): Atomic inline not supported yet.
|
| + DCHECK(start == start_offset_ && end == end_offset_);
|
| + DCHECK(!IsAtomicInlineLevel()) << "Use NGLineBuilder::InlineSize";
|
| + DCHECK(!layout_object_ ||
|
| + layout_object_->isFloatingOrOutOfFlowPositioned());
|
| + // Bidi controls and out-of-flow objects do not have in-flow widths.
|
| return LayoutUnit();
|
| }
|
|
|
| @@ -250,7 +253,8 @@ void NGInlineNode::ShapeText() {
|
| // Shape each item with the full context of the entire node.
|
| HarfBuzzShaper shaper(text_content_.characters16(), text_content_.length());
|
| for (auto& item : items_) {
|
| - // Skip object replacement characters and bidi control characters.
|
| + // Skip non-text items; e.g., bidi controls, atomic inlines, out-of-flow
|
| + // objects.
|
| if (!item.style_)
|
| continue;
|
|
|
| @@ -305,7 +309,7 @@ MinMaxContentSize NGInlineNode::ComputeMinMaxContentSize() {
|
| // 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 += item.InlineSize();
|
| + sizes.max_content += line_builder.InlineSize(item);
|
|
|
| return sizes;
|
| }
|
|
|