Files
firefox/testing/web-platform/tests/fullscreen/api/element-request-fullscreen-without-user-activation.tentative.https.html
Mike Wasserman 3d40a2c5bb Bug 1909266 [wpt PR 47234] - Automatic Fullscreen: Use PermissionService internally; add WPT, a=testonly
Automatic update from web-platform-tests
Automatic Fullscreen: Use PermissionService internally; add WPT

Check for automatic fullscreen permission asynchronously during RequestFullscreen, when the caller doesn't have transient activation or an equivalent signal.

Refactor Blink Fullscreen internals to support updated checks.
Formalize error type; update algorithm comments; cleanup.

Add Element.requestFullscreen WPT without gesture, with permission.

Update browser test to skip retries for fullscreen on load.
(this fixes a race between fullscreen and document settings on load)

Guard by blink::features::kAutomaticFullscreenPermissionsQuery.
(note this feature is already "stable", i.e. enabled by default)

Bug: 40941384, 348456264
Fixed: 351758438
Change-Id: I44d734d07d046da19ee3a61059624f0f948ad1a6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5666304
Commit-Queue: Mike Wasserman <[email protected]>
Reviewed-by: Joey Arhar <[email protected]>
Auto-Submit: Mike Wasserman <[email protected]>
Reviewed-by: Alex Moshchuk <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1331144}

--

wpt-commits: 393c912cf58bc04e5718303b498756910be2bd58
wpt-pr: 47234
2024-07-25 08:02:04 +00:00

31 lines
1.4 KiB
HTML

<!doctype html>
<meta charset=utf-8>
<title>Element#requestFullscreen() without user activation</title>
<link rel="help" href="https://github.com/explainers-by-googlers/html-fullscreen-without-a-gesture">
<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>
<div id="log"></div>
<script>
promise_test(async (test) => {
const div = document.querySelector("div");
assert_false(navigator.userActivation.isActive, "userActivation.isActive");
await promise_rejects_js(test, TypeError, div.requestFullscreen());
}, `Element#requestFullscreen() rejects without user activation by default`);
promise_test(async (test) => {
test.add_cleanup(() => {
if (document.fullscreenElement) return document.exitFullscreen();
});
const descriptor = { name: "fullscreen", allowWithoutGesture: true };
await test_driver.set_permission(descriptor, "granted");
const status = await navigator.permissions.query(descriptor);
assert_equals((status).state, "granted", `state should be "granted", as set`);
const div = document.querySelector("div");
assert_false(navigator.userActivation.isActive, "userActivation.isActive");
await div.requestFullscreen();
}, `Element#requestFullscreen() resolves without user activation with permission`);
</script>