summaryrefslogtreecommitdiffstats
path: root/dom/workers/test/serviceworkers/force_refresh_worker.js
diff options
context:
space:
mode:
Diffstat (limited to 'dom/workers/test/serviceworkers/force_refresh_worker.js')
-rw-r--r--dom/workers/test/serviceworkers/force_refresh_worker.js33
1 files changed, 33 insertions, 0 deletions
diff --git a/dom/workers/test/serviceworkers/force_refresh_worker.js b/dom/workers/test/serviceworkers/force_refresh_worker.js
new file mode 100644
index 000000000..f0752d0cb
--- /dev/null
+++ b/dom/workers/test/serviceworkers/force_refresh_worker.js
@@ -0,0 +1,33 @@
+var name = 'refresherCache';
+
+self.addEventListener('install', function(event) {
+ event.waitUntil(
+ Promise.all([caches.open(name),
+ fetch('./sw_clients/refresher_cached.html'),
+ fetch('./sw_clients/refresher_cached_compressed.html')]).then(function(results) {
+ var cache = results[0];
+ var response = results[1];
+ var compressed = results[2];
+ return Promise.all([cache.put('./sw_clients/refresher.html', response),
+ cache.put('./sw_clients/refresher_compressed.html', compressed)]);
+ })
+ );
+});
+
+self.addEventListener('fetch', function (event) {
+ event.respondWith(
+ caches.open(name).then(function(cache) {
+ return cache.match(event.request);
+ }).then(function(response) {
+ // If this is one of our primary cached responses, then the window
+ // must have generated the request via a normal window reload. That
+ // should be detectable in the event.request.cache attribute.
+ if (response && event.request.cache !== 'no-cache') {
+ dump('### ### FetchEvent.request.cache is "' + event.request.cache +
+ '" instead of expected "no-cache"\n');
+ return Response.error();
+ }
+ return response || fetch(event.request);
+ })
+ );
+});