forked from mirrors/gecko-dev
Before this patch, a block frame considers a line dirty only if the line's block-end is larger than content area's block-end. However, scrollable overflow area should be broken in paginated environment (both in a column container and in printing). We should take this into account when marking a line dirty. The dynamic wpt reftests are written with the following conditions in mind to expose the bug: 1. Initially, all the elements fit into the first column. 2. After shrinking the multicol height, the block itself still fits into the first column, but its tall child (either a simple tall block or a tall float), which overflows the smaller multicol height, needs to be broken. The flexbox printing reftest are similar. A flex container uses unconstrained available block-size to measure flex items' block-size, and then performs a final reflow with constrained available block-size, which is similar to the dynamic scenario above. One caveat is that flex items usually have IsBResize() set. So to expose this bug, a float element needs to be deeply nested under a flex item. Differential Revision: https://phabricator.services.mozilla.com/D85479
48 lines
1.4 KiB
HTML
48 lines
1.4 KiB
HTML
<!DOCTYPE html>
|
|
<!-- Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ -->
|
|
<html>
|
|
<meta charset="utf-8">
|
|
<title>Test for dynamic re-pagination of a nested float element</title>
|
|
<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com">
|
|
<link rel="author" title="Mozilla" href="http://www.mozilla.org/">
|
|
<link rel="help" href="https://drafts.csswg.org/css-break/#possible-breaks">
|
|
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1559961">
|
|
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
|
|
|
|
<style>
|
|
#multicol {
|
|
columns: 2;
|
|
column-fill: auto;
|
|
column-gap: 0;
|
|
height: 400px; /* Must be large enough so that .target doesn't break initially. */
|
|
width: 100px;
|
|
background: red;
|
|
}
|
|
.block {
|
|
width: 50px;
|
|
background: green;
|
|
}
|
|
.target {
|
|
float: left;
|
|
height: 160px; /* Expected to be broken into 2 columns after runTest() */
|
|
}
|
|
</style>
|
|
|
|
<script>
|
|
function runTest() {
|
|
document.body.offsetHeight;
|
|
document.getElementById("multicol").style.height = "100px";
|
|
}
|
|
</script>
|
|
|
|
<body onload="runTest()">
|
|
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
|
|
<div id="multicol">
|
|
<div>
|
|
<div class="block" style="height: 40px"></div>
|
|
<div class="block target"></div>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|