commit | 6505ce96d0fdf1e53ef536ab3d1b29a5b53fa507 | [log] [tgz] |
---|---|---|
author | Ian Kilpatrick <ikilpatrick@chromium.org> | Mon Oct 23 07:44:15 2017 |
committer | Commit Bot <commit-bot@chromium.org> | Mon Oct 23 07:44:15 2017 |
tree | a4febee6c871739ab8713763fce2dbfd6cba5294 | |
parent | a9873a1588050c59a58170387400d6a1c2f9211b [diff] |
[LayoutNG] Switch NGInlineLayoutAlgorithm to producing lineboxes. Hurray! Does what it says on the box. NGInlineLayoutAlgorithm now will produce linebox-by-linebox feeding the previous break token back into it. NGBlockLayoutAlgorithm::HandleInfow now has some special logic to deal with lineboxes, but this is to: 1) Resolve the BFC offset early, (which we needed to do already for something else). 2) Add positioned floats into the parent fragment. NGInlineLayoutAlgorithm is simplified a little, there are three major followup patches which need to be done. 1) Simplify NGLineBreaker, and separate pass for empty inline with unpositioned floats. This will make NGLineBreaker v. simple (hopefully). 2) Move NGInlineNode::CopyFragmentDataToLayoutBox into NGBlockNode. 3) Implement a loop inside NGInlineLayoutAlgorithm to check the current layout opportunity block-size to see if it'll fit. I think for speed reasons we'll want NGInlineNode::Layout to be a little special in mutating the NGInlineBreakToken inplace, (to reduce copies), but this can be done later. This tries to keep feature parity with the current code, so there shouldn't be any major regressions. Bug: 635619 Change-Id: I04e9d4c454da6efab06286632366d954c6015a92 Reviewed-on: https://chromium-review.googlesource.com/709716 Commit-Queue: Ian Kilpatrick <ikilpatrick@chromium.org> Reviewed-by: Emil A Eklund <eae@chromium.org> Reviewed-by: Koji Ishii <kojii@chromium.org> Cr-Commit-Position: refs/heads/master@{#510727}
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure .