diff options
Diffstat (limited to 'testing/web-platform/tests/fenced-frame/notify-event-transient-user-activation.https.html')
-rw-r--r-- | testing/web-platform/tests/fenced-frame/notify-event-transient-user-activation.https.html | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/testing/web-platform/tests/fenced-frame/notify-event-transient-user-activation.https.html b/testing/web-platform/tests/fenced-frame/notify-event-transient-user-activation.https.html new file mode 100644 index 0000000000..ebf93940e5 --- /dev/null +++ b/testing/web-platform/tests/fenced-frame/notify-event-transient-user-activation.https.html @@ -0,0 +1,53 @@ +<!DOCTYPE html> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="/resources/testdriver.js"></script> +<script src="/resources/testdriver-actions.js"></script> +<script src="/resources/testdriver-vendor.js"></script> +<script src="/common/utils.js"></script> +<script src="/common/dispatcher/dispatcher.js"></script> +<script src="/common/get-host-info.sub.js"></script> +<script src="resources/utils.js"></script> +<title>Test that fenced frame notifyEvent() requires transient activation</title> + +<body> + <script> + promise_test(async (t) => { + const fencedframe = await attachFencedFrameContext( + {generator_api: 'fledge'}); + let notified = false; + fencedframe.element.addEventListener('fencedtreeclick', () => notified = true); + + await fencedframe.execute(() => { + window.retained_activation = false; + document.addEventListener('click', async (e) => { + // Opening a new window consumes transient activation here, but that + // is *not explicitly stated in the spec.* However, we can't rely + // on other APIs to consume activation for us, since most of them are + // gated by permissions policies that fenced frames will not inherit. + // This call will just open a blank page, which is sufficient for + // this test. + window.open(); + await new Promise((resolve) => t.step_timeout( + () => resolve(), 1000)); + if (navigator.userActivation.isActive) { + window.retained_activation = true; + } + window.fence.notifyEvent(e); + }); + }); + + await multiClick(10, 10, fencedframe.element); + + // Wait 3s to let any event handling code settle. + await new Promise((resolve) => t.step_timeout( + () => resolve(), 3000)); + + await fencedframe.execute(() => { + assert_false(window.retained_activation); + }); + + assert_false(notified); + }, "Test that fenced frame notifyEvent() requires transient activation"); + </script> +</body> |