Update fragmentainer break tokens of repeated roots when cloning.
The fragment cloning machinery clones everything deeply, and break
tokens get inserted (or updated with the correct sequence number)
accordingly. One part was missing: if the repeatable root establishes a
multicol container, the break tokens of its fragmentainers were left
untouched.
Updating break tokens is something we do last, when all fragments of a
node have been cloned, in order to get the sequence numbers right.
But we only performed this on child CSS boxes (i.e. excluding
fragmentainers) and their descendants, of the repeated root. If the
repeated root itself established a multicol container, its
fragmentainers wouldn't have their break tokens updated.
Call UpdateBreakTokens() on the repeatable root as well. This will
update the break tokens of any child fragmentainers (and also the break
tokens of the node itself, which isn't strictly necessary, since it's
already done during layout, but also harmless).
Nodes are repeatable in two cases:
- Table headers/footers with break-inside:avoid
- Fixed-positioned elements when printing
For repeated table headers/footers this wasn't a problem, since a table
section can never establish a multicol container. Fixed-positioned
elements, on the hand, may very well establish a multicol container.
Bug: 40282086
Change-Id: Ifa5f215ce61ab56aeabaa8cb057f01b89c2993a4
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6058396
Commit-Queue: Morten Stenshorne mstensho@chromium.org
Reviewed-by: Koji Ishii kojii@chromium.org
Cr-Commit-Position: refs/heads/main@{#1390257}