dom/indexedDB/test/unit/test_success_events_after_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   let request = indexedDB.open(this.window ? window.location.pathname : "Splendid Test", 1);
    11   request.onerror = errorHandler;
    12   request.onupgradeneeded = grabEventAndContinueHandler;
    13   let event = yield undefined;
    15   let db = event.target.result;
    17   event.target.onsuccess = continueToNextStep;
    19   let objectStore = db.createObjectStore("foo");
    20   objectStore.add({}, 1).onerror = errorHandler;
    22   yield undefined;
    24   objectStore = db.transaction("foo").objectStore("foo");
    26   let transaction = objectStore.transaction;
    27   transaction.oncomplete = unexpectedSuccessHandler;
    28   transaction.onabort = grabEventAndContinueHandler;
    30   let sawError = false;
    32   request = objectStore.get(1);
    33   request.onsuccess = unexpectedSuccessHandler;
    34   request.onerror = function(event) {
    35     is(event.target.error.name, "AbortError", "Good error");
    36     sawError = true;
    37     event.preventDefault();
    38   }
    40   transaction.abort();
    42   event = yield undefined;
    44   is(event.type, "abort", "Got abort event");
    45   is(sawError, true, "Saw get() error");
    46   if (this.window) {
    47     // Make sure the success event isn't queued somehow.
    48     let comp = SpecialPowers.wrap(Components);
    49     let thread = comp.classes["@mozilla.org/thread-manager;1"]
    50                      .getService(comp.interfaces.nsIThreadManager)
    51                      .currentThread;
    52     while (thread.hasPendingEvents()) {
    53       thread.processNextEvent(false);
    54     }
    55   }
    57   finishTest();
    58   yield undefined;
    59 }

mercurial