storage-dynamic-windows.html (3709B)
1 <!DOCTYPE HTML> 2 <html> 3 <!-- 4 Bug 965872 - Storage inspector actor with cookies, local storage and session storage. 5 --> 6 <head> 7 <meta charset="utf-8"> 8 <title>Storage inspector test for listing hosts and storages</title> 9 </head> 10 <body> 11 <iframe src="http://sectest1.example.org/browser/devtools/server/tests/browser/storage-unsecured-iframe.html"></iframe> 12 <script type="application/javascript"> 13 "use strict"; 14 const partialHostname = location.hostname.match(/^[^.]+(\..*)$/)[1]; 15 const cookieExpiresTime1 = 2000000000000; 16 const cookieExpiresTime2 = 2000000001000; 17 // Setting up some cookies to eat. 18 document.cookie = "c1=foobar; expires=" + 19 new Date(cookieExpiresTime1).toGMTString() + "; path=/browser"; 20 document.cookie = "cs2=sessionCookie; path=/; domain=" + partialHostname; 21 document.cookie = "c3=foobar-2; expires=" + 22 new Date(cookieExpiresTime2).toGMTString() + "; path=/"; 23 // ... and some local storage items .. 24 localStorage.setItem("ls1", "foobar"); 25 localStorage.setItem("ls2", "foobar-2"); 26 // ... and finally some session storage items too 27 sessionStorage.setItem("ss1", "foobar-3"); 28 29 const idbGenerator = async function () { 30 let request = indexedDB.open("idb1", 1); 31 request.onerror = function() { 32 throw new Error("error opening db connection"); 33 }; 34 const db = await new Promise(done => { 35 request.onupgradeneeded = event => { 36 const dbResult = event.target.result; 37 const store1 = dbResult.createObjectStore("obj1", { keyPath: "id" }); 38 store1.createIndex("name", "name", { unique: false }); 39 store1.createIndex("email", "email", { unique: true }); 40 dbResult.createObjectStore("obj2", { keyPath: "id2" }); 41 store1.transaction.oncomplete = () => { 42 done(dbResult); 43 }; 44 }; 45 }); 46 47 // Prevents AbortError 48 await new Promise(done => { 49 request.onsuccess = done; 50 }); 51 52 const transaction = db.transaction(["obj1", "obj2"], "readwrite"); 53 const store1 = transaction.objectStore("obj1"); 54 const store2 = transaction.objectStore("obj2"); 55 store1.add({id: 1, name: "foo", email: "foo@bar.com"}); 56 store1.add({id: 2, name: "foo2", email: "foo2@bar.com"}); 57 store1.add({id: 3, name: "foo2", email: "foo3@bar.com"}); 58 store2.add({ 59 id2: 1, 60 name: "foo", 61 email: "foo@bar.com", 62 extra: "baz" 63 }); 64 // Prevents AbortError during close() 65 await new Promise(success => { 66 transaction.oncomplete = success; 67 }); 68 69 db.close(); 70 71 request = indexedDB.open("idb2", 1); 72 const db2 = await new Promise(done => { 73 request.onupgradeneeded = event => { 74 const db2Result = event.target.result; 75 const store3 = db2Result.createObjectStore("obj3", { keyPath: "id3" }); 76 store3.createIndex("name2", "name2", { unique: true }); 77 store3.transaction.oncomplete = () => { 78 done(db2Result); 79 } 80 }; 81 }); 82 // Prevents AbortError during close() 83 await new Promise(done => { 84 request.onsuccess = done; 85 }); 86 db2.close(); 87 88 console.log("added cookies and stuff from main page"); 89 }; 90 91 function deleteDB(dbName) { 92 return new Promise(resolve => { 93 dump("removing database " + dbName + " from " + document.location + "\n"); 94 indexedDB.deleteDatabase(dbName).onsuccess = resolve; 95 }); 96 } 97 98 window.setup = async function () { 99 await idbGenerator(); 100 }; 101 102 window.clear = async function () { 103 document.cookie = "c1=; expires=Thu, 01 Jan 1970 00:00:00 GMT"; 104 document.cookie = "c3=; expires=Thu, 01 Jan 1970 00:00:00 GMT"; 105 document.cookie = "cs2=; expires=Thu, 01 Jan 1970 00:00:00 GMT"; 106 107 localStorage.clear(); 108 109 await deleteDB("idb1"); 110 await deleteDB("idb2"); 111 112 dump("removed cookies, localStorage and indexedDB data from " + 113 document.location + "\n"); 114 }; 115 </script> 116 </body> 117 </html>