tor-browser

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

test_objectStore_remove_values.js (2531B)


      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  var data = [
     13    {
     14      name: "inline key; key generator",
     15      autoIncrement: true,
     16      storedObject: { name: "Lincoln" },
     17      keyName: "id",
     18      keyValue: undefined,
     19    },
     20    {
     21      name: "inline key; no key generator",
     22      autoIncrement: false,
     23      storedObject: { id: 1, name: "Lincoln" },
     24      keyName: "id",
     25      keyValue: undefined,
     26    },
     27    {
     28      name: "out of line key; key generator",
     29      autoIncrement: true,
     30      storedObject: { name: "Lincoln" },
     31      keyName: undefined,
     32      keyValue: undefined,
     33    },
     34    {
     35      name: "out of line key; no key generator",
     36      autoIncrement: false,
     37      storedObject: { name: "Lincoln" },
     38      keyName: null,
     39      keyValue: 1,
     40    },
     41  ];
     42 
     43  for (let i = 0; i < data.length; i++) {
     44    let test = data[i];
     45 
     46    let request = indexedDB.open(name, i + 1);
     47    request.onerror = errorHandler;
     48    request.onupgradeneeded = grabEventAndContinueHandler;
     49    request.onsuccess = grabEventAndContinueHandler;
     50    let event = yield undefined;
     51 
     52    let db = event.target.result;
     53    db.onversionchange = function (event) {
     54      event.target.close();
     55    };
     56 
     57    let objectStore = db.createObjectStore(test.name, {
     58      keyPath: test.keyName,
     59      autoIncrement: test.autoIncrement,
     60    });
     61 
     62    request = objectStore.add(test.storedObject, test.keyValue);
     63    request.onerror = errorHandler;
     64    request.onsuccess = grabEventAndContinueHandler;
     65    event = yield undefined;
     66 
     67    let id = event.target.result;
     68    request = objectStore.get(id);
     69    request.onerror = errorHandler;
     70    request.onsuccess = grabEventAndContinueHandler;
     71    event = yield undefined;
     72 
     73    // Sanity check!
     74    is(
     75      test.storedObject.name,
     76      event.target.result.name,
     77      "The correct object was stored."
     78    );
     79 
     80    request = objectStore.delete(id);
     81    request.onerror = errorHandler;
     82    request.onsuccess = grabEventAndContinueHandler;
     83    event = yield undefined;
     84 
     85    // Make sure it was removed.
     86    request = objectStore.get(id);
     87    request.onerror = errorHandler;
     88    request.onsuccess = grabEventAndContinueHandler;
     89    event = yield undefined;
     90 
     91    ok(event.target.result === undefined, "Object was deleted");
     92 
     93    // Wait for success
     94    yield undefined;
     95  }
     96 
     97  finishTest();
     98 }