abort_on_reload.html (1146B)
1 <!DOCTYPE html> 2 3 <body> 4 <script> 5 function createDb() { 6 return new Promise((resolve) => { 7 const openRequest = indexedDB.open("test-abort-on-reload", 1); 8 openRequest.onsuccess = () => { 9 const db = openRequest.result; 10 // This would throw when db is corrupted. 11 db.transaction("databases", "readwrite"); 12 db.onversionchange = () => { 13 db.close(); 14 }; 15 resolve(); 16 }; 17 openRequest.onupgradeneeded = () => { 18 // Interrupt upgrade 19 window.location.reload(); 20 opener.info('reload requested\n'); 21 openRequest.result.createObjectStore("databases"); 22 }; 23 }); 24 } 25 26 function reset() { 27 return new Promise((resolve) => { 28 const request = indexedDB.deleteDatabase("test-abort-on-reload"); 29 request.onsuccess = resolve; 30 }); 31 } 32 33 async function test() { 34 opener.postMessage("message", "*"); 35 36 for (let i = 0; i < 10; ++i) { 37 opener.info(`iteration ${i}`); 38 await createDb(); 39 await reset(); 40 } 41 } 42 43 test(); 44 </script> 45 </body>