| <!DOCTYPE html> |
| <html> |
| <head> |
| <title>Cache Storage: testing persistency of different origins</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| </head> |
| <body> |
| <script> |
| |
| async function checkCachesAfterClearingMemoryRepresentation(name) { |
| await internals.clearCacheStorageMemoryRepresentation(); |
| var keys = await self.caches.keys(); |
| test(() => { |
| assert_true(keys.indexOf("cache1") !== -1, "Should have cache1"); |
| assert_true(keys.indexOf("cache2") === -1, "Should not have cache2"); |
| }, "Verifying that caches are clustered per client origin."); |
| } |
| |
| async function checkCachesAfterClearingOrigins() { |
| testRunner.clearDOMCache('https://127.0.0.1:8443'); |
| var representation = JSON.parse(await internals.cacheStorageEngineRepresentation()).origins; |
| test(() => { |
| assert_equals(representation[0].origin.topOrigin, "https://127.0.0.1:8443", "top origin of cache 1"); |
| assert_equals(representation[1].origin.topOrigin, "https://127.0.0.1:8443", "top origin of cache 2"); |
| assert_equals(representation[0].origin.clientOrigin, "https://127.0.0.1:8443", "client origin of cache 1"); |
| assert_equals(representation[1].origin.clientOrigin, "https://localhost:8443", "client origin of cache 2"); |
| assert_array_equals(representation[0].caches.persistent, []); |
| assert_array_equals(representation[1].caches.persistent, []); |
| }, "Verifying that clearing caches for an origin will clear both top origin and client origin caches."); |
| } |
| |
| async function checkCacheRepresentation() { |
| var representation = JSON.parse(await internals.cacheStorageEngineRepresentation()).origins; |
| test(() => { |
| assert_equals(representation[0].origin.topOrigin, "https://127.0.0.1:8443", "top origin of cache 1"); |
| assert_equals(representation[1].origin.topOrigin, "https://127.0.0.1:8443", "top origin of cache 2"); |
| assert_equals(representation[0].origin.clientOrigin, "https://127.0.0.1:8443", "client origin of cache 1"); |
| assert_equals(representation[1].origin.clientOrigin, "https://localhost:8443", "client origin of cache 2"); |
| assert_array_equals(representation[0].caches.persistent, ["cache1"]); |
| assert_array_equals(representation[1].caches.persistent, ["cache2"]); |
| }, "Verifying that two caches are created on two different client origins"); |
| } |
| |
| promise_test(test => { |
| if (!window.internals || !window.testRunner) |
| return Promise.reject("Test requires internals and test runner"); |
| |
| return new Promise((resolve, reject) => { |
| var counter = 0; |
| window.addEventListener("message", test.step_func(async (event) => { |
| if (++counter <= 1) |
| return; |
| |
| await checkCacheRepresentation(); |
| await checkCachesAfterClearingMemoryRepresentation(); |
| await checkCachesAfterClearingOrigins(); |
| resolve(); |
| })); |
| }) |
| }, "Create a cache storage and look at the representation"); |
| </script> |
| <div> |
| <iframe src="resources/cache-persistency-iframe.html#name=cache1"></iframe> |
| <iframe src="https://localhost:8443/cache-storage/resources/cache-persistency-iframe.html#name=cache2"></iframe> |
| </div> |
| </body> |
| </html> |