| <!DOCTYPE html> |
| <title>Remove the last of two sibling elements in the fullscreen stack</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="/resources/testdriver.js"></script> |
| <script src="/resources/testdriver-vendor.js"></script> |
| <script src="../trusted-click.js"></script> |
| <div id="log"></div> |
| <div id="a"></div> |
| <div id="b"></div> |
| <script> |
| promise_test(async (t) => { |
| t.add_cleanup(() => { |
| if (document.fullscreenElement) { |
| return document.exitFullscreen(); |
| } |
| }); |
| |
| const a = document.getElementById("a"); |
| const b = document.getElementById("b"); |
| await Promise.all([trusted_request(a), fullScreenChange()]); |
| |
| assert_equals(document.fullscreenElement, a, "fullscreen element after first request"); |
| assert_true(a.matches(":fullscreen"), "a matches :fullscreen after first request"); |
| |
| await Promise.all([trusted_request(b, a), fullScreenChange()]); |
| assert_equals(document.fullscreenElement, b, "fullscreen element after second request"); |
| assert_true(a.matches(":fullscreen"), "a matches :fullscreen after second request"); |
| assert_true(b.matches(":fullscreen"), "b matches :fullscreen after second request"); |
| |
| // Removing the fullscreen element (b) triggers exiting fullscreen. Some changes are |
| // visible synchronously and the others come when the event fires. |
| b.remove(); |
| assert_equals(document.fullscreenElement, a, "fullscreen element immediately after removal of b"); |
| assert_true(a.matches(":fullscreen"), "a matches :fullscreen immediately after removal of b"); |
| assert_false(b.matches(":fullscreen"), "b no longer matches :fullscreen immediately after removal"); |
| |
| // A fullscreenchange event should fire and all state should be cleared. |
| await fullScreenChange(); |
| assert_equals(document.fullscreenElement, null, "fullscreen element after event"); |
| assert_false(a.matches(":fullscreen"), "a no longer matches :fullscreen after event"); |
| assert_false(b.matches(":fullscreen"), "b no longer matches :fullscreen after event"); |
| }); |
| </script> |