diff --git a/service-workers/service-worker/fetch-request-xhr-sync-on-worker.https.html b/service-workers/service-worker/fetch-request-xhr-sync-on-worker.https.html new file mode 100644 index 00000000000000..9f18096aa29bb4 --- /dev/null +++ b/service-workers/service-worker/fetch-request-xhr-sync-on-worker.https.html @@ -0,0 +1,41 @@ + +Service Worker: Synchronous XHR on Worker is intercepted + + + + diff --git a/service-workers/service-worker/resources/fetch-request-xhr-sync-on-worker-worker.js b/service-workers/service-worker/resources/fetch-request-xhr-sync-on-worker-worker.js new file mode 100644 index 00000000000000..0d24ffc1f33330 --- /dev/null +++ b/service-workers/service-worker/resources/fetch-request-xhr-sync-on-worker-worker.js @@ -0,0 +1,41 @@ +'use strict'; + +self.onfetch = function(event) { + if (event.request.url.indexOf('non-existent-file.txt') !== -1) { + event.respondWith(new Response('Response from service worker')); + } else if (event.request.url.indexOf('/iframe_page') !== -1) { + event.respondWith(new Response( + '\n' + + '', + { + headers: [['content-type', 'text/html']] + })); + } else if (event.request.url.indexOf('/worker_script') !== -1) { + event.respondWith(new Response( + 'self.onmessage = (msg) => {' + + ' const syncXhr = new XMLHttpRequest();' + + ' syncXhr.open(\'GET\', msg.data.url, false);' + + ' syncXhr.send();' + + ' self.postMessage({' + + ' status: syncXhr.status,' + + ' responseText: syncXhr.responseText' + + ' });' + + '}', + { + headers: [['content-type', 'application/javascript']] + })); + } +};