mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-12 04:45:45 +00:00
Bug 841827: Mark flex container frame as having a relative height, if it's abspos w/ auto-height and top,bottom both set. r=dbaron
--HG-- rename : layout/reftests/flexbox/flexbox-dyn-changeFrameWidth-1-iframe.html => layout/reftests/flexbox/flexbox-dyn-changeFrameWidth-4-iframe.html rename : layout/reftests/flexbox/flexbox-dyn-changeFrameWidth-1-ref.xhtml => layout/reftests/flexbox/flexbox-dyn-changeFrameWidth-4-ref.xhtml rename : layout/reftests/flexbox/flexbox-dyn-changeFrameWidth-1.xhtml => layout/reftests/flexbox/flexbox-dyn-changeFrameWidth-4.xhtml
This commit is contained in:
parent
1d379aa241
commit
74991fe7c6
@ -2070,10 +2070,16 @@ nsFlexContainerFrame::Reflow(nsPresContext* aPresContext,
|
||||
}
|
||||
|
||||
// We (and our children) can only depend on our ancestor's height if we have
|
||||
// a percent-height. (There are actually other cases, too -- e.g. if our
|
||||
// parent is itself a vertical flex container and we're flexible -- but we'll
|
||||
// let our ancestors handle those sorts of cases.)
|
||||
if (StylePosition()->mHeight.HasPercent()) {
|
||||
// a percent-height, or if we're positioned and we have "top" and "bottom"
|
||||
// set and have height:auto. (There are actually other cases, too -- e.g. if
|
||||
// our parent is itself a vertical flex container and we're flexible -- but
|
||||
// we'll let our ancestors handle those sorts of cases.)
|
||||
const nsStylePosition* stylePos = StylePosition();
|
||||
if (stylePos->mHeight.HasPercent() ||
|
||||
(StyleDisplay()->IsAbsolutelyPositionedStyle() &&
|
||||
eStyleUnit_Auto == stylePos->mHeight.GetUnit() &&
|
||||
eStyleUnit_Auto != stylePos->mOffset.GetTopUnit() &&
|
||||
eStyleUnit_Auto != stylePos->mOffset.GetBottomUnit())) {
|
||||
AddStateBits(NS_FRAME_CONTAINS_RELATIVE_HEIGHT);
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,20 @@
|
||||
<html>
|
||||
<head>
|
||||
<style>
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
.container {
|
||||
display: flex;
|
||||
background-color: lime;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
position: absolute;
|
||||
width: 100px;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container"></div>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/
|
||||
-->
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<style>
|
||||
#container {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
background: lime;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="container"></div>
|
||||
</body>
|
||||
</html>
|
34
layout/reftests/flexbox/flexbox-dyn-changeFrameWidth-4.xhtml
Normal file
34
layout/reftests/flexbox/flexbox-dyn-changeFrameWidth-4.xhtml
Normal file
@ -0,0 +1,34 @@
|
||||
<?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 sufficiently reflow abspos flex containers that
|
||||
have top:0;bottom:0 (which ends up effectively being like height:100%)
|
||||
the window (or the iframe we're inside of) is vertically resized.
|
||||
|
||||
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>
|
||||
#frame {
|
||||
width: 100px;
|
||||
height: 50px;
|
||||
border: 0;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
function tweak() {
|
||||
document.getElementById("frame").style.height = "100px";
|
||||
document.documentElement.removeAttribute("class");
|
||||
}
|
||||
window.addEventListener("MozReftestInvalidate", tweak, false);
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<iframe id="frame" src="flexbox-dyn-changeFrameWidth-4-iframe.html"></iframe>
|
||||
</body>
|
||||
</html>
|
@ -73,6 +73,7 @@ fails == flexbox-basic-video-vert-2.xhtml flexbox-basic-video-vert-2-ref.xhtml #
|
||||
== flexbox-dyn-changeFrameWidth-1.xhtml flexbox-dyn-changeFrameWidth-1-ref.xhtml
|
||||
== flexbox-dyn-changeFrameWidth-2.xhtml flexbox-dyn-changeFrameWidth-2-ref.xhtml
|
||||
== flexbox-dyn-changeFrameWidth-3.xhtml flexbox-dyn-changeFrameWidth-3-ref.xhtml
|
||||
== flexbox-dyn-changeFrameWidth-4.xhtml flexbox-dyn-changeFrameWidth-4-ref.xhtml
|
||||
== flexbox-dyn-changePadding-1a.xhtml flexbox-dyn-changePadding-1-ref.xhtml
|
||||
== flexbox-dyn-changePadding-1b.xhtml flexbox-dyn-changePadding-1-ref.xhtml
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user