OLD | NEW |
1 var port = undefined; | 1 'use strict'; |
2 // Create a then-able object that is never resolved. | |
3 function createPending() { | |
4 return { then: createPending }; | |
5 } | |
6 | |
7 onmessage = function(e) { | |
8 var message = e.data; | |
9 if (typeof message === 'object' && 'port' in message) { | |
10 port = message.port; | |
11 | |
12 port.postMessage('received port'); | |
13 // The ServiceWorker which handles the "message" event must persist long | |
14 // enough to handle the subsequent "fetch" event. To promote test | |
15 // simplicity, the worker prevents its own termination indefinitely via a | |
16 // then-able that is never resolved. | |
17 e.waitUntil(createPending()); | |
18 } | |
19 }; | |
20 | 2 |
21 onfetch = function(e) { | 3 onfetch = function(e) { |
22 var headers = {}; | 4 var headers = {}; |
23 var errorNameWhileAppendingHeader; | |
24 for (var header of e.request.headers) { | 5 for (var header of e.request.headers) { |
25 var key = header[0], value = header[1]; | 6 var key = header[0], value = header[1]; |
26 headers[key] = value; | 7 headers[key] = value; |
27 } | 8 } |
28 var errorNameWhileAddingHeader = ''; | 9 var append_header_error = ''; |
29 try { | 10 try { |
30 e.request.headers.append('Test-Header', 'TestValue'); | 11 e.request.headers.append('Test-Header', 'TestValue'); |
31 } catch (e) { | 12 } catch (error) { |
32 errorNameWhileAppendingHeader = e.name; | 13 append_header_error = error.name; |
33 } | 14 } |
34 port.postMessage({ | 15 |
35 url: e.request.url, | 16 var request_construct_error = ''; |
36 mode: e.request.mode, | 17 try { |
37 method: e.request.method, | 18 new Request(e.request, {method: 'GET'}); |
38 referrer: e.request.referrer, | 19 } catch (error) { |
39 headers: headers, | 20 request_construct_error = error.name; |
40 headerSize: e.request.headers.size, | 21 } |
41 errorNameWhileAppendingHeader: errorNameWhileAppendingHeader | 22 |
42 }); | 23 e.respondWith(new Response(JSON.stringify({ |
| 24 url: e.request.url, |
| 25 method: e.request.method, |
| 26 referrer: e.request.referrer, |
| 27 headers: headers, |
| 28 mode: e.request.mode, |
| 29 credentials: e.request.credentials, |
| 30 redirect: e.request.redirect, |
| 31 append_header_error: append_header_error, |
| 32 request_construct_error: request_construct_error |
| 33 }))); |
43 }; | 34 }; |
OLD | NEW |