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

Side by Side Diff: LayoutTests/http/tests/serviceworker/resources/fetch-csp-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 '<!DOCTYPE html>' +
10 '<html><head>' +
11 '<meta http-equiv="Content-Security-Policy" content="img-src *.0.1:8000; script- src \'unsafe-inline\'">' +
12 '<script>' +
13 'function onMessage(event) {' +
14 ' var frame = document.createElement(\'script\');' +
15 ' frame.src = event.data.url;' +
16 ' document.body.appendChild(frame);' +
17 '}' +
18 'function report(data) {' +
19 ' window.parent.postMessage(' +
20 ' data,' +
21 ' \'http://127.0.0.1:8000/serviceworker/fetch-csp.html\');' +
22 '}' +
23 'function onload() {' +
24 ' window.addEventListener(\'message\', onMessage, false);' +
25 '}' +
26 'window.addEventListener(\'load\', onload);' +
27 '</script>' +
28 '</head><body></body></html>' ;
29
30 function handleFrame(event) {
31 event.respondWith(new Response(new Blob([baseFrameHtml])));
32 }
33
34 function getQueryParams(url) {
35 var search = (new URL(url)).search;
36 if (!search) {
37 return {};
38 }
39 var ret = {};
40 var params = search.substring(1).split('&');
41 params.forEach(function(param) {
42 var element = param.split('=');
43 ret[decodeURIComponent(element[0])] = decodeURIComponent(element[1]);
44 });
45 return ret;
46 }
47
48 function getRequestInit(params) {
49 var init = {};
50 if (params['method']) {
51 init['method'] = params['method'];
52 }
53 if (params['mode']) {
54 init['mode'] = params['mode'];
55 }
56 if (params['credentials']) {
57 init['credentials'] = params['credentials'];
58 }
59 if (params['headers']) {
60 init['headers'] = JSON.parse(params['headers']);
61 }
62 return init;
63 }
64
65 function headersToArray(headers) {
66 var ret = [];
67 headers.forEach(function(value, key) {
68 ret.push([key, value]);
69 });
70 return ret;
71 }
72
73 self.addEventListener('fetch', function(event) {
74 var url = event.request.url;
75 if (event.request.url == 'http://127.0.0.1:8000/serviceworker/resources/fetch- csp-iframe.html') {
76 handleFrame(event);
77 } else {
78 var params = getQueryParams(url);
79 var init = getRequestInit(params);
80 var url = params['url'];
81 if (params['ignore']) {
82 return;
83 }
84 event.respondWith(new Promise(function(resolve, reject) {
85 try {
86 var request = event.request;
87 if (url) {
88 request = new Request(url, init);
89 } else if (!params['noChange']) {
90 request = new Request(request, init);
91 }
92 fetch(request).then(function(res){
93 resolve(res);
94 port.postMessage({id: params['id'],
95 event: 'resolved',
96 params: params,
97 headers: headersToArray(res.headers),
98 data: JSON.parse(JSON.stringify(res))});
99 }).catch(function(e){
100 reject();
101 port.postMessage({id: params['id'],
102 event: 'rejected',
103 params: params});
104 });
105 } catch (e) {
106 reject();
107 port.postMessage({id: params['id'],
108 event: 'error',
109 params: params});
110 }
111 }));
112 }
113 });
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698