dom/indexedDB/test/unit/test_transaction_lifetimes.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   let request = indexedDB.open(this.window ? window.location.pathname : "Splendid Test", 1);
    11   request.onerror = errorHandler;
    12   request.onupgradeneeded = grabEventAndContinueHandler;
    13   request.onsuccess = unexpectedSuccessHandler;
    14   let event = yield undefined;
    16   let db = event.target.result;
    17   db.onerror = errorHandler;
    19   event.target.transaction.onerror = errorHandler;
    20   event.target.transaction.oncomplete = grabEventAndContinueHandler;
    22   let os = db.createObjectStore("foo", { autoIncrement: true });
    23   let index = os.createIndex("bar", "foo.bar");
    24   event = yield undefined;
    26   is(request.transaction, event.target,
    27      "request.transaction should still be set");
    29   request.onsuccess = grabEventAndContinueHandler;
    30   event = yield undefined;
    32   is(request.transaction, null, "request.transaction should be cleared");
    34   let transaction = db.transaction("foo", "readwrite");
    36   os = transaction.objectStore("foo");
    37   // Place a request to keep the transaction alive long enough for our
    38   // executeSoon.
    39   let requestComplete = false;
    41   let wasAbleToGrabObjectStoreOutsideOfCallback = false;
    42   let wasAbleToGrabIndexOutsideOfCallback = false;
    43   executeSoon(function() {
    44     ok(!requestComplete, "Ordering is correct.");
    45     wasAbleToGrabObjectStoreOutsideOfCallback = !!transaction.objectStore("foo");
    46     wasAbleToGrabIndexOutsideOfCallback =
    47       !!transaction.objectStore("foo").index("bar");
    48   });
    50   request = os.add({});
    51   request.onerror = errorHandler;
    52   request.onsuccess = grabEventAndContinueHandler;
    54   event = yield undefined;
    56   requestComplete = true;
    58   ok(wasAbleToGrabObjectStoreOutsideOfCallback,
    59      "Should be able to get objectStore");
    60   ok(wasAbleToGrabIndexOutsideOfCallback,
    61      "Should be able to get index");
    63   transaction.oncomplete = grabEventAndContinueHandler;
    64   yield undefined;
    66   try {
    67     transaction.objectStore("foo");
    68     ok(false, "Should have thrown!");
    69   }
    70   catch (e) {
    71     ok(e instanceof DOMException, "Got database exception.");
    72     is(e.name, "InvalidStateError", "Good error.");
    73     is(e.code, DOMException.INVALID_STATE_ERR, "Good error code.");
    74   }
    76   continueToNextStep();
    77   yield undefined;
    79   try {
    80     transaction.objectStore("foo");
    81     ok(false, "Should have thrown!");
    82   }
    83   catch (e) {
    84     ok(e instanceof DOMException, "Got database exception.");
    85     is(e.name, "InvalidStateError", "Good error.");
    86     is(e.code, DOMException.INVALID_STATE_ERR, "Good error code.");
    87   }
    89   finishTest();
    90   yield undefined;
    91 }

mercurial