Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

<!DOCTYPE html>
<!-- Submitted from TestTWF Paris -->
<!-- This test exhibits a bug for Chrome 19.0.1084.56 / Mac OS X 10.6.8 -->
<html class="reftest-wait">
<head>
<title>CSS Values and Units Test: Ensure vh-based dimensions update and transition when used in subframe that change size.</title>
<meta name="timeout" content="long">
<link rel="author" title="Marc Bourlon" href="mailto:marc@bourlon.com">
<link rel="match" href="reference/vh-update-and-transition-in-subframe-ref.html">
<meta charset="UTF-8">
<meta name="assert" content="vh-based dimension doesn't change when the element's other dimension doesn't change.">
<script src="/common/reftest-wait.js"></script>
<style type="text/css">
* {
margin: 0;
padding: 0;
}
#frameTest {
width: 600px;
height: 200px;
border: 1px solid black;
}
</style>
<script type="text/javascript">
'use strict';
// We must capture 2 messages to end the test:
// - frameLoaded: The iframe has loaded and is ready for resizing.
// - transitionInIFrameEnded: The transition in the child iframe has ended.
let finishedResizingFrame = false;
window.addEventListener('message', (message) => {
// If the <iframe> has finished loading start the test.
if (message.data == "frameLoaded") {
setTimeout(resizeReference, 10);
}
if (finishedResizingFrame && message.data == "transitionInIFrameEnded") {
takeScreenshot();
}
}, false);
let height = 200;
function resizeReference() {
// Resize the <iframe> vertically which should trigger a relayout
// in the child, growing any element that depends on `vh` units.
height += 10;
document.getElementById('frameTest').style.height = height + "px";
if (height >= 300) {
// If we are done resizing the frame, then signal that the test can
// start looking for completion.
finishedResizingFrame = true;
} else {
// Otherwise, keep growing the frame.
setTimeout(resizeReference, 10);
}
}
</script>
</head>
<body>
<iframe id="frameTest" src="vh-update-and-transition-in-subframe-iframe.html" frameborder="0"></iframe>
</body>
</html>