| <!DOCTYPE html> |
| <html> |
| <head> |
| <title>Cache Storage: testing persistency</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| </head> |
| <body> |
| <div id="check"></div> |
| <script> |
| promise_test(test => { |
| return self.caches.keys().then(keys => { |
| var pending = []; |
| for (key of keys) |
| pending.push(self.caches.delete(keys[0])); |
| return Promise.all(pending); |
| }); |
| }, "Cleaning existing caches"); |
| |
| promise_test(test => { |
| if (!window.internals || !window.testRunner) |
| return Promise.reject("Test requires internals"); |
| |
| testRunner.setPrivateBrowsingEnabled(true); |
| |
| return new Promise((resolve, reject) => { |
| window.addEventListener("message", test.step_func((event) => { |
| if (event.data === "ready") { |
| internals.clearCacheStorageMemoryRepresentation().then(() => { |
| check.innerHTML = "<iframe src='resources/cache-persistency-iframe.html#check'></iframe>"; |
| }); |
| return; |
| } |
| assert_true(event.data === false, "No cache object should be found"); |
| testRunner.setPrivateBrowsingEnabled(false); |
| resolve(); |
| })); |
| check.innerHTML = "<iframe src='resources/cache-persistency-iframe.html'></iframe>"; |
| }) |
| }, "Clear memory representation and disable disk persistency"); |
| |
| promise_test(test => { |
| if (window.testRunner) |
| testRunner.setPrivateBrowsingEnabled(false); |
| |
| return Promise.resolve().then(() => { |
| if (window.internals) |
| return internals.clearCacheStorageMemoryRepresentation(); |
| }).then(() => { |
| return self.caches.keys(); |
| }).then(keys => { |
| var pending = []; |
| for (key of keys) |
| pending.push(self.caches.delete(keys[0])); |
| return Promise.all(pending); |
| }); |
| }, "Cleaning added caches from previous test 1"); |
| |
| promise_test(test => { |
| if (!window.internals) |
| return Promise.reject("Test requires internals"); |
| |
| return new Promise((resolve, reject) => { |
| window.addEventListener("message", test.step_func((event) => { |
| if (event.data === "ready") { |
| internals.clearCacheStorageMemoryRepresentation().then(() => { |
| check.innerHTML = "<iframe src='resources/cache-persistency-iframe.html#check'></iframe>"; |
| }); |
| return; |
| } |
| assert_true(event.data === true, "A cache object should be found"); |
| resolve(); |
| })); |
| check.innerHTML = "<iframe src='resources/cache-persistency-iframe.html'></iframe>"; |
| }) |
| }, "Clear memory representation but keep disk persistency"); |
| |
| promise_test(test => { |
| return self.caches.keys().then(keys => { |
| var pending = []; |
| for (key of keys) |
| pending.push(self.caches.delete(keys[0])); |
| return Promise.all(pending); |
| }); |
| }, "Cleaning added caches from previous test 2"); |
| |
| promise_test(test => { |
| if (!window.internals) |
| return Promise.reject("Test requires internals"); |
| |
| return Promise.all([self.caches.open("test2"), self.caches.open("test1")]).then(() => { |
| return self.caches.keys() |
| }).then(keys => { |
| assert_array_equals(keys, ["test2", "test1"]); |
| }).then(() => { |
| return internals.clearCacheStorageMemoryRepresentation(); |
| }).then(() => { |
| return self.caches.keys(); |
| }).then(keys => { |
| assert_array_equals(keys, ["test2", "test1"]); |
| return self.caches.delete("test2"); |
| }).then(() => { |
| return internals.clearCacheStorageMemoryRepresentation(); |
| }).then(() => { |
| return self.caches.keys(); |
| }).then(keys => { |
| assert_array_equals(keys, ["test1"]); |
| }).then(() => { |
| return self.caches.open("test2"); |
| }).then(() => { |
| return internals.clearCacheStorageMemoryRepresentation(); |
| }).then(() => { |
| return self.caches.keys(); |
| }).then(keys => { |
| assert_array_equals(keys, ["test1", "test2"]); |
| }).then(() => { |
| return Promise.all([self.caches.delete("test2"), self.caches.delete("test1")]); |
| }).then(() => { |
| return internals.clearCacheStorageMemoryRepresentation(); |
| }).then(() => { |
| return self.caches.keys(); |
| }).then(keys => { |
| assert_array_equals(keys, []); |
| }); |
| }, "Adding/Removing caches and clearing in memory representation at various times"); |
| |
| promise_test(test => { |
| return self.caches.keys().then(keys => { |
| var pending = []; |
| for (key of keys) |
| pending.push(self.caches.delete(keys[0])); |
| return Promise.all(pending); |
| }); |
| }, "Cleaning added caches"); |
| </script> |
| </body> |
| </html> |
| |