Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / LayoutTests / http / tests / serviceworker / resources / fetch-rewrite-worker.js
1 function get_query_params(url) {
2   var search = (new URL(url)).search;
3   if (!search) {
4     return {};
5   }
6   var ret = {};
7   var params = search.substring(1).split('&');
8   params.forEach(function(param) {
9       var element = param.split('=');
10       ret[decodeURIComponent(element[0])] = decodeURIComponent(element[1]);
11     });
12   return ret;
13 }
14
15 function get_request_init(params) {
16   var init = {};
17   if (params['method']) {
18     init['method'] = params['method'];
19   }
20   if (params['mode']) {
21     init['mode'] = params['mode'];
22   }
23   if (params['credentials']) {
24     init['credentials'] = params['credentials'];
25   }
26   return init;
27 }
28
29 self.addEventListener('fetch', function(event) {
30     var params = get_query_params(event.request.url);
31     var init = get_request_init(params);
32     var url = params['url'];
33     if (params['ignore']) {
34       return;
35     }
36     if (params['reject']) {
37       event.respondWith(new Promise(function(resolve, reject) {
38           reject();
39         }));
40       return;
41     }
42     if (params['resolve-null']) {
43       event.respondWith(new Promise(function(resolve) {
44           resolve(null);
45         }));
46       return;
47     }
48     event.respondWith(new Promise(function(resolve, reject) {
49         var request = event.request;
50         if (url) {
51           request = new Request(url, init);
52         }
53         fetch(request).then(resolve, reject);
54       }));
55   });