| <!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(event => { |
| 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> |