tor-browser

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

test_setVersion_throw.js (1727B)


      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 : "test_setVersion_throw";
     11 
     12  // This test requires two databases. The first needs to be a low version
     13  // number that gets closed when a second higher version number database is
     14  // created. Then the upgradeneeded event for the second database throws an
     15  // exception and triggers an abort/close.
     16 
     17  let request = indexedDB.open(name, 1);
     18  request.onerror = errorHandler;
     19  request.onsuccess = grabEventAndContinueHandler;
     20  request.onupgradeneeded = function () {
     21    info("Got upgradeneeded event for db 1");
     22  };
     23  let event = yield undefined;
     24 
     25  is(event.type, "success", "Got success event for db 1");
     26 
     27  let db = event.target.result;
     28  db.onversionchange = function (event) {
     29    info("Got versionchange event for db 1");
     30    event.target.close();
     31  };
     32 
     33  executeSoon(continueToNextStepSync);
     34  yield undefined;
     35 
     36  request = indexedDB.open(name, 2);
     37  request.onerror = grabEventAndContinueHandler;
     38  request.onsuccess = unexpectedSuccessHandler;
     39  request.onupgradeneeded = function () {
     40    info("Got upgradeneeded event for db 2");
     41    expectUncaughtException(true);
     42    // eslint-disable-next-line no-undef
     43    trigger_js_exception_by_calling_a_nonexistent_function();
     44  };
     45  event = yield undefined;
     46 
     47  event.preventDefault();
     48 
     49  is(event.type, "error", "Got an error event for db 2");
     50  ok(event.target.error instanceof DOMException, "Request has a DOMException");
     51  is(event.target.error.name, "AbortError", "Request has AbortError");
     52 
     53  finishTest();
     54 }