| 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 |