forked from mirrors/gecko-dev
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
41 lines
1.4 KiB
HTML
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>
|