<head>
<script>
window.onload = function () {
    if (!window.testRunner) {
        document.write("Test cannot be run manually.");
        return;
    }

    testRunner.waitUntilDone();

    // Prevent WebKit1 hangs by ensuring layout is up-to-date before resize.
    setTimeout(function() { window.resizeTo(200, 200); }, 0);
}

window.onresize = function () {
    if (!window.testRunner) {
        return;
    }

    internals.setUseFixedLayout(true);
    internals.setFixedLayoutSize(400, 400);

    testRunner.notifyDone();
    window.onresize = null;
}
</script>
</head>
<body style="margin: 0;">
<div style="width: 100%; height: 100%; position: absolute; background-color: green;"></div>
<div style="width: 50vw; height: 50vh; position: absolute; background-color: blue;"></div>
</body>
