-
Notifications
You must be signed in to change notification settings - Fork 3.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add a test for fullscreen for the A/B/A case
See the discussion at [1] for more context. This test requests fullscreen on A, then B, then A, where A and B are sibling divs. All three requests should succeed, and at the end, A should be topmost (and the fullscreen element) with both A and B in the top layer. [1] whatwg/fullscreen#223 Change-Id: I3f35dda5b9eb1bc24201616bb5bb4949d20fd170 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4501251 Commit-Queue: Mason Freed <[email protected]> Reviewed-by: Joey Arhar <[email protected]> Auto-Submit: Mason Freed <[email protected]> Cr-Commit-Position: refs/heads/main@{#1141456}
- Loading branch information
1 parent
6e3917f
commit bf4540b
Showing
2 changed files
with
78 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
<!DOCTYPE html> | ||
<title>Re-requesting fullscreen doesn't fail but doesn't change order</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="../../html/semantics/popovers/resources/popover-utils.js"></script> | ||
|
||
<div class="elements"> | ||
<div id="A">Element A</div> | ||
<div id="B">Element B</div> | ||
</div> | ||
|
||
<style> | ||
.elements>div { | ||
width:200px; | ||
height:200px; | ||
} | ||
#A { background: blue; } | ||
#B { background: green; } | ||
</style> | ||
|
||
<script> | ||
promise_test(async (t) => { | ||
t.add_cleanup(async () => { | ||
while (document.fullscreenElement) | ||
await document.exitFullscreen(); | ||
}); | ||
document.onfullscreenerror = () => assert_unreached('fullscreenerror should not happen'); | ||
const A = document.getElementById('A'); | ||
const B = document.getElementById('B'); | ||
assert_true(!isTopLayer(A) && !isTopLayer(B)); | ||
await blessTopLayer(document.body); | ||
await A.requestFullscreen(); | ||
assert_equals(document.fullscreenElement,A,'first A request'); | ||
assert_true(isTopLayer(A),'A top layer'); | ||
await blessTopLayer(A); | ||
try { | ||
await B.requestFullscreen(); | ||
} catch (error) { | ||
assert_unreached('The second call to requestFullscreen rejected - it should be possible to put siblings into fullscreen together'); | ||
} | ||
assert_equals(document.fullscreenElement,B,'B request'); | ||
assert_true(isTopLayer(B),'B top layer'); | ||
assert_true(isTopLayer(A),'A still top layer'); | ||
await blessTopLayer(B); | ||
await A.requestFullscreen(); | ||
assert_true(isTopLayer(A),'A is still top layer'); | ||
assert_true(isTopLayer(B),'B is still top layer'); | ||
assert_equals(document.fullscreenElement,A,'A is moved back to the top of the top layer stack'); | ||
assert_equals(document.elementFromPoint(10,10),A,'A should be topmost'); | ||
|
||
await document.exitFullscreen(); | ||
assert_equals(document.fullscreenElement,B,'B goes back to being the fullscreen element'); | ||
assert_true(isTopLayer(B),'B is still top layer'); | ||
assert_false(isTopLayer(A),'A is no longer top layer'); | ||
await document.exitFullscreen(); | ||
assert_equals(document.fullscreenElement,null,'Both closed'); | ||
assert_false(isTopLayer(A),'A is no longer top layer'); | ||
assert_false(isTopLayer(B),'B is no longer top layer'); | ||
}, 'Requesting fullscreen on A, then B, then A'); | ||
</script> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters