Chromium Code Reviews| 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 |