OLD | NEW |
---|---|
(Empty) | |
1 <!DOCTYPE html> | |
2 <title>Service Worker: postMessage Blob URL</title> | |
3 <script src="../resources/testharness.js"></script> | |
4 <script src="../resources/testharnessreport.js"></script> | |
5 <script src="resources/test-helpers.js"></script> | |
6 <script> | |
7 | |
8 promise_test(t => { | |
9 let script = 'resources/postmessage-blob-url.js'; | |
10 let scope = 'resources/blank.html'; | |
11 let registration; | |
12 let worker; | |
13 let port; | |
14 let blobText = 'Blob text'; | |
15 let blob; | |
16 let blobUrl; | |
17 | |
18 return service_worker_unregister_and_register(t, script, scope) | |
19 .then(r => { | |
20 add_completion_callback(() => r.unregister()); | |
21 registration = r; | |
22 worker = registration.installing; | |
23 | |
24 var messageChannel = new MessageChannel(); | |
25 port = messageChannel.port1; | |
26 return new Promise(resolve => { | |
27 port.onmessage = resolve; | |
28 worker.postMessage({port: messageChannel.port2}, | |
29 [messageChannel.port2]); | |
30 }); | |
falken
2017/02/15 04:46:06
would it be simpler to just do worker.postMessage(
kinuko
2017/02/15 07:10:16
Done.
| |
31 }) | |
32 .then(e => { | |
33 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.
| |
34 blob = new Blob([blobText]); | |
35 blobUrl = URL.createObjectURL(blob); | |
36 port.postMessage(blobUrl); | |
37 return new Promise(resolve => { port.onmessage = resolve; }); | |
38 }) | |
39 .then(e => { | |
40 assert_equals(e.data, 'Worker reply:' + blobText); | |
41 URL.revokeObjectURL(blobUrl); | |
42 return registration.unregister(scope); | |
43 }); | |
44 }, 'postMessage Blob URL to a ServiceWorker'); | |
45 | |
46 </script> | |
47 | |
OLD | NEW |