| 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 51d4b5fae1581d13d8b4c4b3589d20f5b24b278c..b2885eadf0fca1986d525169bbdcfa3debcf9a4d 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
 | 
| @@ -80,10 +80,27 @@ NGFragmentBuilder& NGFragmentBuilder::AddChild(
 | 
|    DCHECK_EQ(type_, NGPhysicalFragment::kFragmentBox)
 | 
|        << "Only box fragments can have children";
 | 
|  
 | 
| -  // Update if we have fragmented in this flow.
 | 
| -  did_break_ |= child->IsBox() && !child->BreakToken()->IsFinished();
 | 
| +  switch (child->Type()) {
 | 
| +    case NGPhysicalBoxFragment::kFragmentBox:
 | 
| +      // Update if we have fragmented in this flow.
 | 
| +      did_break_ |= !child->BreakToken()->IsFinished();
 | 
| +      child_break_tokens_.push_back(child->BreakToken());
 | 
| +      break;
 | 
| +    case NGPhysicalBoxFragment::kFragmentLineBox:
 | 
| +      // NGInlineNode produces multiple line boxes in an anonymous box. Only
 | 
| +      // the last break token is needed to be reported to the parent.
 | 
| +      DCHECK(child->BreakToken() && child->BreakToken()->InputNode() == node_);
 | 
| +      last_inline_break_token_ =
 | 
| +          child->BreakToken()->IsFinished() ? nullptr : child->BreakToken();
 | 
| +      break;
 | 
| +    case NGPhysicalBoxFragment::kFragmentText:
 | 
| +      DCHECK(!child->BreakToken());
 | 
| +      break;
 | 
| +    default:
 | 
| +      NOTREACHED();
 | 
| +      break;
 | 
| +  }
 | 
|  
 | 
| -  child_break_tokens_.push_back(child->BreakToken());
 | 
|    children_.push_back(std::move(child));
 | 
|    offsets_.push_back(child_offset);
 | 
|  
 | 
| @@ -173,9 +190,14 @@ RefPtr<NGLayoutResult> NGFragmentBuilder::ToBoxFragment() {
 | 
|    }
 | 
|  
 | 
|    RefPtr<NGBreakToken> break_token;
 | 
| +  if (last_inline_break_token_) {
 | 
| +    DCHECK(!last_inline_break_token_->IsFinished());
 | 
| +    child_break_tokens_.push_back(std::move(last_inline_break_token_));
 | 
| +    did_break_ = true;
 | 
| +  }
 | 
|    if (did_break_) {
 | 
| -    break_token = NGBlockBreakToken::create(
 | 
| -        toNGBlockNode(node_.get()), used_block_size_, child_break_tokens_);
 | 
| +    break_token = NGBlockBreakToken::create(node_.get(), used_block_size_,
 | 
| +                                            child_break_tokens_);
 | 
|    } else {
 | 
|      break_token = NGBlockBreakToken::create(node_.get());
 | 
|    }
 | 
| 
 |