fune/testing/web-platform/tests/css/css-sizing/dynamic-change-inline-size-002.html
Ting-Yu Lin 8492d801e8 Bug 1731653 - Record padding change in a frame bit, and use it to detect inline resize. r=dholbert
We store this new bit in nsIFrame instead of in ReflowInput to record a
change to padding (inspired by the mHasBSizeChange bit). That is because
we may construct a ReflowInput more than one time before reflowing the
frame. The first construction of ReflowInput (in
SizeComputationInput::InitOffsets) will update
nsIFrame::UsedPaddingProperty() using the latest style data, so
we *cannot* determine the padding change in any of the subsequent
construction of ReflowInput.

dynamic-change-inline-size-001.html is the scenario fixed by
bug 1307853. We've already passed this test without this patch.

dynamic-change-inline-size-002.html is equivalent to 001.html except
it's written with "box-sizing:content".
dynamic-change-inline-size-003.html is adapted from testcase 2 in bug
1729122 comment 4. Both tests pass after this patch.

Differential Revision: https://phabricator.services.mozilla.com/D126422
2021-09-28 20:59:38 +00:00

41 lines
1.4 KiB
HTML

<!DOCTYPE html>
<meta charset="utf-8">
<title>CSS Test: Dynamic change to the inline-size of a block container</title>
<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com">
<link rel="author" title="Mozilla" href="https://www.mozilla.org/">
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1731653">
<link rel="stylesheet" href="/fonts/ahem.css">
<link rel="match" href="../reference/ref-filled-green-100px-square.xht">
<meta name="assert" content="This test verifies that the dynamic change to the block container's inline-size triggers the reflow of its children">
<style>
#block {
inline-size: 100px;
block-size: 100px;
font: 50px/1 Ahem;
color: green;
word-break: break-all;
}
#block > div {
/* The following inline-size and padding will give the div a border-box
inline-size of 100px, both before and after this test's dynamic
modification. */
inline-size: 50%;
padding-right: calc(100px - 50%);
background: red;
}
</style>
<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
<div id="block">
<div>XXXX</div>
</div>
<script>
/* Make sure the layout is up-to-date, which is essential to trigger the bug. */
document.documentElement.offsetHeight;
/* Change the block's inline-size to trigger incremental reflow. */
document.getElementById("block").style.inlineSize = "200px";
</script>