Skip to content

Commit 897b406

Browse files
authored
Test that element.requestFullscreen() consumes user activation (#36969)
1 parent 90aec8c commit 897b406

9 files changed

+52
-309
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<!DOCTYPE html>
2+
<title>Element#requestFullscreen() consumes user activation</title>
3+
<script src="/resources/testharness.js"></script>
4+
<script src="/resources/testharnessreport.js"></script>
5+
<script src="/resources/testdriver.js"></script>
6+
<script src="/resources/testdriver-vendor.js"></script>
7+
<div id="log"></div>
8+
<script>
9+
promise_test(async (t) => {
10+
t.add_cleanup(() => {
11+
if (document.fullscreenElement) return document.exitFullscreen();
12+
});
13+
const div = document.querySelector("div");
14+
15+
await test_driver.bless("fullscreen");
16+
assert_true(navigator.userActivation.isActive, "Activation must be active");
17+
// Request fullscreen twice in a row. The first request should consume the
18+
// user activation and succeed, and the second request should fail because
19+
// of the user activation requirement.
20+
const p1 = div.requestFullscreen();
21+
assert_false(navigator.userActivation.isActive, "Transient activation is consumed");
22+
const p2 = promise_rejects_js(t, TypeError, div.requestFullscreen());
23+
await Promise.all([p1, p2]);
24+
});
25+
</script>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<!DOCTYPE html>
2+
<title>Element#requestFullscreen() on the current fullscreen element</title>
3+
<script src="/resources/testharness.js"></script>
4+
<script src="/resources/testharnessreport.js"></script>
5+
<script src="/resources/testdriver.js"></script>
6+
<script src="/resources/testdriver-vendor.js"></script>
7+
<div id="log"></div>
8+
<script>
9+
promise_test(async (t) => {
10+
t.add_cleanup(() => {
11+
if (document.fullscreenElement) return document.exitFullscreen();
12+
});
13+
14+
// Use the body element as the fullscreen element, because the second
15+
// test_driver.bless() call needs to insert a button inside of it, which
16+
// can't be clicked if another element is already fullscreen.
17+
const target = document.body;
18+
19+
// First enter fullscreen.
20+
await test_driver.bless("fullscreen", () => target.requestFullscreen());
21+
assert_equals(document.fullscreenElement, target, "fullscreen element after first request");
22+
23+
// Now request fullscreen again, which should be a no-op.
24+
await test_driver.bless("fullscreen", () => target.requestFullscreen());
25+
assert_equals(document.fullscreenElement, target, "fullscreen element after second request");
26+
});
27+
</script>

fullscreen/api/element-request-fullscreen-same-manual.html

-30
This file was deleted.

fullscreen/api/element-request-fullscreen-twice-manual.html

-27
This file was deleted.

fullscreen/api/element-request-fullscreen-twice-manual.tentative.html

-46
This file was deleted.

fullscreen/api/element-request-fullscreen-two-elements-manual.html

-37
This file was deleted.

fullscreen/api/element-request-fullscreen-two-elements-manual.tentative.html

-56
This file was deleted.

fullscreen/api/element-request-fullscreen-two-iframes-manual.html

-48
This file was deleted.

fullscreen/api/element-request-fullscreen-two-iframes-manual.tentative.html

-65
This file was deleted.

0 commit comments

Comments
 (0)