mirror of
https://github.com/servo/servo.git
synced 2025-06-28 19:13:41 +01:00
97 lines
4.2 KiB
JavaScript
97 lines
4.2 KiB
JavaScript
'use strict';
|
|
|
|
// This script depends on the following scripts:
|
|
// /native-file-system/resources/messaging-helpers.js
|
|
// /native-file-system/resources/messaging-blob-helpers.js
|
|
// /native-file-system/resources/messaging-serialize-helpers.js
|
|
// /native-file-system/resources/test-helpers.js
|
|
// /service-workers/service-worker/resources/test-helpers.sub.js
|
|
|
|
// Runs the same test as do_post_message_test(), but uses a MessagePort.
|
|
// This test starts by establishing a message channel between the test runner
|
|
// and |target|. Afterwards, the test sends FileSystemHandles through the
|
|
// message port channel.
|
|
async function do_message_port_test(test, root_dir, target, target_origin) {
|
|
const message_port = create_message_channel(target, target_origin);
|
|
await do_post_message_test(
|
|
test, root_dir, /*receiver=*/message_port, /*target=*/message_port);
|
|
}
|
|
|
|
directory_test(async (t, root_dir) => {
|
|
const iframe = await add_iframe(t, { src: kDocumentMessageTarget });
|
|
await do_message_port_test(
|
|
t, root_dir, /*target=*/iframe.contentWindow, /*target_origin=*/'*');
|
|
}, 'Send and receive messages using a message port in a same origin ' +
|
|
'iframe.');
|
|
|
|
directory_test(async (t, root_dir) => {
|
|
const iframe = await add_iframe(t, {
|
|
src: kDocumentMessageTarget,
|
|
sandbox: 'allow-scripts allow-same-origin'
|
|
});
|
|
await do_message_port_test(
|
|
t, root_dir, /*target=*/iframe.contentWindow, /*target_origin=*/'*');
|
|
}, 'Send and receive messages using a message port in a sandboxed same ' +
|
|
'origin iframe.');
|
|
|
|
directory_test(async (t, root_dir) => {
|
|
const blob_url = await create_message_target_blob_url(t);
|
|
const iframe = await add_iframe(t, { src: blob_url });
|
|
await do_message_port_test(
|
|
t, root_dir, /*target=*/iframe.contentWindow, /*target_origin=*/'*');
|
|
}, 'Send and receive messages using a message port in a blob iframe.');
|
|
|
|
directory_test(async (t, root_dir) => {
|
|
const iframe_html = await create_message_target_html_without_subresources(t);
|
|
const iframe = await add_iframe(t, { srcdoc: iframe_html });
|
|
await do_message_port_test(
|
|
t, root_dir, /*target=*/iframe.contentWindow, /*target_origin=*/'*');
|
|
}, 'Send and receive messages using a message port in an iframe srcdoc.');
|
|
|
|
directory_test(async (t, root_dir) => {
|
|
const child_window = await open_window(t, kDocumentMessageTarget);
|
|
await do_message_port_test(
|
|
t, root_dir, /*target=*/child_window, /*target_origin=*/'*');
|
|
}, 'Send and receive messages using a message port in a same origin ' +
|
|
'window.');
|
|
|
|
directory_test(async (t, root_dir) => {
|
|
const blob_url = await create_message_target_blob_url(t);
|
|
const child_window = await open_window(t, blob_url);
|
|
await do_message_port_test(
|
|
t, root_dir, /*target=*/child_window, /*target_origin=*/'*');
|
|
}, 'Send and receive messages using a message port in a blob window.');
|
|
|
|
directory_test(async (t, root_dir) => {
|
|
const url = `${kDocumentMessageTarget}?pipe=header(Content-Security-Policy` +
|
|
', sandbox allow-scripts allow-same-origin)';
|
|
const child_window = await open_window(t, url);
|
|
await do_message_port_test(
|
|
t, root_dir, /*target=*/child_window, /*target_origin=*/'*');
|
|
}, 'Send and receive messages using a message port in a sandboxed same ' +
|
|
'origin window.');
|
|
|
|
directory_test(async (t, root_dir) => {
|
|
const dedicated_worker =
|
|
create_dedicated_worker(t, kDedicatedWorkerMessageTarget);
|
|
await do_message_port_test(t, root_dir, /*target=*/dedicated_worker);
|
|
}, 'Send and receive messages using a message port in a dedicated ' +
|
|
'worker.');
|
|
|
|
directory_test(async (t, root_dir) => {
|
|
const scope = `${kServiceWorkerMessageTarget}` +
|
|
'?post-message-to-message-port-with-file-handle';
|
|
const registration = await create_service_worker(
|
|
t, kServiceWorkerMessageTarget, scope);
|
|
await do_message_port_test(t, root_dir, /*target=*/registration.installing);
|
|
}, 'Send and receive messages using a message port in a service ' +
|
|
'worker.');
|
|
|
|
if (self.SharedWorker !== undefined) {
|
|
directory_test(async (t, root_dir) => {
|
|
const shared_worker = new SharedWorker(kSharedWorkerMessageTarget);
|
|
shared_worker.port.start();
|
|
await do_message_port_test(t, root_dir, /*target=*/shared_worker.port);
|
|
}, 'Send and receive messages using a message port in a shared ' +
|
|
' worker.');
|
|
}
|