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