tor-browser

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

test_overlapping_transactions.js (2746B)


      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  const objectStores = ["foo", "bar"];
     12 
     13  let request = indexedDB.open(name, 1);
     14  request.onerror = errorHandler;
     15  request.onupgradeneeded = grabEventAndContinueHandler;
     16  let event = yield undefined;
     17 
     18  let db = event.target.result;
     19  is(db.objectStoreNames.length, 0, "Correct objectStoreNames list");
     20 
     21  event.target.onsuccess = grabEventAndContinueHandler;
     22  for (let i in objectStores) {
     23    db.createObjectStore(objectStores[i], { autoIncrement: true });
     24  }
     25  event = yield undefined;
     26 
     27  is(
     28    db.objectStoreNames.length,
     29    objectStores.length,
     30    "Correct objectStoreNames list"
     31  );
     32 
     33  for (let i = 0; i < 50; i++) {
     34    let stepNumber = 0;
     35 
     36    request = db.transaction(["foo"], "readwrite").objectStore("foo").add({});
     37    request.onerror = errorHandler;
     38    request.onsuccess = function (event) {
     39      is(stepNumber, 1, "This callback came first");
     40      stepNumber++;
     41      event.target.transaction.oncomplete = grabEventAndContinueHandler;
     42    };
     43 
     44    request = db.transaction(["foo"], "readwrite").objectStore("foo").add({});
     45    request.onerror = errorHandler;
     46    request.onsuccess = function (event) {
     47      is(stepNumber, 2, "This callback came second");
     48      stepNumber++;
     49      event.target.transaction.oncomplete = grabEventAndContinueHandler;
     50    };
     51 
     52    request = db
     53      .transaction(["foo", "bar"], "readwrite")
     54      .objectStore("bar")
     55      .add({});
     56    request.onerror = errorHandler;
     57    request.onsuccess = function (event) {
     58      is(stepNumber, 3, "This callback came third");
     59      stepNumber++;
     60      event.target.transaction.oncomplete = grabEventAndContinueHandler;
     61    };
     62 
     63    request = db
     64      .transaction(["foo", "bar"], "readwrite")
     65      .objectStore("bar")
     66      .add({});
     67    request.onerror = errorHandler;
     68    request.onsuccess = function (event) {
     69      is(stepNumber, 4, "This callback came fourth");
     70      stepNumber++;
     71      event.target.transaction.oncomplete = grabEventAndContinueHandler;
     72    };
     73 
     74    request = db.transaction(["bar"], "readwrite").objectStore("bar").add({});
     75    request.onerror = errorHandler;
     76    request.onsuccess = function (event) {
     77      is(stepNumber, 5, "This callback came fifth");
     78      stepNumber++;
     79      event.target.transaction.oncomplete = grabEventAndContinueHandler;
     80    };
     81 
     82    stepNumber++;
     83    yield undefined;
     84    yield undefined;
     85    yield undefined;
     86    yield undefined;
     87    yield undefined;
     88 
     89    is(stepNumber, 6, "All callbacks received");
     90  }
     91 
     92  finishTest();
     93 }