Source code

Revision control

Copy as Markdown

Other Tools

<!DOCTYPE html>
<body>
<script>
function createDb() {
return new Promise((resolve) => {
const openRequest = indexedDB.open("test-abort-on-reload", 1);
openRequest.onsuccess = () => {
const db = openRequest.result;
// This would throw when db is corrupted.
db.transaction("databases", "readwrite");
db.onversionchange = () => {
db.close();
};
resolve();
};
openRequest.onupgradeneeded = () => {
// Interrupt upgrade
window.location.reload();
opener.info('reload requested\n');
openRequest.result.createObjectStore("databases");
};
});
}
function reset() {
return new Promise((resolve) => {
const request = indexedDB.deleteDatabase("test-abort-on-reload");
request.onsuccess = resolve;
});
}
async function test() {
opener.postMessage("message", "*");
for (let i = 0; i < 10; ++i) {
opener.info(`iteration ${i}`);
await createDb();
await reset();
}
}
test();
</script>
</body>