[line-clamp] Always clamp immediately after a line box
In our initial implementation of line-clamp: auto
, we allowed
clamping after lineless boxes, in order to better match the behavior
of line-clamp
as it follows from the spec's continue: discard
model, even though our implementation uses a different model which is
not yet in the specification (see
w3c/csswg-drafts#7708).
However, in hallway conversations in TPAC 2024, we agreed that it
would be better for this model to instead only allow clamping
immediately after a line. If the first line does not fit, we calmp at
the first line even if that overflows the clamp height. If there are
no lines, we do not clamp. This patch implements this.
Additionally, a previous patch (https://crrev.com/c/5868971) had
increased the memory size of LineClampData
from 8 to 20 bytes,
causing a memory regression. This patch shrinks it to 12 bytes, since
LineClampData
no longer needs to keep track of how many block boxes
there are between the last line and the clmap point, and now OOFs
after the clamped line behave the same when clamping by a number of
lines or by a height, so there is no need for a flag to distinguish
these behaviors. This patch also adds a size assertion for
LineClampData
.
This patch also changes or removes some WPT tests that were written
assuming the previous behavior.
Bug: 40336192, 368114054
Change-Id: I8c8afebb5dc566de92112cee2fcf24a2e60b42c8
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5904459
Reviewed-by: Ian Kilpatrick ikilpatrick@chromium.org
Commit-Queue: Andreu Botella abotella@igalia.com
Cr-Commit-Position: refs/heads/main@{#1364495}