document-exit-fullscreen-twice-manual.html
<!DOCTYPE html>
<title>Document#exitFullscreen() called twice</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="../trusted-click.js"></script>
<div id="log"></div>
<script>
async_test(t => {
const div = document.querySelector("div");
document.onfullscreenchange = t.step_func(() => {
// We are now in fullscreen.
assert_equals(document.fullscreenElement, div);
// Exit fullscreen twice.
document.exitFullscreen();
assert_equals(document.fullscreenElement, div, "fullscreenElement after first exitFullscreen()");
const secondPromise = document.exitFullscreen();
assert_equals(document.fullscreenElement, div, "fullscreenElement after second exitFullscreen()");
document.onfullscreenchange = t.step_func(() => {
assert_equals(document.fullscreenElement, null);
// Ensure that there's only one fullscreenchange event.
document.onfullscreenchange = t.unreached_func("second fullscreenchange event");
t.step_timeout(() => {
// Done, but if a promise was returned, assert that it is resolved and
// not rejected. This test does not fail if promises aren't implemented.
if (secondPromise) {
secondPromise.then(t.step_func_done(), t.unreached_func("second promise rejected"));
} else {
t.done();
}
}, 0);
});
});
document.onfullscreenerror = t.unreached_func("fullscreenerror event");
trusted_request(t, div);
});
</script>