tor-browser

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

browser_indexedDB.js (1979B)


      1 "use strict";
      2 
      3 CookiePolicyHelper.runTest("IndexedDB", {
      4  cookieJarAccessAllowed: async w => {
      5    w.indexedDB.open("test", "1");
      6    ok(true, "IDB should be allowed");
      7  },
      8 
      9  cookieJarAccessDenied: async w => {
     10    try {
     11      w.indexedDB.open("test", "1");
     12      ok(false, "IDB should be blocked");
     13    } catch (e) {
     14      ok(true, "IDB should be blocked");
     15      is(e.name, "SecurityError", "We want a security error message.");
     16    }
     17  },
     18 });
     19 
     20 CookiePolicyHelper.runTest("IndexedDB in workers", {
     21  cookieJarAccessAllowed: async w => {
     22    function nonBlockCode() {
     23      indexedDB.open("test", "1");
     24      postMessage(true);
     25    }
     26 
     27    let blob = new w.Blob([nonBlockCode.toString() + "; nonBlockCode();"]);
     28    ok(blob, "Blob has been created");
     29 
     30    let blobURL = w.URL.createObjectURL(blob);
     31    ok(blobURL, "Blob URL has been created");
     32 
     33    let worker = new w.Worker(blobURL);
     34    ok(worker, "Worker has been created");
     35 
     36    await new w.Promise((resolve, reject) => {
     37      worker.onmessage = function (e) {
     38        if (e.data) {
     39          resolve();
     40        } else {
     41          reject();
     42        }
     43      };
     44 
     45      worker.onerror = function () {
     46        reject();
     47      };
     48    });
     49  },
     50 
     51  cookieJarAccessDenied: async w => {
     52    function blockCode() {
     53      try {
     54        indexedDB.open("test", "1");
     55        postMessage(false);
     56      } catch (e) {
     57        postMessage(e.name == "SecurityError");
     58      }
     59    }
     60 
     61    let blob = new w.Blob([blockCode.toString() + "; blockCode();"]);
     62    ok(blob, "Blob has been created");
     63 
     64    let blobURL = w.URL.createObjectURL(blob);
     65    ok(blobURL, "Blob URL has been created");
     66 
     67    let worker = new w.Worker(blobURL);
     68    ok(worker, "Worker has been created");
     69 
     70    await new w.Promise((resolve, reject) => {
     71      worker.onmessage = function (e) {
     72        if (e.data) {
     73          resolve();
     74        } else {
     75          reject();
     76        }
     77      };
     78 
     79      worker.onerror = function () {
     80        reject();
     81      };
     82    });
     83  },
     84 });