Top-layer elements could cause 'ASSERTION: Out-of-flow frame got reflowed before its placeholder'
Categories
(Core :: Layout, enhancement)
Tracking
()
People
(Reporter: cathiechen, Assigned: cathiechen)
References
Details
(Keywords: leave-open)
Attachments
(1 file, 1 obsolete file)
User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36
Steps to reproduce:
It causes assertions on popovers/popover-open-overflow-display.html.
This could also be reproduced by dialog
.
<!DOCTYPE html>
<div id=container>
<dialog id=p1>This is dialog 1</dialog>
</div>
<style>
#container {
position: absolute;
top: 100px;
left: 50px;
width: 30px;
height: 30px;
}
#p1 {
position: absolute;
top: 100px;
}
</style>
<script>
document.querySelector('#p1').showModal();
</script>
Updated•1 year ago
|
Assignee | ||
Comment 1•1 year ago
|
||
In the AbsoluteList
, p1
is in front of container
, so p1
reflows before container
, and p1
is outOfFlowFrame
of container
, so it triggers assertion when reflow container
.
Assignee | ||
Updated•1 year ago
|
Updated•1 year ago
|
Assignee | ||
Updated•1 year ago
|
Comment 7•1 year ago
|
||
Why was this bug moved to 'Applied Machine Learning' ?
Updated•10 months ago
|
Assignee | ||
Updated•10 months ago
|
Assignee | ||
Comment 11•9 months ago
|
||
css/css-contain/content-visibility/content-visibility-with-top-layer-in-auto-subtree-removal.html also could reproduce this assertion: 'ASSERTION: out-of-flow frame got reflowed before its placeholde'.
Updated•8 months ago
|
Comment 16•7 months ago
|
||
Cathie, so I checked your patch, without your code changes, and I only get one assert, which is the "absolute popover inside fixed element". Could you elaborate on your other changes?
Sorry for the lag getting to this btw, I didn't understand some of your changes and that got me confused for a while.
Assignee | ||
Comment 17•7 months ago
|
||
Hi Emilio! Sorry about the confusion!
The patch actually contains two parts:
- The test popover-open-overflow-display-2.html, the "absolute popover inside fixed element" case generates an assert which is not fixed.
- To fix the assert generate by reflow boundary elements with top layer children. When the top layer child needs reflow, it would mark dirty flag to root through top layer fixed list, to containing block, to root. And it also marks dirty flag to the reflow boundary frame which is through its placeholder. So there are two reflow request, one is root, the other one is the reflow boundary frame. The root will always be reflowed first. So the frame in top layer fixed list will be reflowed before its placeholder.
Let me split this patch into two. Hope it would make the questions clear.
Updated•7 months ago
|
Assignee | ||
Comment 18•7 months ago
|
||
Updated•7 months ago
|
Comment 19•7 months ago
|
||
Pushed by ealvarez@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/e3cd1999f1da Test to popover and postioned elements, r=emilio
Created web-platform-tests PR https://github.com/web-platform-tests/wpt/pull/44598 for changes under testing/web-platform/tests
Comment 21•7 months ago
|
||
bugherder |
Upstream PR merged by moz-wptsync-bot
Updated•7 months ago
|
Description
•