Bug 821449: Marked flex items whose height is stretched (via "align-items/align-self") as having a relative height. r=dbaron

--HG--
rename : layout/reftests/flexbox/flexbox-dyn-changePadding-1a.xhtml => layout/reftests/flexbox/flexbox-dyn-changePadding-1b.xhtml
This commit is contained in:
Daniel Holbert 2012-12-26 12:31:23 -08:00
parent b35271523f
commit f81c0a4bf1
3 changed files with 49 additions and 0 deletions

View File

@ -2198,6 +2198,8 @@ nsFlexContainerFrame::Reflow(nsPresContext* aPresContext,
if (IsAxisHorizontal(axisTracker.GetCrossAxis())) {
childReflowState.SetComputedWidth(curItem.GetCrossSize());
} else {
// If this item's height is stretched, it's a relative height.
curItem.Frame()->AddStateBits(NS_FRAME_CONTAINS_RELATIVE_HEIGHT);
childReflowState.SetComputedHeight(curItem.GetCrossSize());
}
}

View File

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/
-->
<!--
This test checks that we reflow sufficiently when a stretched, nested
flex container needs an incremental reflow. This test should end up
rendering as a lime square, 100px by 100px.
-->
<html xmlns="http://www.w3.org/1999/xhtml"
class="reftest-wait">
<head>
<style>
#outerContainer {
display: flex;
width: 100px;
height: 100px;
background: red;
}
#tweakMe {
display: flex;
background: orange;
width: 100px;
/* height should stretch to fill parent's height, via
* parent's "align-items: stretch" (the default) */
padding-left: 1px;
}
</style>
<script>
function tweak() {
var tweakMe = document.getElementById("tweakMe");
tweakMe.style.paddingLeft = "0";
tweakMe.style.background = "lime";
document.documentElement.removeAttribute("class");
}
window.addEventListener("MozReftestInvalidate", tweak, false);
</script>
</head>
<body>
<div id="outerContainer">
<div id="tweakMe"></div>
</div>
</body>
</html>

View File

@ -60,6 +60,7 @@ fails == flexbox-basic-video-vert-2.xhtml flexbox-basic-video-vert-2-ref.xhtml #
# Tests for dynamic modifications of content inside a flex container
== flexbox-dyn-changePadding-1a.xhtml flexbox-dyn-changePadding-1-ref.xhtml
== flexbox-dyn-changePadding-1b.xhtml flexbox-dyn-changePadding-1-ref.xhtml
# Tests for dynamic insertions of content into a flex container
# (with existing [div | span | text] inside the flexbox, and new content