tor-browser

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

test_setVersion_exclusion.js (2889B)


      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.onupgradeneeded = grabEventAndContinueHandler;
     15  request.onsuccess = unexpectedSuccessHandler;
     16 
     17  let request2 = indexedDB.open(name, 2);
     18  request2.onerror = errorHandler;
     19  request2.onupgradeneeded = unexpectedSuccessHandler;
     20  request2.onsuccess = unexpectedSuccessHandler;
     21 
     22  let event = yield undefined;
     23  is(event.type, "upgradeneeded", "Expect an upgradeneeded event");
     24  is(event.target, request, "Event should be fired on the request");
     25  ok(event.target.result instanceof IDBDatabase, "Expect a database here");
     26 
     27  let db = event.target.result;
     28  is(db.version, 1, "Database has correct version");
     29 
     30  db.onupgradeneeded = function () {
     31    ok(
     32      false,
     33      "our ongoing VERSION_CHANGE transaction should exclude any others!"
     34    );
     35  };
     36 
     37  db.createObjectStore("foo");
     38 
     39  try {
     40    db.transaction("foo");
     41    ok(false, "Transactions should be disallowed now!");
     42  } catch (e) {
     43    ok(e instanceof DOMException, "Expect a DOMException");
     44    is(e.name, "InvalidStateError", "Expect an InvalidStateError");
     45    is(e.code, DOMException.INVALID_STATE_ERR, "Expect an INVALID_STATE_ERR");
     46  }
     47 
     48  request.onupgradeneeded = unexpectedSuccessHandler;
     49  request.transaction.oncomplete = grabEventAndContinueHandler;
     50 
     51  event = yield undefined;
     52  is(event.type, "complete", "Got complete event");
     53 
     54  try {
     55    db.transaction("foo");
     56    ok(true, "Transactions should be allowed now!");
     57  } catch (e) {
     58    ok(false, "Transactions should be allowed now!");
     59  }
     60 
     61  request.onsuccess = grabEventAndContinueHandler;
     62 
     63  event = yield undefined;
     64  is(event.type, "success", "Expect a success event");
     65  is(event.target.result, db, "Same database");
     66 
     67  db.onversionchange = function () {
     68    ok(true, "next setVersion was unblocked appropriately");
     69    db.close();
     70  };
     71 
     72  try {
     73    db.transaction("foo");
     74    ok(true, "Transactions should be allowed now!");
     75  } catch (e) {
     76    ok(false, "Transactions should be allowed now!");
     77  }
     78 
     79  request.onsuccess = unexpectedSuccessHandler;
     80  request2.onupgradeneeded = grabEventAndContinueHandler;
     81 
     82  event = yield undefined;
     83  is(event.type, "upgradeneeded", "Expect an upgradeneeded event");
     84 
     85  db = event.target.result;
     86  is(db.version, 2, "Database has correct version");
     87 
     88  request2.onupgradeneeded = unexpectedSuccessHandler;
     89  request2.onsuccess = grabEventAndContinueHandler;
     90 
     91  event = yield undefined;
     92  is(event.type, "success", "Expect a success event");
     93  is(event.target.result, db, "Same database");
     94  is(db.version, 2, "Database has correct version");
     95 
     96  finishTest();
     97 }