storage-secured-iframe.html (2560B)
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 document.cookie = "sc1=foobar;"; 13 localStorage.setItem("iframe-s-ls1", "foobar"); 14 sessionStorage.setItem("iframe-s-ss1", "foobar-2"); 15 16 const idbGenerator = async function () { 17 let request = indexedDB.open("idb-s1", 1); 18 request.onerror = function() { 19 throw new Error("error opening db connection"); 20 }; 21 const db = await new Promise(done => { 22 request.onupgradeneeded = event => { 23 const dbResult = event.target.result; 24 const store1 = dbResult.createObjectStore("obj-s1", { keyPath: "id" }); 25 store1.transaction.oncomplete = () => { 26 done(dbResult); 27 }; 28 }; 29 }); 30 await new Promise(done => { 31 request.onsuccess = done; 32 }); 33 34 let transaction = db.transaction(["obj-s1"], "readwrite"); 35 const store1 = transaction.objectStore("obj-s1"); 36 store1.add({id: 6, name: "foo", email: "foo@bar.com"}); 37 store1.add({id: 7, name: "foo2", email: "foo2@bar.com"}); 38 await new Promise(success => { 39 transaction.oncomplete = success; 40 }); 41 42 db.close(); 43 44 request = indexedDB.open("idb-s2", 1); 45 const db2 = await new Promise(done => { 46 request.onupgradeneeded = event => { 47 const db2Result = event.target.result; 48 const store3 = 49 db2Result.createObjectStore("obj-s2", { keyPath: "id3", autoIncrement: true }); 50 store3.createIndex("name2", "name2", { unique: true }); 51 store3.transaction.oncomplete = () => { 52 done(db2Result); 53 }; 54 }; 55 }); 56 await new Promise(done => { 57 request.onsuccess = done; 58 }); 59 60 transaction = db2.transaction(["obj-s2"], "readwrite"); 61 const store3 = transaction.objectStore("obj-s2"); 62 store3.add({id3: 16, name2: "foo", email: "foo@bar.com"}); 63 await new Promise(success => { 64 transaction.oncomplete = success; 65 }); 66 67 db2.close(); 68 dump("added cookies and stuff from secured iframe\n"); 69 } 70 71 function deleteDB(dbName) { 72 return new Promise(resolve => { 73 dump("removing database " + dbName + " from " + document.location + "\n"); 74 indexedDB.deleteDatabase(dbName).onsuccess = resolve; 75 }); 76 } 77 78 window.setup = async function () { 79 await idbGenerator(); 80 }; 81 82 window.clear = async function () { 83 document.cookie = "sc1=; expires=Thu, 01 Jan 1970 00:00:00 GMT"; 84 85 localStorage.clear(); 86 87 await deleteDB("idb-s1"); 88 await deleteDB("idb-s2"); 89 90 console.log("removed cookies and stuff from secured iframe"); 91 } 92 </script> 93 </body> 94 </html>