tor-browser

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

test_abort_deleted_objectStore.js (2308B)


      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 storeName_ToBeDeleted = "test store to be deleted";
     12 
     13  info("Create objectStore in v1.");
     14  let request = indexedDB.open(name, 1);
     15  request.onerror = errorHandler;
     16  request.onupgradeneeded = grabEventAndContinueHandler;
     17  request.onsuccess = unexpectedSuccessHandler;
     18  let event = yield undefined;
     19 
     20  let db = event.target.result;
     21  let txn = event.target.transaction;
     22 
     23  is(db.objectStoreNames.length, 0, "Correct objectStoreNames list");
     24 
     25  // create objectstore to be deleted later in v2.
     26  db.createObjectStore(storeName_ToBeDeleted, { keyPath: "foo" });
     27  is(db.objectStoreNames.length, 1, "Correct objectStoreNames list");
     28  ok(db.objectStoreNames.contains(storeName_ToBeDeleted), "Correct name");
     29 
     30  txn.oncomplete = continueToNextStepSync;
     31  yield undefined;
     32  request.onsuccess = continueToNextStep;
     33  yield undefined;
     34  db.close();
     35 
     36  info("Delete objectStore in v2.");
     37  request = indexedDB.open(name, 2);
     38  request.onerror = errorHandler;
     39  request.onupgradeneeded = grabEventAndContinueHandler;
     40  request.onsuccess = unexpectedSuccessHandler;
     41  event = yield undefined;
     42 
     43  db = event.target.result;
     44  txn = event.target.transaction;
     45 
     46  let objectStore = txn.objectStore(storeName_ToBeDeleted);
     47  ok(objectStore, "objectStore is available");
     48 
     49  db.deleteObjectStore(storeName_ToBeDeleted);
     50 
     51  // Aborting the transaction.
     52  request.onerror = expectedErrorHandler("AbortError");
     53  txn.abort();
     54  try {
     55    objectStore.get("foo");
     56    ok(
     57      false,
     58      "TransactionInactiveError shall be thrown if the transaction is inactive."
     59    );
     60  } catch (e) {
     61    ok(e instanceof DOMException, "got a database exception");
     62    is(e.name, "TransactionInactiveError", "correct error");
     63  }
     64 
     65  yield undefined;
     66 
     67  try {
     68    objectStore.get("foo");
     69    ok(
     70      false,
     71      "TransactionInactiveError shall be thrown if the transaction is inactive."
     72    );
     73  } catch (e) {
     74    ok(e instanceof DOMException, "got a database exception");
     75    is(e.name, "TransactionInactiveError", "correct error");
     76  }
     77 
     78  finishTest();
     79 }