tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

storage-secured-iframe-usercontextid.html (2530B)


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