<!DOCTYPE html>
<title>Element#requestFullscreen() vs. Document#exitFullscreen()</title>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../trusted-click.js"></script>
<div id="log"></div>
<div id="target"></div>
<script>
// Adapted from https://github.com/w3c/web-platform-tests/pull/4250
// TODO(foolip): Remove this test when the above is imported and passing.
async_test(t => {
  const target = document.getElementById("target");

  trusted_click(t, () => {
    // Request fullscreen and exit at the same time. The exitFullscreen call
    // should have no effect as the fullscreen element is null.
    document.onfullscreenchange = t.step_func_done();
    document.onfullscreenerror = t.unreached_func("fullscreenerror event");

    silence_rejection(target.requestFullscreen());
    assert_equals(document.fullscreenElement, null, "fullscreenElement after requestFullscreen()");
    silence_rejection(document.exitFullscreen());
    assert_equals(document.fullscreenElement, null, "fullscreenElement after exitFullscreen()");
  }, document.body);
});
</script>
