blob: c81855544c6ff8edaec5fb18044eeca45ed89339 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width"/>
<title>Resize iframe after orientation change</title>
<style type="text/css">
body, div, iframe {
margin: 0;
padding: 0;
border: 0;
overflow: hidden;
}
</style>
<script src="../../../../resources/js-test.js"></script>
<script>
if (window.testRunner) {
testRunner.waitUntilDone();
testRunner.dumpAsText();
}
function rotateDevice(orientation)
{
return new Promise(resolve => {
testRunner.runUIScript(`
(function() {
uiController.simulateRotation("${orientation}", function() {
uiController.doAfterVisibleContentRectUpdate(function () {
uiController.uiScriptComplete();
})
});
})();`, resolve);
});
}
async function runTest() {
if (!window.testRunner || !testRunner.runUIScript)
return;
await rotateDevice("landscape-right");
await rotateDevice("portrait");
var output = document.getElementById("output");
var outer = document.getElementById("outer");
shouldBe("document.getElementById('frame').scrollWidth", "outer.scrollWidth");
shouldBe("document.getElementById('frame').contentDocument.getElementById('inner').scrollWidth", "outer.scrollWidth");
testRunner.notifyDone();
}
</script>
</head>
<body>
<p>Each time the viewport is resized, the outer div (green),
iframe (orange) and inner div (pink) should take the full viewport
width:</p>
<div id="outer" style="width: 100%; height: 200px;
border-top: 5px solid lightgreen;
border-bottom: 5px solid lightgreen;
background: linear-gradient(to right, cyan, blue)">
<iframe id="frame" onload="runTest()" style="width: 100%; height: 100px;
border-top: 5px solid orange;
border-bottom: 5px solid orange;
background: linear-gradient(to right, cyan, blue)"
srcdoc="
<html>
<head>
<meta name='viewport' content='width=device-width'/>
<script type='text/javascript'>
window.addEventListener('resize', function() {
document.getElementById('inner').style.width =
window.innerWidth + 'px';
});
</script>
</head>
<body style='margin: 0; padding: 0; overflow: hidden;'>
<div id='inner'
style='width: 50px; height: 50px;
border-top: 5px solid pink;
border-bottom: 5px solid pink;
background: linear-gradient(to right, cyan, blue)'>
</div>
</body>
</html>"></iframe>
</div>
</body>
</html>