tor-browser

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

test_open_for_principal.js (2419B)


      1 /**
      2 * Any copyright is dedicated to the Public Domain.
      3 * http://creativecommons.org/publicdomain/zero/1.0/
      4 */
      5 
      6 /* exported testGenerator */
      7 var testGenerator = testSteps();
      8 
      9 function* testSteps() {
     10  const name = this.window ? window.location.pathname : "Splendid Test";
     11 
     12  const objectStoreName = "Foo";
     13 
     14  const data = { key: 1, value: "bar" };
     15 
     16  let request = indexedDB.open(name, 1);
     17  request.onerror = errorHandler;
     18  request.onupgradeneeded = grabEventAndContinueHandler;
     19  request.onsuccess = grabEventAndContinueHandler;
     20  let event = yield undefined;
     21 
     22  is(event.type, "upgradeneeded", "Got correct event type");
     23 
     24  let db = event.target.result;
     25  db.onerror = errorHandler;
     26 
     27  let objectStore = db.createObjectStore(objectStoreName, {});
     28 
     29  event = yield undefined;
     30 
     31  is(event.type, "success", "Got correct event type");
     32 
     33  objectStore = db
     34    .transaction([objectStoreName], "readwrite")
     35    .objectStore(objectStoreName);
     36 
     37  request = objectStore.get(data.key);
     38  request.onsuccess = grabEventAndContinueHandler;
     39  event = yield undefined;
     40 
     41  is(event.target.result, null, "Got no data");
     42 
     43  request = objectStore.add(data.value, data.key);
     44  request.onsuccess = grabEventAndContinueHandler;
     45  event = yield undefined;
     46 
     47  is(event.target.result, data.key, "Got correct key");
     48 
     49  let uri = Services.io.newURI("http://appdata.example.com");
     50  let principal = Services.scriptSecurityManager.createContentPrincipal(
     51    uri,
     52    {}
     53  );
     54 
     55  request = indexedDB.openForPrincipal(principal, name, 1);
     56  request.onerror = errorHandler;
     57  request.onupgradeneeded = grabEventAndContinueHandler;
     58  request.onsuccess = grabEventAndContinueHandler;
     59  event = yield undefined;
     60 
     61  is(event.type, "upgradeneeded", "Got correct event type");
     62 
     63  db = event.target.result;
     64  db.onerror = errorHandler;
     65 
     66  objectStore = db.createObjectStore(objectStoreName, {});
     67 
     68  event = yield undefined;
     69 
     70  is(event.type, "success", "Got correct event type");
     71 
     72  objectStore = db.transaction([objectStoreName]).objectStore(objectStoreName);
     73 
     74  request = objectStore.get(data.key);
     75  request.onsuccess = grabEventAndContinueHandler;
     76  event = yield undefined;
     77 
     78  is(event.target.result, null, "Got no data");
     79 
     80  db.close();
     81 
     82  request = indexedDB.deleteForPrincipal(principal, name);
     83  request.onerror = errorHandler;
     84  request.onsuccess = grabEventAndContinueHandler;
     85  event = yield undefined;
     86 
     87  finishTest();
     88  yield undefined;
     89 }