Index: LayoutTests/http/tests/serviceworker/chromium/resources/fetch-script-onerror-worker.js |
diff --git a/LayoutTests/http/tests/serviceworker/chromium/resources/fetch-script-onerror-worker.js b/LayoutTests/http/tests/serviceworker/chromium/resources/fetch-script-onerror-worker.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9b33a830699d6b8ad758d8bb02a732abc3fa2b30 |
--- /dev/null |
+++ b/LayoutTests/http/tests/serviceworker/chromium/resources/fetch-script-onerror-worker.js |
@@ -0,0 +1,34 @@ |
+function get_query_params(url) { |
+ var search = (new URL(url)).search; |
+ if (!search) { |
+ return {}; |
+ } |
+ var ret = {}; |
+ var params = search.substring(1).split('&'); |
+ params.forEach(function(param) { |
+ var element = param.split('='); |
+ ret[decodeURIComponent(element[0])] = decodeURIComponent(element[1]); |
+ }); |
+ return ret; |
+} |
+ |
+function get_request_init(params) { |
+ var init = {}; |
+ if (params['mode']) { |
+ init['mode'] = params['mode']; |
+ } |
+ return init; |
+} |
+ |
+self.addEventListener('fetch', function(event) { |
+ var params = get_query_params(event.request.url); |
+ var init = get_request_init(params); |
+ var url = params['url']; |
+ event.respondWith(new Promise(function(resolve, reject) { |
+ var request = event.request; |
+ if (url) { |
+ request = new Request(url, init); |
+ } |
+ fetch(request).then(resolve, reject); |
+ })); |
+ }); |