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