<body>
<script src="full-screen-test.js"></script>
<div>This tests that a full-screen request which is not user-initiated will be rejected.
<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 {
        waitForEvent(document, 'webkitfullscreenchange', function() {
           logResult("Entered full screen.", false); 
           endTest();
        });
        if (testRunner)
            testRunner.setPopupBlockingEnabled(true);
        waitForEventAndEnd(document, 'webkitfullscreenerror');
        document.documentElement.webkitRequestFullScreen();
    }
</script>
