From 43a97878ce14b72f0981164f87f2e35e14151312 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 11:22:09 +0200 Subject: Adding upstream version 110.0.1. Signed-off-by: Daniel Baumann --- .../workers/shared-worker-from-blob-url.window.js | 53 ++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 testing/web-platform/tests/workers/shared-worker-from-blob-url.window.js (limited to 'testing/web-platform/tests/workers/shared-worker-from-blob-url.window.js') diff --git a/testing/web-platform/tests/workers/shared-worker-from-blob-url.window.js b/testing/web-platform/tests/workers/shared-worker-from-blob-url.window.js new file mode 100644 index 0000000000..98e34cc3a6 --- /dev/null +++ b/testing/web-platform/tests/workers/shared-worker-from-blob-url.window.js @@ -0,0 +1,53 @@ +function message_from_port(port) { + return new Promise(resolve => { + port.onmessage = e => resolve(e.data); + }); +} + +promise_test(async t => { + const run_result = 'worker_OK_'; + const blob_contents = + 'self.counter = 0; self.onconnect = e => {++self.counter;' + + 'e.source.postMessage("' + run_result + '" + self.counter); };'; + const blob = new Blob([blob_contents]); + const url = URL.createObjectURL(blob); + + const worker1 = new SharedWorker(url); + const reply1 = await message_from_port(worker1.port); + assert_equals(reply1, run_result + '1'); + const worker2 = new SharedWorker(url); + const reply2 = await message_from_port(worker2.port); + assert_equals(reply2, run_result + '2'); +}, 'Creating a shared worker from a blob URL works.'); + +promise_test(async t => { + const run_result = 'worker_OK'; + const blob_contents = + 'self.onconnect = e => { e.source.postMessage("' + run_result + '"); };'; + const blob = new Blob([blob_contents]); + const url = URL.createObjectURL(blob); + + const worker = new SharedWorker(url); + URL.revokeObjectURL(url); + + const reply = await message_from_port(worker.port); + assert_equals(reply, run_result); +}, 'Creating a shared worker from a blob URL works immediately before revoking.'); + +promise_test(async t => { + const run_result = 'worker_OK_'; + const blob_contents = + 'self.counter = 0; self.onconnect = e => {++self.counter;' + + 'e.source.postMessage("' + run_result + '" + self.counter); };'; + const blob = new Blob([blob_contents]); + const url = URL.createObjectURL(blob); + + const worker1 = new SharedWorker(url); + URL.revokeObjectURL(url); + + const reply1 = await message_from_port(worker1.port); + assert_equals(reply1, run_result + '1'); + const worker2 = new SharedWorker(url); + const reply2 = await message_from_port(worker2.port); + assert_equals(reply2, run_result + '2'); +}, 'Connecting to a shared worker on a revoked blob URL works.'); -- cgit v1.2.3