| <!DOCTYPE html> |
| <title>Cache Storage: Verify that Window and Workers see same storage</title> |
| <link rel="help" href="https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#cache-storage"> |
| <meta name="timeout" content="long"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="../resources/testharness-helpers.js"></script> |
| <script> |
| |
| function wait_for_message(worker) { |
| return new Promise(function(resolve) { |
| worker.addEventListener('message', function listener(e) { |
| resolve(e.data); |
| worker.removeEventListener('message', listener); |
| }); |
| }); |
| } |
| |
| promise_test(function(t) { |
| var cache_name = 'common-test'; |
| return self.caches.delete(cache_name) |
| .then(function() { |
| var worker = new Worker('resources/common-worker.js'); |
| worker.postMessage({name: cache_name}); |
| return wait_for_message(worker); |
| }) |
| .then(function(message) { |
| return self.caches.open(cache_name); |
| }) |
| .then(function(cache) { |
| return Promise.all([ |
| cache.match('https://example.com/a'), |
| cache.match('https://example.com/b'), |
| cache.match('https://example.com/c') |
| ]); |
| }) |
| .then(function(responses) { |
| return Promise.all(responses.map( |
| function(response) { return response.text(); } |
| )); |
| }) |
| .then(function(bodies) { |
| assert_equals(bodies[0], 'a', |
| 'Body should match response put by worker'); |
| assert_equals(bodies[1], 'b', |
| 'Body should match response put by worker'); |
| assert_equals(bodies[2], 'c', |
| 'Body should match response put by worker'); |
| }); |
| }, 'Window sees cache puts by Worker'); |
| |
| </script> |