Source code

Revision control

Copy as Markdown

Other Tools

importScripts('/common/get-host-info.sub.js');
importScripts('test-helpers.sub.js');
importScripts('/resources/testharness.js');
const storedResponse = new Response(new Blob(['a simple text file']))
const absolultePath = `${base_path()}/simple.txt`
self.addEventListener('fetch', event => {
const search = new URLSearchParams(new URL(event.request.url).search.substr(1))
const variant = search.get('variant')
const delay = search.get('delay')
if (!variant)
return
switch (variant) {
case 'forward':
event.respondWith(fetch(event.request.url))
break
case 'redirect':
event.respondWith(fetch(`/xhr/resources/redirect.py?location=${base_path()}/simple.txt`))
break
case 'delay-before-fetch':
event.respondWith(
new Promise(resolve => {
step_timeout(() => fetch(event.request.url).then(resolve), delay)
}))
break
case 'delay-after-fetch':
event.respondWith(new Promise(resolve => {
fetch(event.request.url)
.then(response => step_timeout(() => resolve(response), delay))
}))
break
}
});