storage-secured-iframe.html (2628B)
1 <!DOCTYPE HTML> 2 <html> 3 <!-- 4 Iframe for testing multiple host detetion in storage actor 5 --> 6 <head> 7 <meta charset="utf-8"> 8 </head> 9 <body> 10 <script type="application/javascript"> 11 "use strict"; 12 const cookieExpiresTime = 2000000000000; 13 document.cookie = "sc1=foobar;"; 14 document.cookie = "sc2=foobar-2; expires=" + 15 new Date(cookieExpiresTime).toGMTString() + ";"; 16 localStorage.setItem("iframe-s-ls1", "foobar"); 17 sessionStorage.setItem("iframe-s-ss1", "foobar-2"); 18 dump("added cookies and storage from secured iframe\n"); 19 20 const idbGenerator = async function () { 21 let request = indexedDB.open("idb-s1", 1); 22 request.onerror = function() { 23 throw new Error("error opening db connection"); 24 }; 25 const db = await new Promise(done => { 26 request.onupgradeneeded = event => { 27 const _db = event.target.result; 28 const store1 = _db.createObjectStore("obj-s1", { keyPath: "id" }); 29 store1.transaction.oncomplete = () => { 30 done(_db); 31 }; 32 }; 33 }); 34 await new Promise(done => { 35 request.onsuccess = done; 36 }); 37 38 let transaction = db.transaction(["obj-s1"], "readwrite"); 39 const store1 = transaction.objectStore("obj-s1"); 40 store1.add({id: 6, name: "foo", email: "foo@bar.com"}); 41 store1.add({id: 7, name: "foo2", email: "foo2@bar.com"}); 42 await new Promise(success => { 43 transaction.oncomplete = success; 44 }); 45 46 db.close(); 47 48 request = indexedDB.open("idb-s2", 1); 49 const db2 = await new Promise(done => { 50 request.onupgradeneeded = event => { 51 const _db2 = event.target.result; 52 const store3 = 53 _db2.createObjectStore("obj-s2", { keyPath: "id3", autoIncrement: true }); 54 store3.createIndex("name2", "name2", { unique: true }); 55 store3.transaction.oncomplete = () => { 56 done(_db2); 57 }; 58 }; 59 }); 60 await new Promise(done => { 61 request.onsuccess = done; 62 }); 63 64 transaction = db2.transaction(["obj-s2"], "readwrite"); 65 const store3 = transaction.objectStore("obj-s2"); 66 store3.add({id3: 16, name2: "foo", email: "foo@bar.com"}); 67 await new Promise(success => { 68 transaction.oncomplete = success; 69 }); 70 71 db2.close(); 72 dump("added indexedDB from secured iframe\n"); 73 }; 74 75 function deleteDB(dbName) { 76 return new Promise(resolve => { 77 dump("removing database " + dbName + " from " + document.location + "\n"); 78 indexedDB.deleteDatabase(dbName).onsuccess = resolve; 79 }); 80 } 81 82 window.setup = async function () { 83 await idbGenerator(); 84 }; 85 86 window.clear = async function () { 87 await deleteDB("idb-s1"); 88 await deleteDB("idb-s2"); 89 90 dump("removed indexedDB data from " + document.location + "\n"); 91 }; 92 </script> 93 </body> 94 </html>