Implement CSS named page fragmentation for replaced frames
Categories
(Core :: CSS Parsing and Computation, enhancement, P2)
Tracking
()
| Tracking | Status | |
|---|---|---|
| firefox106 | --- | fixed |
People
(Reporter: alaskanemily, Assigned: alaskanemily)
References
Details
Attachments
(5 files, 1 obsolete file)
| Assignee | ||
Comment 1•3 years ago
|
||
This also adds a small post-processing step for frame-construction to ensure
that replaced frames (or more generally frames with content but no children)
have the auto page-name set on them.
When page-name value tracking is switched to be lazy, this post-processing step
should be redundant and can be removed.
WIP: display-none frames are still counted for page-name fragmentation
currently, which causes the single test failure in
layout/reftests/css-page/page-name-display-none-child.html
TODO: It is possible we can simply remove the "ArePageValuesSet" flag from
nsIFrame with this change. I need to double check if this is still the same,
though given how little logic exists in the RAII struct for tracking the auto
page-name value at this point I suspect it can be done without any other
related changes.
Updated•3 years ago
|
| Assignee | ||
Updated•3 years ago
|
Comment 2•3 years ago
|
||
The severity field is not set for this bug.
:jwatt, could you have a look please?
For more information, please visit auto_nag documentation.
| Assignee | ||
Updated•3 years ago
|
| Assignee | ||
Updated•3 years ago
|
Comment 3•3 years ago
|
||
Here's the "break test" testcase that I referenced on phabricator here: https://phabricator.services.mozilla.com/D152701#5068339
Chrome only seems to introduce a page-break at the very bottom of this test, for the block container, and nowhere else.
vs. Firefox-with-the-attached-patch fatally aborts as noted in the referenced phabricator comment, when trying to handle a case with page-name-induced fragmentation on children of a grid.
Maybe we can simplify here and only attempt to make this work for block containers for the time being? (which would get us feature parity, it seems)
Comment 4•3 years ago
|
||
(Sorry, the first version of testcase 1 had a typo in the first part [display:fleex] which was a temporary tweak I had made to confirm that the page-names worked if I nerfed the flexbox styling. :) I forgot to revert it before posting.)
Here's the testcase 1 that I intended to post.
Updated•3 years ago
|
Comment 5•3 years ago
|
||
Here's a test for disagreeing page names between siblings in a block, inside various wrappers.
As above, it looks like Chrome mostly nerfs these. If we wanted to nerf them as well (not sure if we want to), we might need to introduce special suppressions to avoid having the block container in question attempt to fragment.
(Interestingly Chrome does introduce a pagebreak for the "A table cell (in an explicit block inside the cell's anonymous block)" case. But not in any of the other cases; just that one and the last one which is nested-blocks.)
Updated•3 years ago
|
| Assignee | ||
Comment 6•3 years ago
|
||
Comment 7•3 years ago
|
||
Updated•3 years ago
|
Updated•3 years ago
|
Comment 9•3 years ago
|
||
Backed out for causing reftest failures on page-name-zero-height-001.html
Backout link
Push with failures
Link to failure log
Failure line :
REFTEST TEST-UNEXPECTED-FAIL | layout/reftests/css-page/page-name-zero-height-001.html == layout/reftests/css-page/page-name-zero-height-001-ref.html | image comparison, max difference: 251, number of differing pixels: 165
Comment 10•3 years ago
|
||
Comment 11•3 years ago
|
||
| bugherder | ||
https://hg.mozilla.org/mozilla-central/rev/4ec2a3b38de3
https://hg.mozilla.org/mozilla-central/rev/db9f646e5a2d
Description
•