|
1 /** |
|
2 * Any copyright is dedicated to the Public Domain. |
|
3 * http://creativecommons.org/publicdomain/zero/1.0/ |
|
4 */ |
|
5 |
|
6 var testGenerator = testSteps(); |
|
7 |
|
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; |
|
14 |
|
15 let db = event.target.result; |
|
16 |
|
17 event.target.onsuccess = continueToNextStep; |
|
18 |
|
19 let objectStore = db.createObjectStore("foo"); |
|
20 objectStore.add({}, 1).onerror = errorHandler; |
|
21 |
|
22 yield undefined; |
|
23 |
|
24 objectStore = db.transaction("foo").objectStore("foo"); |
|
25 |
|
26 let transaction = objectStore.transaction; |
|
27 transaction.oncomplete = unexpectedSuccessHandler; |
|
28 transaction.onabort = grabEventAndContinueHandler; |
|
29 |
|
30 let sawError = false; |
|
31 |
|
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 } |
|
39 |
|
40 transaction.abort(); |
|
41 |
|
42 event = yield undefined; |
|
43 |
|
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 } |
|
56 |
|
57 finishTest(); |
|
58 yield undefined; |
|
59 } |
|
60 |