<body>
<script src="full-screen-test.js"></script>
<span></span>
<script>
    // Bail out early if the full screen API is not enabled or is missing:
    if (Element.prototype.webkitRequestFullScreen == undefined) {
        logResult(false, "Element.prototype.webkitRequestFullScreen == undefined");
        endTest();
    } else {
        var callback;
        var fullscreenChanged = function(event)
        {
            if (callback)
                callback(event)
        };
        waitForEvent(document, 'webkitfullscreenchange', fullscreenChanged);

        var spanEnteredFullScreen = function() {
            testExpected("document.webkitIsFullScreen", true);
            testExpected("document.webkitCurrentFullScreenElement", span);
            callback = cancelledFullScreen;
            testExpected("window.open('about:blank')", null, "!=");
        };

        var cancelledFullScreen = function() {
            testExpected("document.webkitIsFullScreen", false);
            testExpected("document.webkitCurrentFullScreenElement", undefined);
            endTest();
        };

        var span = document.getElementsByTagName('span')[0];

        callback = spanEnteredFullScreen;
        runWithKeyDown(function(){span.webkitRequestFullScreen()});
    }
</script>
