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