dom/indexedDB/test/unit/test_setVersion_abort.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /**
     2  * Any copyright is dedicated to the Public Domain.
     3  * http://creativecommons.org/publicdomain/zero/1.0/
     4  */
     6 var testGenerator = testSteps();
     8 function testSteps()
     9 {
    10   const name = this.window ? window.location.pathname : "Splendid Test";
    12   let request = indexedDB.open(name, 1);
    13   request.onerror = errorHandler;
    14   request.onsuccess = unexpectedSuccessHandler;
    15   request.onupgradeneeded = grabEventAndContinueHandler;
    16   let event = yield undefined;
    18   let db = event.target.result;
    20   let objectStore = db.createObjectStore("foo");
    21   let index = objectStore.createIndex("bar", "baz");
    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");
    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();
    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");
    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   }
    46   event = yield undefined;
    47   is(event.type, "abort", "Got transaction abort event");
    48   is(event.target, transaction, "Right target");
    49   is(event.target.transaction, null, "No transaction");
    51   is(db.version, 0, "Correct version");
    52   is(db.objectStoreNames.length, 0, "Correct objectStoreNames length");
    53   is(objectStore.indexNames.length, 0, "Correct indexNames length");
    55   request.onerror = grabEventAndContinueHandler;
    56   request.onupgradeneeded = unexpectedSuccessHandler;
    58   event = yield undefined;
    60   is(event.type, "error", "Got request error event");
    61   is(event.target, request, "Right target");
    62   is(event.target.transaction, null, "No transaction");
    64   event.preventDefault();
    66   request = indexedDB.open(name, 1);
    67   request.onerror = errorHandler;
    68   request.onsuccess = unexpectedSuccessHandler;
    69   request.onupgradeneeded = grabEventAndContinueHandler;
    70   event = yield undefined;
    72   is(event.type, "upgradeneeded", "Got upgradeneeded event");
    74   let db2 = event.target.result;
    76   isnot(db, db2, "Should give a different db instance");
    77   is(db2.version, 1, "Correct version");
    78   is(db2.objectStoreNames.length, 0, "Correct objectStoreNames length");
    80   let objectStore2 = db2.createObjectStore("foo");
    81   let index2 = objectStore2.createIndex("bar", "baz");
    83   request.onsuccess = grabEventAndContinueHandler;
    84   request.onupgradeneeded = unexpectedSuccessHandler;
    85   event = yield undefined;
    87   is(event.target.result, db2, "Correct target");
    88   is(event.type, "success", "Got success event");
    89   is(db2.version, 1, "Correct version");
    90   is(db2.objectStoreNames.length, 1, "Correct objectStoreNames length");
    91   is(objectStore2.indexNames.length, 1, "Correct indexNames length");
    92   is(db.version, 0, "Correct version still");
    93   is(db.objectStoreNames.length, 0, "Correct objectStoreNames length still");
    94   is(objectStore.indexNames.length, 0, "Correct indexNames length still");
    96   finishTest();
    97   yield undefined;
    98 }

mercurial