Description[LayoutNG] Handle empty inlines and border edges
After we supported inline margin/border/padding[1] and adding box
fragments when needed[2], this patch adds a few finishing touches:
1. Creates empty box fragments when needed. [2] creates box fragments
for inline boxes, but does not create when it's empty.
Whether to create empty box fragments or not affects layout, since
such inline boxes affects line height. The behavior isn't well
defined, but there are some CSS2 tests. NG passes them now.
2. Improve "Edges" support. When an inline box was broken by line wrap
or inline continuation, the broken edge should not have margins/
borders/paddings. This patch supports suppressing borders on edges.
Note, computing positions for edges was done in [1].
3. Add margins/borders/paddings to NGInlineItemResult to re-use in
later phases.
4. Some minor fixes found in wpt/css/CSS2 test suites.
#2 was needed because it was working magically in common cases, but #1
broke the magic. Implementing it properly also helps NG paint work.
[1] https://codereview.chromium.org/2865903002
[2] https://codereview.chromium.org/2898413002
BUG=636993
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_layout_ng
Review-Url: https://codereview.chromium.org/2910133002
Cr-Commit-Position: refs/heads/master@{#477273}
Committed: https://chromium.googlesource.com/chromium/src/+/d8dad9313c05c4fb241eb1139a3ec864199b5d96
Patch Set 1 #Patch Set 2 : WIP #Patch Set 3 : WIP #Patch Set 4 : WIP #Patch Set 5 : Cleanup #Patch Set 6 : Cleanup #
Total comments: 4
Patch Set 7 : enum bitmasks to unsigned #Patch Set 8 : Changed to struct #Patch Set 9 : Rebase #Messages
Total messages: 50 (38 generated)
|