Commit 827d43cc authored by kojii's avatar kojii Committed by Commit bot

[LayoutNG] Avoid creating empty LineBoxData in NGLineBuilder

Empty LineBoxData produces empty BidiRunList, which confuses
LayoutBlockFlow::constructLine() in CopyFragmentDataToLayoutBlockFlow().

There are cases where we need empty line boxes, such as when the caret
is set while editing. Such cases need to be revisited in future.

This is part of the effort to layout Wikipedia main page[1] with
LayoutNGInline runtime flag enabled.

[1] https://en.wikipedia.org/wiki/Main_Page

BUG=636993

Review-Url: https://codereview.chromium.org/2676883002
Cr-Commit-Position: refs/heads/master@{#448099}
parent 9c3cf472
...@@ -77,14 +77,16 @@ void NGLineBuilder::CreateLine() { ...@@ -77,14 +77,16 @@ void NGLineBuilder::CreateLine() {
} }
DCHECK_EQ(fragments_.size(), offsets_.size()); DCHECK_EQ(fragments_.size(), offsets_.size());
line_box_data_list_.grow(line_box_data_list_.size() + 1); if (!fragments_.isEmpty()) {
LineBoxData& line_box_data = line_box_data_list_.back(); line_box_data_list_.grow(line_box_data_list_.size() + 1);
line_box_data.fragment_end = fragments_.size(); LineBoxData& line_box_data = line_box_data_list_.back();
line_box_data.inline_size = inline_offset; line_box_data.fragment_end = fragments_.size();
line_box_data.inline_size = inline_offset;
max_inline_size_ = std::max(max_inline_size_, inline_offset);
// TODO(kojii): Implement block size when we support baseline alignment. max_inline_size_ = std::max(max_inline_size_, inline_offset);
content_size_ += LayoutUnit(100); // TODO(kojii): Implement block size when we support baseline alignment.
content_size_ += LayoutUnit(100);
}
line_item_chunks_.clear(); line_item_chunks_.clear();
#if DCHECK_IS_ON() #if DCHECK_IS_ON()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment