tor-browser

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

test_objectCursors.js (2215B)


      1 /**
      2 * Any copyright is dedicated to the Public Domain.
      3 * http://creativecommons.org/publicdomain/zero/1.0/
      4 */
      5 
      6 var testGenerator = testSteps();
      7 
      8 function* testSteps() {
      9  const name = this.window ? window.location.pathname : "Splendid Test";
     10 
     11  const objectStores = [
     12    { name: "a", autoIncrement: false },
     13    { name: "b", autoIncrement: true },
     14  ];
     15 
     16  const indexes = [
     17    { name: "a", options: {} },
     18    { name: "b", options: { unique: true } },
     19  ];
     20 
     21  var j = 0;
     22  for (let i in objectStores) {
     23    let request = indexedDB.open(name, ++j);
     24    request.onerror = errorHandler;
     25    request.onupgradeneeded = grabEventAndContinueHandler;
     26    let event = yield undefined;
     27 
     28    let db = event.target.result;
     29    db.onversionchange = function (event) {
     30      event.target.close();
     31    };
     32 
     33    let objectStore = db.createObjectStore(objectStores[i].name, {
     34      keyPath: "id",
     35      autoIncrement: objectStores[i].autoIncrement,
     36    });
     37 
     38    for (let j in indexes) {
     39      objectStore.createIndex(indexes[j].name, "name", indexes[j].options);
     40    }
     41 
     42    let data = { name: "Ben" };
     43    if (!objectStores[i].autoIncrement) {
     44      data.id = 1;
     45    }
     46 
     47    request = objectStore.add(data);
     48    request.onerror = errorHandler;
     49    request.onsuccess = grabEventAndContinueHandler;
     50    event = yield undefined;
     51 
     52    ok(event.target.result == 1 || event.target.result == 2, "Good id");
     53  }
     54 
     55  executeSoon(function () {
     56    testGenerator.next();
     57  });
     58  yield undefined;
     59 
     60  let request = indexedDB.open(name, j);
     61  request.onerror = errorHandler;
     62  request.onsuccess = grabEventAndContinueHandler;
     63  let event = yield undefined;
     64 
     65  let db = event.target.result;
     66 
     67  for (let i in objectStores) {
     68    for (let j in indexes) {
     69      let objectStore = db
     70        .transaction(objectStores[i].name)
     71        .objectStore(objectStores[i].name);
     72      let index = objectStore.index(indexes[j].name);
     73 
     74      request = index.openCursor();
     75      request.onerror = errorHandler;
     76      request.onsuccess = function (event) {
     77        is(event.target.result.value.name, "Ben", "Good object");
     78        executeSoon(function () {
     79          testGenerator.next();
     80        });
     81      };
     82      yield undefined;
     83    }
     84  }
     85 
     86  finishTest();
     87 }