-
Notifications
You must be signed in to change notification settings - Fork 3.1k
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, but at the end, B should be left topmost (and the fullscreen element) but both A and B should be in the top layer. [1] whatwg/fullscreen#223 Change-Id: I3f35dda5b9eb1bc24201616bb5bb4949d20fd170
- Loading branch information
1 parent
e643f91
commit ebc90b1
Showing
1 changed file
with
63 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,63 @@ | ||
<!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="../trusted-click.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> | ||
function isTopLayer(el) { | ||
return getComputedStyle(el, '::backdrop').right !== 'auto'; | ||
} | ||
|
||
promise_test(async (t) => { | ||
t.add_cleanup(async () => { | ||
if (document.fullscreenElement) | ||
await document.exitFullscreen(); | ||
}); | ||
document.onfullscreenerror = t.unreached_func('fullscreenerror should not happen'); | ||
const A = document.getElementById('A'); | ||
const B = document.getElementById('B'); | ||
assert_true(!isTopLayer(A) && !isTopLayer(B)); | ||
await trusted_click(document.body); | ||
await A.requestFullscreen(); | ||
assert_equals(document.fullscreenElement,A,'first A request'); | ||
assert_true(isTopLayer(A),'A top layer'); | ||
await trusted_click(A); | ||
await B.requestFullscreen(); | ||
assert_equals(document.fullscreenElement,B,'B request'); | ||
assert_true(isTopLayer(B),'B top layer'); | ||
assert_true(isTopLayer(A),'A still top layer'); | ||
await trusted_click(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,B,'B is still the fullscreen element'); | ||
assert_equals(document.elementFromPoint(10,10),B,'B should be topmost'); | ||
|
||
await document.exitFullscreen(); | ||
assert_equals(document.fullscreenElement,A,'A goes back to being the fullscreen element'); | ||
assert_true(isTopLayer(A),'A is still top layer'); | ||
assert_false(isTopLayer(B),'B 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 doesn\'t throw, but leaves B topmost'); | ||
</script> |