| function run_test(data, sender) { |
| if (data === 'xhr') { |
| const xhr = new XMLHttpRequest(); |
| xhr.open('GET', 'synthesized-response.txt', true); |
| xhr.responseType = 'text'; |
| xhr.send(); |
| xhr.onload = evt => sender.postMessage(xhr.responseText); |
| xhr.onerror = () => sender.postMessage('XHR failed!'); |
| } else if (data === 'fetch') { |
| fetch('synthesized-response.txt') |
| .then(response => response.text()) |
| .then(data => sender.postMessage(data)) |
| .catch(error => sender.postMessage('Fetch failed!')); |
| } else if (data === 'importScripts') { |
| importScripts('synthesized-response.js'); |
| // |message| is provided by 'synthesized-response.js'; |
| sender.postMessage(message); |
| } else { |
| sender.postMessage('Unexpected message! ' + data); |
| } |
| } |
| |
| // Entry point for dedicated workers. |
| self.onmessage = evt => run_test(evt.data, self); |
| |
| // Entry point for shared workers. |
| self.onconnect = evt => { |
| evt.ports[0].onmessage = e => run_test(e.data, evt.ports[0]); |
| }; |