Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 self.onmessage = function(e) { | |
| 2 var message = e.data; | |
| 3 if ('port' in message) { | |
| 4 port = message.port; | |
|
yhirano
2014/07/23 05:17:13
Please declare |port|.
horo
2014/07/23 09:05:52
Done.
| |
| 5 } | |
| 6 }; | |
| 7 | |
| 8 var baseFrameHtml = | |
| 9 '<script>' + | |
| 10 'function onMessage(event) {' + | |
| 11 ' var script = document.createElement(\'script\');' + | |
| 12 ' script.src = event.data.url;' + | |
| 13 ' script.addEventListener(' + | |
| 14 ' \'error\',' + | |
| 15 ' function() {report({jsonpResult:\'error\'})});' + | |
| 16 ' document.body.appendChild(script);' + | |
| 17 '}' + | |
| 18 'function report(data) {' + | |
| 19 ' window.parent.postMessage(' + | |
| 20 ' data,' + | |
| 21 ' \'http://127.0.0.1:8000/serviceworker/fetch-access-control.html\');' + | |
| 22 '}' + | |
| 23 'function onload() {' + | |
| 24 ' window.addEventListener(\'message\', onMessage, false);' + | |
| 25 '}' + | |
| 26 'window.addEventListener(\'load\', onload);' + | |
| 27 '</script>'; | |
| 28 | |
| 29 function handleFrame(event) { | |
| 30 event.respondWith(new Response(new Blob([baseFrameHtml]))); | |
| 31 } | |
| 32 | |
| 33 function getQueryParams(url) { | |
| 34 var search = (new URL(url)).search; | |
| 35 if (!search) { | |
| 36 return {}; | |
| 37 } | |
| 38 var ret = {}; | |
| 39 var params = search.substring(1).split('&'); | |
| 40 params.forEach(function(param) { | |
| 41 var element = param.split('='); | |
| 42 ret[decodeURIComponent(element[0])] = decodeURIComponent(element[1]); | |
| 43 }); | |
| 44 return ret; | |
| 45 } | |
| 46 | |
| 47 function getRequestInit(params) { | |
| 48 var init = {}; | |
| 49 if (params['method']) { | |
| 50 init['method'] = params['method']; | |
| 51 } | |
| 52 if (params['mode']) { | |
| 53 init['mode'] = params['mode']; | |
| 54 } | |
| 55 if (params['credentials']) { | |
| 56 init['credentials'] = params['credentials']; | |
| 57 } | |
| 58 if (params['headers'] == 'CUSTOM') { | |
|
yhirano
2014/07/23 05:17:13
Please use '===' instead of '=='.
horo
2014/07/23 09:05:52
Done.
| |
| 59 init['headers'] = {"X-ServiceWorker-Test": "test"}; | |
| 60 } else if (params['headers'] == '{}') { | |
| 61 init['headers'] = {}; | |
| 62 } | |
| 63 return init; | |
| 64 } | |
| 65 | |
| 66 function headersToArray(headers) { | |
| 67 var ret = []; | |
| 68 headers.forEach(function(value, key) { | |
| 69 ret.push([key, value]); | |
| 70 }); | |
| 71 return ret; | |
| 72 } | |
| 73 | |
| 74 self.addEventListener('fetch', function(event) { | |
| 75 var originalURL = event.request.url; | |
| 76 if (originalURL == 'http://127.0.0.1:8000/serviceworker/resources/fetch-acce ss-control-iframe.html') { | |
| 77 handleFrame(event); | |
| 78 } else { | |
| 79 var params = getQueryParams(originalURL); | |
| 80 var init = getRequestInit(params); | |
| 81 var url = params['url']; | |
| 82 if (params['ignore']) { | |
| 83 return; | |
| 84 } | |
| 85 event.respondWith(new Promise(function(resolve, reject) { | |
| 86 try { | |
| 87 var request = event.request; | |
| 88 if (url) { | |
| 89 request = new Request(url, init); | |
| 90 } else if (!params['noChange']) { | |
| 91 request = new Request(request, init); | |
| 92 } | |
| 93 fetch(request).then(function(res){ | |
|
yhirano
2014/07/23 05:17:13
space before '{'
horo
2014/07/23 09:05:52
Done.
| |
| 94 // Send the result to fetch-access-control.html. | |
| 95 port.postMessage({fetchResult: 'resolved', | |
| 96 hasBody: !!res.body, | |
| 97 headers: headersToArray(res.headers), | |
| 98 type: res.type, | |
| 99 originalURL: originalURL}); | |
| 100 resolve(res); | |
| 101 }).catch(function(e){ | |
|
yhirano
2014/07/23 05:17:13
space before '{'
horo
2014/07/23 09:05:52
Done.
| |
| 102 // Send the result to fetch-access-control.html. | |
| 103 port.postMessage({fetchResult: 'rejected'}); | |
| 104 reject(); | |
| 105 }); | |
| 106 } catch (e) { | |
| 107 // Send the result to fetch-access-control.html. | |
| 108 port.postMessage({fetchResult: 'error'}); | |
| 109 reject(); | |
| 110 } | |
| 111 })); | |
| 112 } | |
| 113 }); | |
| OLD | NEW |