diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /testing/web-platform/tests/screen-capture/delegate-request.https.sub.html | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/screen-capture/delegate-request.https.sub.html')
-rw-r--r-- | testing/web-platform/tests/screen-capture/delegate-request.https.sub.html | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/testing/web-platform/tests/screen-capture/delegate-request.https.sub.html b/testing/web-platform/tests/screen-capture/delegate-request.https.sub.html new file mode 100644 index 0000000000..8cc81c1383 --- /dev/null +++ b/testing/web-platform/tests/screen-capture/delegate-request.https.sub.html @@ -0,0 +1,80 @@ +<!DOCTYPE html> +<title>Display-capture request delegation test</title> +<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> + +<div> + Verifies that getDisplayMedia() calls from a cross-origin subframe without user activation + works if and only if the top frame has user activation and it delegates the capability to the + subframe. +</div> + +<iframe allow="display-capture" width="300px" height="50px" + src="https://{{hosts[alt][www]}}:{{ports[https][0]}}/screen-capture/resources/delegate-request-subframe.sub.html"> +</iframe> + +<script> + // Returns a |Promise| that gets resolved with |event.data| when |window| + // receives from |source| a "message" event whose |event.data.type| matches the string + // |message_data_type|. + function getMessageData(message_data_type, source) { + return new Promise(resolve => { + function waitAndRemove(e) { + if (e.source != source || !e.data || e.data.type != message_data_type) + return; + window.removeEventListener("message", waitAndRemove); + resolve(e.data); + } + window.addEventListener("message", waitAndRemove); + }); + } + + promise_setup(async () => { + // Make sure the iframe has loaded. + await getMessageData("subframe-loaded", frames[0]); + }); + + const target_origin = "https://{{hosts[alt][www]}}:{{ports[https][0]}}"; + const request = {"type": "make-display-capture-request"}; + + promise_test(async () => { + let result_promise = getMessageData("result", frames[0]); + frames[0].postMessage(request, {targetOrigin: target_origin}); + let data = await result_promise; + + assert_equals(data.result, "failure"); + }, "Display-capture request from a subframe fails without delegation when the top frame has no user activation"); + + promise_test(async () => { + let result_promise = getMessageData("result", frames[0]); + await test_driver.bless(); + frames[0].postMessage(request, {targetOrigin: target_origin}); + let data = await result_promise; + + assert_equals(data.result, "failure"); + }, "Display-capture request from a subframe fails without delegation when the top frame has user activation"); + + promise_test(async () => { + { + let result_promise = getMessageData("result", frames[0]); + await test_driver.bless(); + frames[0].postMessage(request, {targetOrigin: target_origin, + delegate: "display-capture"}); + let data = await result_promise; + + assert_equals(data.result, "success"); + } + { + // Check display-capture request can be consumed only once. + let result_promise = getMessageData("result", frames[0]); + frames[0].postMessage(request, {targetOrigin: target_origin}); + let data = await result_promise; + + assert_equals(data.result, "failure"); + } + }, "Display-capture request from a subframe succeeds with delegation when the top frame has user activation"); + +</script> |