Automatic update from web-platform-tests [Fullscreen] Implement iframe fullscreen flag Wire up the spec's iframe fullscreen flag so that "collect documents to unfullscreen" stops at an iframe that itself was the fullscreen target, instead of unconditionally walking to its parent document. Bug: 41257216 Change-Id: If6bb12cabfa24b670fcd722a57990acb4b40c867 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7966544 Reviewed-by: Philip Jägenstedt <foolip@chromium.org> Commit-Queue: Pryor <pryor@chromium.org> Cr-Commit-Position: refs/heads/main@{#1659317} -- wpt-commits: ec7065aa57fb3bc3054e9f88f3c2a454672174a9 wpt-pr: 61150
45 lines
1.7 KiB
HTML
45 lines
1.7 KiB
HTML
<!DOCTYPE html>
|
|
<title>Document#exitFullscreen() for nested fullscreen inside a directly-fullscreened 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) => {
|
|
const iframe = document.querySelector("iframe");
|
|
await new Promise((resolve) => {
|
|
iframe.onload = resolve;
|
|
iframe.srcdoc = "<div id='inner'></div>";
|
|
});
|
|
|
|
const iframeDoc = iframe.contentDocument;
|
|
const inner = iframeDoc.getElementById("inner");
|
|
|
|
// 1. Iframe enters fullscreen directly; only parentDoc fires change.
|
|
await Promise.all([
|
|
fullScreenChange(document),
|
|
trusted_request(iframe)
|
|
]);
|
|
assert_equals(document.fullscreenElement, iframe);
|
|
assert_equals(iframeDoc.fullscreenElement, null);
|
|
|
|
// 2. Inner div goes fullscreen inside the iframe.
|
|
await Promise.all([
|
|
fullScreenChange(iframeDoc),
|
|
trusted_request(inner)
|
|
]);
|
|
assert_equals(iframeDoc.fullscreenElement, inner);
|
|
assert_equals(document.fullscreenElement, iframe);
|
|
|
|
// 3. exitFullscreen() in iframe stops at the iframe boundary.
|
|
await Promise.all([
|
|
fullScreenChange(iframeDoc),
|
|
iframeDoc.exitFullscreen()
|
|
]);
|
|
assert_equals(iframeDoc.fullscreenElement, null);
|
|
assert_equals(document.fullscreenElement, iframe);
|
|
}, "Exit fullscreen for nested element inside a directly-fullscreened iframe");
|
|
</script>
|