Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 importScripts('../../../resources/get-host-info.js'); | |
| 2 | |
| 3 var HOST_INFO = get_host_info(); | |
| 4 var PARTIAL_RESOURCE_PATH = | |
| 5 '/serviceworker/chromium/resources/service-worker-mixed-response.php'; | |
| 6 | |
| 7 function get_query_params(url) { | |
| 8 var search = (new URL(url)).search; | |
| 9 if (!search) { | |
| 10 return {}; | |
| 11 } | |
| 12 var ret = {}; | |
| 13 var params = search.substring(1).split('&'); | |
| 14 params.forEach(function(param) { | |
| 15 var element = param.split('='); | |
| 16 ret[decodeURIComponent(element[0])] = decodeURIComponent(element[1]); | |
| 17 }); | |
| 18 return ret; | |
| 19 } | |
| 20 | |
| 21 function geneate_partial_byte_response(position) { | |
|
falken
2015/07/07 03:23:10
nit: generate
horo
2015/07/07 10:08:11
Done.
| |
| 22 return new Response( | |
| 23 'Ogg'.substr(position, 1), | |
| 24 { | |
| 25 status: 206, | |
| 26 headers: { | |
| 27 'content-type': 'audio/ogg', | |
| 28 'content-range': 'bytes ' + position + '-' + position + '/12983' | |
|
falken
2015/07/07 03:23:10
comment for 12983?
horo
2015/07/07 10:08:11
Done.
| |
| 29 } | |
| 30 }); | |
| 31 } | |
| 32 | |
| 33 function fetch_same_origin_partial_resource(position) { | |
| 34 return fetch(HOST_INFO['HTTP_ORIGIN'] + PARTIAL_RESOURCE_PATH + | |
| 35 '?position=' + position) | |
| 36 } | |
| 37 | |
| 38 function fetch_cross_origin_partial_resource(position) { | |
| 39 return fetch(HOST_INFO['HTTP_REMOTE_ORIGIN'] + PARTIAL_RESOURCE_PATH + | |
| 40 '?position=' + position) | |
| 41 } | |
| 42 | |
| 43 self.addEventListener('fetch', function(event) { | |
| 44 if (event.request.url.indexOf('blank.html') != -1) { | |
| 45 // The request is for the page load. | |
| 46 return; | |
| 47 } | |
| 48 var params = get_query_params(event.request.url); | |
| 49 if (event.request.headers.get('range') == 'bytes=0-') { | |
| 50 if (params['SW_FIRST'] == 'gen') { | |
| 51 event.respondWith(geneate_partial_byte_response(0)); | |
| 52 } else if (params['SW_FIRST'] == 'same') { | |
| 53 event.respondWith(fetch_same_origin_partial_resource(0)); | |
| 54 } else if (params['SW_FIRST'] == 'cross') { | |
| 55 event.respondWith(fetch_cross_origin_partial_resource(0)); | |
| 56 } | |
| 57 } else if (event.request.headers.get('range') == 'bytes=1-') { | |
| 58 if (params['SW_SECOND'] == 'gen') { | |
| 59 event.respondWith(geneate_partial_byte_response(1)); | |
| 60 } else if (params['SW_SECOND'] == 'same') { | |
| 61 event.respondWith(fetch_same_origin_partial_resource(1)); | |
| 62 } else if (params['SW_SECOND'] == 'cross') { | |
| 63 event.respondWith(fetch_cross_origin_partial_resource(1)); | |
| 64 } | |
| 65 } | |
| 66 }); | |
| OLD | NEW |