Commit dab7b3e5 authored by Marijn Kruisselbrink's avatar Marijn Kruisselbrink Committed by Commit Bot

Add a web platform test to verify various aspects of creating workers from blobs.

Bug: 852249, 800898
Change-Id: Ic885db66683d40f259f4f8c0ddf82d6ea3b4c144
Reviewed-on: https://chromium-review.googlesource.com/1099361
Commit-Queue: Marijn Kruisselbrink <mek@chromium.org>
Reviewed-by: default avatarMatt Falkenhagen <falken@chromium.org>
Cr-Commit-Position: refs/heads/master@{#567308}
parent 32732665
...@@ -2797,6 +2797,7 @@ crbug.com/751952 virtual/origin-trials-runtimeflags-disabled/http/tests/origin_t ...@@ -2797,6 +2797,7 @@ crbug.com/751952 virtual/origin-trials-runtimeflags-disabled/http/tests/origin_t
crbug.com/800898 external/wpt/FileAPI/url/url-with-fetch.any.worker.html [ Pass Failure ] crbug.com/800898 external/wpt/FileAPI/url/url-with-fetch.any.worker.html [ Pass Failure ]
crbug.com/800898 external/wpt/FileAPI/url/url-with-xhr.any.worker.html [ Pass Failure ] crbug.com/800898 external/wpt/FileAPI/url/url-with-xhr.any.worker.html [ Pass Failure ]
crbug.com/800898 external/wpt/FileAPI/url/url-in-tags-revoke.window.html [ Timeout ] crbug.com/800898 external/wpt/FileAPI/url/url-in-tags-revoke.window.html [ Timeout ]
crbug.com/800898 external/wpt/workers/worker-from-blob-url.window.html [ Timeout ]
crbug.com/849737 virtual/mojo-blob-urls/external/wpt/FileAPI/url/sandboxed-iframe.html [ Pass Timeout ] crbug.com/849737 virtual/mojo-blob-urls/external/wpt/FileAPI/url/sandboxed-iframe.html [ Pass Timeout ]
crbug.com/849737 virtual/mojo-blob-urls/external/wpt/FileAPI/url/url-format.any.html [ Pass Timeout ] crbug.com/849737 virtual/mojo-blob-urls/external/wpt/FileAPI/url/url-format.any.html [ Pass Timeout ]
......
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.postMessage("' + run_result + '");';
const blob = new Blob([blob_contents]);
const url = URL.createObjectURL(blob);
const worker = new Worker(url);
const reply = await message_from_port(worker);
assert_equals(reply, run_result);
}, 'Creating a dedicated worker from a blob URL works.');
promise_test(async t => {
const run_result = 'worker_OK';
const blob_contents = 'self.postMessage("' + run_result + '");';
const blob = new Blob([blob_contents]);
const url = URL.createObjectURL(blob);
const worker = new Worker(url);
URL.revokeObjectURL(url);
const reply = await message_from_port(worker);
assert_equals(reply, run_result);
}, 'Creating a dedicated 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);
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.');
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment