diff options
Diffstat (limited to 'testing/web-platform/tests/fullscreen/model/move-to-fullscreen-iframe.html')
-rw-r--r-- | testing/web-platform/tests/fullscreen/model/move-to-fullscreen-iframe.html | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/testing/web-platform/tests/fullscreen/model/move-to-fullscreen-iframe.html b/testing/web-platform/tests/fullscreen/model/move-to-fullscreen-iframe.html new file mode 100644 index 0000000000..0103b2979f --- /dev/null +++ b/testing/web-platform/tests/fullscreen/model/move-to-fullscreen-iframe.html @@ -0,0 +1,65 @@ +<!DOCTYPE html> +<title>Moving fullscreen document's body into a fullscreen iframe</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> +<iframe allowfullscreen></iframe> +<script> + promise_test(async (t) => { + t.add_cleanup(() => { + if (document.fullscreenElement) { + return document.exitFullscreen(); + } + }); + const iframe = document.querySelector("iframe"); + await new Promise((resolve) => { + iframe.onload = resolve; + iframe.src = "about:blank"; + }); + const iframeDoc = iframe.contentDocument; + + // Enter fullscreen for the iframe's body element. + await Promise.all([ + trusted_request(iframeDoc.body, iframeDoc.body), + fullScreenChange(), + ]); + + assert_equals( + document.fullscreenElement, + iframe, + "document's initial fullscreen element" + ); + assert_equals( + iframeDoc.fullscreenElement, + iframeDoc.body, + "iframe's initial fullscreen element" + ); + + // Then, move the outer document's body into the iframe. This is an unusual + // thing to do, but means that the iframe is removed from its document and + // should trigger fullscreen exit. + iframeDoc.documentElement.appendChild(document.body); + + // If we exit in an orderly fashion, that's all one can ask for. + await fullScreenChange(); + assert_equals( + document.fullscreenElement, + null, + "document's final fullscreen element" + ); + + // Because the iframe was removed, its browsing context was discarded and + // its contentDocument has become null. Because that browsing context was + // neither a descendant browsing context nor had an active document, + // nothing at all was done with it in the exit fullscreen algorithm, so + // its fullscreenElement is unchanged. + assert_equals(iframe.contentDocument, null, "iframe's content document"); + assert_equals( + iframeDoc.fullscreenElement, + iframeDoc.body, + "iframe's final fullscreen element" + ); + }); +</script> |