addEventListener("install", function (evt) { evt.waitUntil(self.skipWaiting()); }); addEventListener("activate", function (evt) { // We claim the current clients in order to ensure that we have an // active client when we call unregister in the fetch handler. Otherwise // the unregister() can kill the current worker before returning a // response. evt.waitUntil(clients.claim()); }); addEventListener("fetch", function (evt) { // This worker may live long enough to receive a fetch event from the next // test. Just pass such requests through to the network. if (!evt.request.url.includes("fake_download")) { return; } // We should only get a single download fetch event. Automatically unregister. evt.respondWith( registration.unregister().then(function () { return new Response("service worker generated download", { headers: { "Content-Disposition": 'attachment; filename="fake_download.bin"', // Prevent the default text editor from being launched "Content-Type": "application/octet-stream", // fake encoding header that should have no effect "Content-Encoding": "gzip", }, }); }) ); });