Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(20)

Side by Side Diff: LayoutTests/http/tests/serviceworker/chromium/resources/service-worker-mixed-response-worker.js

Issue 1226473002: Add LayoutTests for mixed range response handling. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: incorporated falken's comment and refactored Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(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 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698