storage-empty-objectstores.html (2030B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>Test for proper listing indexedDB databases with no object stores</title> 6 </head> 7 <body> 8 <script type="application/javascript"> 9 "use strict"; 10 window.setup = async function () { 11 let request = indexedDB.open("idb1", 1); 12 const db = await new Promise((resolve, reject) => { 13 request.onerror = () => reject(Error("error opening db connection")); 14 request.onupgradeneeded = event => { 15 const _db = event.target.result; 16 const store1 = _db.createObjectStore("obj1", { keyPath: "id" }); 17 store1.createIndex("name", "name", { unique: false }); 18 store1.createIndex("email", "email", { unique: true }); 19 _db.createObjectStore("obj2", { keyPath: "id2" }); 20 store1.transaction.oncomplete = () => resolve(_db); 21 }; 22 }); 23 24 await new Promise(resolve => (request.onsuccess = resolve)); 25 26 const transaction = db.transaction(["obj1", "obj2"], "readwrite"); 27 const store1 = transaction.objectStore("obj1"); 28 const store2 = transaction.objectStore("obj2"); 29 30 store1.add({id: 1, name: "foo", email: "foo@bar.com"}); 31 store1.add({id: 2, name: "foo2", email: "foo2@bar.com"}); 32 store1.add({id: 3, name: "foo2", email: "foo3@bar.com"}); 33 store2.add({id2: 1, name: "foo", email: "foo@bar.com", extra: "baz"}); 34 35 await new Promise(resolve => (transaction.oncomplete = resolve)); 36 37 db.close(); 38 39 request = indexedDB.open("idb2", 1); 40 const db2 = await new Promise((resolve, reject) => { 41 request.onerror = () => reject(Error("error opening db2 connection")); 42 request.onupgradeneeded = event => resolve(event.target.result); 43 }); 44 45 await new Promise(resolve => (request.onsuccess = resolve)); 46 47 db2.close(); 48 dump("added indexedDB items from main page\n"); 49 }; 50 51 window.clear = async function () { 52 for (const dbName of ["idb1", "idb2"]) { 53 await new Promise(resolve => { 54 indexedDB.deleteDatabase(dbName).onsuccess = resolve; 55 }); 56 } 57 dump("removed indexedDB items from main page\n"); 58 }; 59 60 </script> 61 </body> 62 </html>