OLD | NEW |
1 self.addEventListener('install', function(event) { | 1 self.addEventListener('install', function(event) { |
2 var params = JSON.parse(decodeURIComponent(location.search.substring(1))); | 2 var params = JSON.parse(decodeURIComponent(location.search.substring(1))); |
3 if (!('scopes' in params)) { | 3 if (!('scopes' in params)) { |
4 if ('relscopes' in params) { | 4 if ('relscopes' in params) { |
5 params.scopes = params.relscopes.map(s => registration.scope + s); | 5 params.scopes = params.relscopes.map(s => registration.scope + s); |
6 } else { | 6 } else { |
7 params.scopes = [registration.scope]; | 7 params.scopes = [registration.scope]; |
8 } | 8 } |
9 } | 9 } |
10 if (!('origins' in params)) | 10 if (!('origins' in params)) |
11 params.origins = ['*']; | 11 params.origins = ['*']; |
12 event.registerForeignFetch(params); | 12 event.registerForeignFetch(params); |
13 }); | 13 }); |
14 | 14 |
15 function handle_basic(event) { | 15 function handle_basic(event) { |
16 event.respondWith({response: new Response('Foreign Fetch'), origin: event.orig
in}); | 16 event.respondWith({response: new Response('Foreign Fetch'), origin: event.orig
in}); |
17 } | 17 } |
18 | 18 |
| 19 function handle_null(event) { |
| 20 event.respondWith({response: null }); |
| 21 } |
| 22 |
19 function handle_onmessage(event) { | 23 function handle_onmessage(event) { |
20 event.respondWith({origin: event.origin, response: | 24 event.respondWith({origin: event.origin, response: |
21 new Response('<script>window.onmessage = e => e.ports[0].postMessage("failed
");</script>', | 25 new Response('<script>window.onmessage = e => e.ports[0].postMessage("failed
");</script>', |
22 {headers: {'Content-Type': 'text/html'}})}); | 26 {headers: {'Content-Type': 'text/html'}})}); |
23 } | 27 } |
24 | 28 |
25 function handle_fallback(event) { | 29 function handle_fallback(event) { |
26 // Do nothing. | 30 // Do nothing. |
27 } | 31 } |
28 | 32 |
(...skipping 13 matching lines...) Expand all Loading... |
42 | 46 |
43 function handle_script(event) { | 47 function handle_script(event) { |
44 event.respondWith({origin: event.origin, response: | 48 event.respondWith({origin: event.origin, response: |
45 new Response('self.DidLoad("Foreign Fetch");')}); | 49 new Response('self.DidLoad("Foreign Fetch");')}); |
46 } | 50 } |
47 | 51 |
48 self.addEventListener('foreignfetch', function(event) { | 52 self.addEventListener('foreignfetch', function(event) { |
49 var url = event.request.url; | 53 var url = event.request.url; |
50 var handlers = [ | 54 var handlers = [ |
51 { pattern: '?basic', fn: handle_basic }, | 55 { pattern: '?basic', fn: handle_basic }, |
| 56 { pattern: '?null', fn: handle_null }, |
52 { pattern: '?fallback', fn: handle_fallback }, | 57 { pattern: '?fallback', fn: handle_fallback }, |
53 { pattern: '?fetch', fn: handle_fetch }, | 58 { pattern: '?fetch', fn: handle_fetch }, |
54 { pattern: '?onmessage', fn: handle_onmessage }, | 59 { pattern: '?onmessage', fn: handle_onmessage }, |
55 { pattern: '?meta', fn: handle_meta }, | 60 { pattern: '?meta', fn: handle_meta }, |
56 { pattern: '?script', fn: handle_script } | 61 { pattern: '?script', fn: handle_script } |
57 ]; | 62 ]; |
58 | 63 |
59 var handler = null; | 64 var handler = null; |
60 for (var i = 0; i < handlers.length; ++i) { | 65 for (var i = 0; i < handlers.length; ++i) { |
61 if (url.indexOf(handlers[i].pattern) != -1) { | 66 if (url.indexOf(handlers[i].pattern) != -1) { |
62 handler = handlers[i]; | 67 handler = handlers[i]; |
63 break; | 68 break; |
64 } | 69 } |
65 } | 70 } |
66 | 71 |
67 if (handler) { | 72 if (handler) { |
68 handler.fn(event); | 73 handler.fn(event); |
69 } else { | 74 } else { |
70 event.respondWith({origin: event.origin, | 75 event.respondWith({origin: event.origin, |
71 response: new Response('unexpected request')}); | 76 response: new Response('unexpected request')}); |
72 } | 77 } |
73 }); | 78 }); |
OLD | NEW |