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

Side by Side Diff: LayoutTests/http/tests/serviceworker/resources/fetch-access-control-worker.js

Issue 333423004: moved to https://codereview.chromium.org/399543002/ (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: rebase Created 6 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 self.onmessage = function(e) {
2 var message = e.data;
3 if ('port' in message) {
4 port = message.port;
5 }
6 };
7
8 var baseFrameHtml =
9 '<script>' +
10 'function onMessage(event) {' +
11 ' var frame = document.createElement(\'script\');' +
12 ' frame.src = event.data.url;' +
13 ' document.body.appendChild(frame);' +
14 '}' +
15 'function report(data) {' +
16 ' window.parent.postMessage(' +
17 ' data,' +
18 ' \'http://127.0.0.1:8000/serviceworker/fetch-access-control.html\');' +
19 '}' +
20 'function onload() {' +
21 ' window.addEventListener(\'message\', onMessage, false);' +
22 '}' +
23 'window.addEventListener(\'load\', onload);' +
24 '</script>';
25
26 function handleFrame(event) {
27 event.respondWith(new Response(new Blob([baseFrameHtml])));
28 }
29
30 function getQueryParams(url) {
31 var search = (new URL(url)).search;
32 if (!search) {
33 return {};
34 }
35 var ret = {};
36 var params = search.substring(1).split('&');
37 params.forEach(function(param) {
38 var element = param.split('=');
39 ret[decodeURIComponent(element[0])] = decodeURIComponent(element[1]);
40 });
41 return ret;
42 }
43
44 function getRequestInit(params) {
45 var init = {};
46 if (params['method']) {
47 init['method'] = params['method'];
48 }
49 if (params['mode']) {
50 init['mode'] = params['mode'];
51 }
52 if (params['credentials']) {
53 init['credentials'] = params['credentials'];
54 }
55 if (params['headers']) {
56 init['headers'] = JSON.parse(params['headers']);
57 }
58 return init;
59 }
60
61 function headersToArray(headers) {
62 var ret = [];
63 headers.forEach(function(value, key) {
64 ret.push([key, value]);
65 });
66 return ret;
67 }
68
69 self.addEventListener('fetch', function(event) {
70 var url = event.request.url;
71 if (event.request.url == 'http://127.0.0.1:8000/serviceworker/resources/fetch- access-control-iframe.html') {
72 handleFrame(event);
73 } else {
74 var params = getQueryParams(url);
75 var init = getRequestInit(params);
76 event.respondWith(new Promise(function(resolve, reject) {
77 try {
78 var newRequest = new Request(event.request, init);
79 fetch(newRequest).then(function(res){
80 port.postMessage({id: params['id'],
81 event: 'resolved',
82 params: params,
83 headers: headersToArray(res.headers),
84 data: JSON.parse(JSON.stringify(res))});
85 resolve(res);
86 //resolve(new Response(new Blob(['report(\'aaa\')'])));
87 }).catch(function(e){
88 port.postMessage({id: params['id'],
89 event: 'rejected',
90 params: params});
91 reject();
92 });
93 } catch (e) {
94 port.postMessage({id: params['id'],
95 event: 'error',
96 params: params});
97 reject();
98 }
99 }));
100 }
101 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698