| Index: third_party/WebKit/Source/core/layout/ng/inline/ng_line_breaker.cc
|
| diff --git a/third_party/WebKit/Source/core/layout/ng/inline/ng_line_breaker.cc b/third_party/WebKit/Source/core/layout/ng/inline/ng_line_breaker.cc
|
| index cf7d1dc14619c4d2adc35b358beed9e307556003..ecd4e770fe2e55245c88f9011aca15e9ba703a19 100644
|
| --- a/third_party/WebKit/Source/core/layout/ng/inline/ng_line_breaker.cc
|
| +++ b/third_party/WebKit/Source/core/layout/ng/inline/ng_line_breaker.cc
|
| @@ -292,20 +292,26 @@ void NGLineBreaker::HandleFloat(const NGInlineItem& item,
|
|
|
| void NGLineBreaker::HandleOpenTag(const NGInlineItem& item,
|
| NGInlineItemResult* item_result) {
|
| - if (item.HasStartEdge()) {
|
| - DCHECK(item.Style());
|
| - // TODO(kojii): We compute 16 values and discard 12 out of that, and do it 3
|
| - // times per element. We may want to cache this. crrev.com/2865903002/#msg14
|
| - NGBoxStrut margins = ComputeMargins(*constraint_space_, *item.Style(),
|
| - constraint_space_->WritingMode(),
|
| - constraint_space_->Direction());
|
| - NGBoxStrut borders = ComputeBorders(*constraint_space_, *item.Style());
|
| - NGBoxStrut paddings = ComputePadding(*constraint_space_, *item.Style());
|
| - item_result->inline_size =
|
| - margins.inline_start + borders.inline_start + paddings.inline_start;
|
| - position_ += item_result->inline_size;
|
| + DCHECK(item.Style());
|
| + const ComputedStyle& style = *item.Style();
|
| + if (style.HasBorder() || style.HasPadding() ||
|
| + (style.HasMargin() && item.HasStartEdge())) {
|
| + NGBoxStrut borders = ComputeBorders(*constraint_space_, style);
|
| + NGBoxStrut paddings = ComputePadding(*constraint_space_, style);
|
| + item_result->borders_paddings_block_start =
|
| + borders.block_start + paddings.block_start;
|
| + item_result->borders_paddings_block_end =
|
| + borders.block_end + paddings.block_end;
|
| + if (item.HasStartEdge()) {
|
| + item_result->margins = ComputeMargins(*constraint_space_, style,
|
| + constraint_space_->WritingMode(),
|
| + constraint_space_->Direction());
|
| + item_result->inline_size = item_result->margins.inline_start +
|
| + borders.inline_start + paddings.inline_start;
|
| + position_ += item_result->inline_size;
|
| + }
|
| }
|
| - UpdateBreakIterator(*item.Style());
|
| + UpdateBreakIterator(style);
|
| MoveToNextOf(item);
|
| }
|
|
|
| @@ -313,13 +319,13 @@ void NGLineBreaker::HandleCloseTag(const NGInlineItem& item,
|
| NGInlineItemResult* item_result) {
|
| if (item.HasEndEdge()) {
|
| DCHECK(item.Style());
|
| - NGBoxStrut margins = ComputeMargins(*constraint_space_, *item.Style(),
|
| - constraint_space_->WritingMode(),
|
| - constraint_space_->Direction());
|
| + item_result->margins = ComputeMargins(*constraint_space_, *item.Style(),
|
| + constraint_space_->WritingMode(),
|
| + constraint_space_->Direction());
|
| NGBoxStrut borders = ComputeBorders(*constraint_space_, *item.Style());
|
| NGBoxStrut paddings = ComputePadding(*constraint_space_, *item.Style());
|
| - item_result->inline_size =
|
| - margins.inline_end + borders.inline_end + paddings.inline_end;
|
| + item_result->inline_size = item_result->margins.inline_end +
|
| + borders.inline_end + paddings.inline_end;
|
| position_ += item_result->inline_size;
|
| }
|
| DCHECK(item.GetLayoutObject() && item.GetLayoutObject()->Parent());
|
|
|