blob: 90b0170c8bb48008d86a3db5429f4da525a3152e [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<title>full-screen-enter-while-exiting</title>
<script src="full-screen-test.js"></script>
<script>
window.addEventListener('load', async event => {
if (Element.prototype.webkitRequestFullScreen == undefined) {
logResult(false, "Element.prototype.webkitRequestFullScreen == undefined");
endTest();
return;
}
if (!window.testRunner) {
logResult(false, "This test requires Internals.");
endTest();
return;
}
if (!testRunner.setEnterFullscreenForElementCallback) {
logResult(false, "This test requires WebKitTestRunner.")
endTest();
return;
}
testRunner.setHasCustomFullScreenBehavior(true);
let enterFullScreenPromise = new Promise(resolve => {
testRunner.setEnterFullscreenForElementCallback(resolve);
});
consoleWrite('Enter fullscreen with target1');
internals.withUserGesture(() => { run('target1.webkitRequestFullScreen()'); });
await enterFullScreenPromise;
var changePromise = waitFor(target1, 'webkitfullscreenchange');
run('internals.webkitWillEnterFullScreenForElement(target1)');
await changePromise;
run('internals.webkitDidEnterFullScreenForElement(target1)');
let exitFullScreenPromise = new Promise(resolve => {
testRunner.setExitFullscreenForElementCallback(resolve);
});
consoleWrite('Exit fullscreen with target1');
run('document.webkitExitFullscreen()');
await exitFullScreenPromise;
changePromise = waitFor(document, 'webkitfullscreenchange')
run('internals.webkitWillExitFullScreenForElement(target1)');
consoleWrite('Attempt to enter fullscreen with target2');
internals.withUserGesture(() => { run('target2.webkitRequestFullScreen()'); });
await waitFor(target2, 'webkitfullscreenerror');
run('internals.webkitDidExitFullScreenForElement(target1)');
await changePromise;
testRunner.setHasCustomFullScreenBehavior(false);
endTest();
});
</script>
</head>
<body>
<span id="target1"></span>
<span id="target2"></span>
</body>
</html>