Chromium Code Reviews| Index: third_party/WebKit/LayoutTests/http/tests/serviceworker/postmessage-blob-url.html |
| diff --git a/third_party/WebKit/LayoutTests/http/tests/serviceworker/postmessage-blob-url.html b/third_party/WebKit/LayoutTests/http/tests/serviceworker/postmessage-blob-url.html |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..9143353d53f3315459fa0ad1e7fb25c8a33eb313 |
| --- /dev/null |
| +++ b/third_party/WebKit/LayoutTests/http/tests/serviceworker/postmessage-blob-url.html |
| @@ -0,0 +1,47 @@ |
| +<!DOCTYPE html> |
| +<title>Service Worker: postMessage Blob URL</title> |
| +<script src="../resources/testharness.js"></script> |
| +<script src="../resources/testharnessreport.js"></script> |
| +<script src="resources/test-helpers.js"></script> |
| +<script> |
| + |
| +promise_test(t => { |
| + let script = 'resources/postmessage-blob-url.js'; |
| + let scope = 'resources/blank.html'; |
| + let registration; |
| + let worker; |
| + let port; |
| + let blobText = 'Blob text'; |
| + let blob; |
| + let blobUrl; |
| + |
| + return service_worker_unregister_and_register(t, script, scope) |
| + .then(r => { |
| + add_completion_callback(() => r.unregister()); |
| + registration = r; |
| + worker = registration.installing; |
| + |
| + var messageChannel = new MessageChannel(); |
| + port = messageChannel.port1; |
| + return new Promise(resolve => { |
| + port.onmessage = resolve; |
| + worker.postMessage({port: messageChannel.port2}, |
| + [messageChannel.port2]); |
| + }); |
|
falken
2017/02/15 04:46:06
would it be simpler to just do worker.postMessage(
kinuko
2017/02/15 07:10:16
Done.
|
| + }) |
| + .then(e => { |
| + assert_equals(e.data, 'Connected'); |
|
falken
2017/02/15 04:46:06
Do we need the "Connected" step? Can't we send blo
kinuko
2017/02/15 07:10:16
Well, I ended up removing this step.
|
| + blob = new Blob([blobText]); |
| + blobUrl = URL.createObjectURL(blob); |
| + port.postMessage(blobUrl); |
| + return new Promise(resolve => { port.onmessage = resolve; }); |
| + }) |
| + .then(e => { |
| + assert_equals(e.data, 'Worker reply:' + blobText); |
| + URL.revokeObjectURL(blobUrl); |
| + return registration.unregister(scope); |
| + }); |
| + }, 'postMessage Blob URL to a ServiceWorker'); |
| + |
| +</script> |
| + |