Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Common helper functions for foreign fetch tests. | |
| 2 | |
| 3 // Installs a service worker on a different origin. Both |worker| and |scope| | |
| 4 // are resolved relative to the /serviceworker/resources/ directory on a | |
|
falken
2017/02/07 02:10:47
nit: /service-workers/service-worker/resources/ di
Marijn Kruisselbrink
2017/02/13 22:00:26
Done
| |
| 5 // remote origin. | |
| 6 function install_cross_origin_worker( | |
| 7 t, worker, scope, origin = get_host_info().HTTPS_REMOTE_ORIGIN) { | |
| 8 return with_iframe(origin + new URL('resources/install-worker-helper.html', lo cation).pathname) | |
| 9 .then(frame => new Promise((resolve, reject) => { | |
| 10 var channel = new MessageChannel(); | |
|
falken
2017/02/07 02:10:47
nit: let or const for consistency with fetch_from_
| |
| 11 frame.contentWindow.postMessage({worker: worker, | |
| 12 options: {scope: scope}, | |
| 13 port: channel.port1}, | |
|
falken
2017/02/07 02:10:47
nit: Is it possible to remove the port property? I
Marijn Kruisselbrink
2017/02/13 22:00:26
Yeah, here using event.source directly would indee
| |
| 14 '*', [channel.port1]); | |
| 15 channel.port2.onmessage = reply => { | |
| 16 if (reply.data == 'success') resolve(); | |
| 17 else reject(reply.data); | |
| 18 }; | |
| 19 })); | |
| 20 } | |
| 21 | |
| 22 // Performs a fetch from a different origin. By default this performs a fetch | |
| 23 // from a window on that origin, but if |worker_type| is 'dedicated' or 'shared' | |
| 24 // the fetch is made from a worker on that origin instead. | |
| 25 // This uses a window rather than an iframe because an iframe might get blocked | |
| 26 // by mixed content checks. | |
| 27 function fetch_from_different_origin(origin, url, worker_type) { | |
| 28 var win = open(origin + new URL('resources/foreign-fetch-helper-iframe.html', location).pathname); | |
| 29 return new Promise(resolve => { | |
| 30 self.addEventListener('message', e => { | |
| 31 if (e.source != win) return; | |
| 32 resolve(); | |
| 33 }); | |
| 34 }) | |
| 35 .then(() => new Promise((resolve) => { | |
| 36 let channel = new MessageChannel(); | |
|
falken
2017/02/07 02:10:47
const?
Marijn Kruisselbrink
2017/02/13 22:00:25
Done
| |
| 37 win.postMessage({url: url, | |
| 38 port: channel.port1, | |
| 39 worker: worker_type}, | |
| 40 '*', [channel.port1]); | |
| 41 channel.port2.onmessage = reply => { | |
| 42 win.close(); | |
| 43 resolve(reply.data); | |
| 44 }; | |
| 45 })); | |
| 46 } | |
| OLD | NEW |