| importScripts('test-helpers.sub.js'); |
| importScripts('/common/get-host-info.sub.js'); |
| |
| const NAME = 'foo'; |
| const SAME_ORIGIN_BASE = new URL('./', self.location.href).href; |
| const CROSS_ORIGIN_BASE = new URL('./', |
| get_host_info().HTTPS_REMOTE_ORIGIN + base_path()).href; |
| |
| const urls = [ |
| `${SAME_ORIGIN_BASE}opaque-script-small.js`, |
| `${SAME_ORIGIN_BASE}opaque-script-large.js`, |
| `${CROSS_ORIGIN_BASE}opaque-script-small.js`, |
| `${CROSS_ORIGIN_BASE}opaque-script-large.js`, |
| ]; |
| |
| self.addEventListener('install', evt => { |
| evt.waitUntil(async function() { |
| const c = await caches.open(NAME); |
| const promises = urls.map(async function(u) { |
| const r = await fetch(u, { mode: 'no-cors' }); |
| await c.put(u, r); |
| }); |
| await Promise.all(promises); |
| }()); |
| }); |
| |
| self.addEventListener('fetch', evt => { |
| const url = new URL(evt.request.url); |
| if (!url.pathname.includes('opaque-script-small.js') && |
| !url.pathname.includes('opaque-script-large.js')) { |
| return; |
| } |
| evt.respondWith(async function() { |
| const c = await caches.open(NAME); |
| return c.match(evt.request); |
| }()); |
| }); |