opaque_intercept_worker.js (1006B)
1 var name = "opaqueInterceptCache"; 2 3 // Cross origin request to ensure that an opaque response is used 4 var prefix = "http://example.com/tests/dom/serviceworkers/test/"; 5 6 var testReady = new Promise(resolve => { 7 self.addEventListener( 8 "message", 9 m => { 10 resolve(); 11 }, 12 { once: true } 13 ); 14 }); 15 16 self.addEventListener("install", function (event) { 17 var request = new Request(prefix + "notify_loaded.js", { mode: "no-cors" }); 18 event.waitUntil( 19 Promise.all([caches.open(name), fetch(request), testReady]).then( 20 function (results) { 21 var cache = results[0]; 22 var response = results[1]; 23 return cache.put("./sw_clients/does_not_exist.js", response); 24 } 25 ) 26 ); 27 }); 28 29 self.addEventListener("fetch", function (event) { 30 event.respondWith( 31 caches 32 .open(name) 33 .then(function (cache) { 34 return cache.match(event.request); 35 }) 36 .then(function (response) { 37 return response || fetch(event.request); 38 }) 39 ); 40 });