tor-browser

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

test_setVersion_abort.js (3292B)


      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  let request = indexedDB.open(name, 1);
     13  request.onerror = errorHandler;
     14  request.onsuccess = unexpectedSuccessHandler;
     15  request.onupgradeneeded = grabEventAndContinueHandler;
     16  let event = yield undefined;
     17 
     18  let db = event.target.result;
     19 
     20  let objectStore = db.createObjectStore("foo");
     21  objectStore.createIndex("bar", "baz");
     22 
     23  is(db.version, 1, "Correct version");
     24  is(db.objectStoreNames.length, 1, "Correct objectStoreNames length");
     25  is(objectStore.indexNames.length, 1, "Correct indexNames length");
     26 
     27  let transaction = event.target.transaction;
     28  is(transaction.mode, "versionchange", "Correct transaction mode");
     29  transaction.oncomplete = unexpectedSuccessHandler;
     30  transaction.onabort = grabEventAndContinueHandler;
     31  transaction.abort();
     32 
     33  is(db.version, 0, "Correct version");
     34  is(db.objectStoreNames.length, 0, "Correct objectStoreNames length");
     35  is(objectStore.indexNames.length, 0, "Correct indexNames length");
     36 
     37  // Test that the db is actually closed.
     38  try {
     39    db.transaction("");
     40    ok(false, "Expect an exception");
     41  } catch (e) {
     42    ok(true, "Expect an exception");
     43    is(e.name, "InvalidStateError", "Expect an InvalidStateError");
     44  }
     45 
     46  event = yield undefined;
     47  is(event.type, "abort", "Got transaction abort event");
     48  is(event.target, transaction, "Right target");
     49 
     50  is(db.version, 0, "Correct version");
     51  is(db.objectStoreNames.length, 0, "Correct objectStoreNames length");
     52  is(objectStore.indexNames.length, 0, "Correct indexNames length");
     53 
     54  request.onerror = grabEventAndContinueHandler;
     55  request.onupgradeneeded = unexpectedSuccessHandler;
     56 
     57  event = yield undefined;
     58 
     59  is(event.type, "error", "Got request error event");
     60  is(event.target, request, "Right target");
     61  is(event.target.transaction, null, "No transaction");
     62 
     63  event.preventDefault();
     64 
     65  request = indexedDB.open(name, 1);
     66  request.onerror = errorHandler;
     67  request.onsuccess = unexpectedSuccessHandler;
     68  request.onupgradeneeded = grabEventAndContinueHandler;
     69  event = yield undefined;
     70 
     71  is(event.type, "upgradeneeded", "Got upgradeneeded event");
     72 
     73  let db2 = event.target.result;
     74 
     75  isnot(db, db2, "Should give a different db instance");
     76  is(db2.version, 1, "Correct version");
     77  is(db2.objectStoreNames.length, 0, "Correct objectStoreNames length");
     78 
     79  let objectStore2 = db2.createObjectStore("foo");
     80  objectStore2.createIndex("bar", "baz");
     81 
     82  request.onsuccess = grabEventAndContinueHandler;
     83  request.onupgradeneeded = unexpectedSuccessHandler;
     84  event = yield undefined;
     85 
     86  is(event.target.result, db2, "Correct target");
     87  is(event.type, "success", "Got success event");
     88  is(db2.version, 1, "Correct version");
     89  is(db2.objectStoreNames.length, 1, "Correct objectStoreNames length");
     90  is(objectStore2.indexNames.length, 1, "Correct indexNames length");
     91  is(db.version, 0, "Correct version still");
     92  is(db.objectStoreNames.length, 0, "Correct objectStoreNames length still");
     93  is(objectStore.indexNames.length, 0, "Correct indexNames length still");
     94 
     95  finishTest();
     96 }