<!DOCTYPE html>
<html>
<style>
    #container {
        will-change: transform;
    }
</style>
</head>
<script>runPixelTests = true;</script>
<script src="full-screen-test.js"></script>
<script>
    function doTest() {
        if (window.testRunner)
            testRunner.waitUntilDone();

        document.body.offsetTop;
        var fullscreen = document.getElementById('fullscreenme');

        var fullscreenChangeEvent = function(event) {
            if (window.testRunner)
                testRunner.notifyDone();
        };

        document.addEventListener('webkitfullscreenchange', fullscreenChangeEvent);
        document.addEventListener('keydown', function () {
            fullscreen.webkitRequestFullScreen();

        });
        if (window.eventSender)
            eventSender.keyDown('a');
    }
    window.addEventListener("load", doTest, false);
</script>
<body>
    <div id="container">
        <iframe id="fullscreenme" src="resources/green.html"></iframe>
    </div>
</body>
</html>
