storage-listings-usercontextid.html (4058B)
1 <!DOCTYPE HTML> 2 <html> 3 <!-- 4 Storage inspector front end for userContextId - tests 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/client/storage/test/storage-unsecured-iframe-usercontextid.html"></iframe> 12 <iframe src="https://sectest1.example.org:443/browser/devtools/client/storage/test/storage-secured-iframe-usercontextid.html"></iframe> 13 <script type="application/javascript"> 14 "use strict"; 15 const partialHostname = location.hostname.match(/^[^.]+(\..*)$/)[1]; 16 const cookieExpiresTime1 = 2000000000000; 17 const cookieExpiresTime2 = 2000000001000; 18 // Setting up some cookies to eat. 19 document.cookie = "c1uc1=foobar; expires=" + 20 new Date(cookieExpiresTime1).toGMTString() + "; path=/browser"; 21 document.cookie = "cs2uc1=sessionCookie; path=/; domain=" + partialHostname; 22 document.cookie = "c3uc1=foobar-2; expires=" + 23 new Date(cookieExpiresTime2).toGMTString() + "; path=/"; 24 // ... and some local storage items .. 25 localStorage.setItem("ls1uc1", "foobar"); 26 localStorage.setItem("ls2uc1", "foobar-2"); 27 // ... and finally some session storage items too 28 sessionStorage.setItem("ss1uc1", "foobar-3"); 29 dump("added cookies and storage from main page\n"); 30 31 const idbGenerator = async function () { 32 let request = indexedDB.open("idb1uc1", 1); 33 request.onerror = function() { 34 throw new Error("error opening db connection"); 35 }; 36 const db = await new Promise(done => { 37 request.onupgradeneeded = event => { 38 const _db = event.target.result; 39 const store1 = _db.createObjectStore("obj1uc1", { keyPath: "id" }); 40 store1.createIndex("name", "name", { unique: false }); 41 store1.createIndex("email", "email", { unique: true }); 42 _db.createObjectStore("obj2uc1", { keyPath: "id2" }); 43 store1.transaction.oncomplete = () => { 44 done(_db); 45 }; 46 }; 47 }); 48 49 // Prevents AbortError 50 await new Promise(done => { 51 request.onsuccess = done; 52 }); 53 54 const transaction = db.transaction(["obj1uc1", "obj2uc1"], "readwrite"); 55 const store1 = transaction.objectStore("obj1uc1"); 56 const store2 = transaction.objectStore("obj2uc1"); 57 store1.add({id: 1, name: "foo", email: "foo@bar.com"}); 58 store1.add({id: 2, name: "foo2", email: "foo2@bar.com"}); 59 store1.add({id: 3, name: "foo2", email: "foo3@bar.com"}); 60 store2.add({ 61 id2: 1, 62 name: "foo", 63 email: "foo@bar.com", 64 extra: "baz" 65 }); 66 // Prevents AbortError during close() 67 await new Promise(success => { 68 transaction.oncomplete = success; 69 }); 70 71 db.close(); 72 73 request = indexedDB.open("idb2uc1", 1); 74 const db2 = await new Promise(done => { 75 request.onupgradeneeded = event => { 76 const _db2 = event.target.result; 77 const store3 = _db2.createObjectStore("obj3uc1", { keyPath: "id3" }); 78 store3.createIndex("name2", "name2", { unique: true }); 79 store3.transaction.oncomplete = () => { 80 done(_db2); 81 } 82 }; 83 }); 84 // Prevents AbortError during close() 85 await new Promise(done => { 86 request.onsuccess = done; 87 }); 88 db2.close(); 89 90 dump("added indexedDB from main page\n"); 91 }; 92 93 function deleteDB(dbName) { 94 return new Promise(resolve => { 95 dump("removing database " + dbName + " from " + document.location + "\n"); 96 indexedDB.deleteDatabase(dbName).onsuccess = resolve; 97 }); 98 } 99 100 async function fetchPut(cache, url) { 101 const response = await fetch(url); 102 await cache.put(url, response); 103 } 104 105 const cacheGenerator = async function () { 106 const cache = await caches.open("plopuc1"); 107 await fetchPut(cache, "404_cached_file.js"); 108 await fetchPut(cache, "browser_storage_basic.js"); 109 }; 110 111 window.setup = async function () { 112 await idbGenerator(); 113 114 if (window.caches) { 115 await cacheGenerator(); 116 } 117 }; 118 119 window.clear = async function () { 120 await deleteDB("idb1uc1"); 121 await deleteDB("idb2uc1"); 122 123 if (window.caches) { 124 await caches.delete("plopuc1"); 125 } 126 127 dump("removed indexedDB and cache data from " + document.location + "\n"); 128 }; 129 </script> 130 </body> 131 </html>