blob: d5f7d24911693ba599e45949d78fa2a193090e1e [file] [log] [blame]
<!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>