test_success_events_after_abort.js (1397B)
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 let request = indexedDB.open( 11 this.window ? window.location.pathname : "Splendid Test", 12 1 13 ); 14 request.onerror = errorHandler; 15 request.onupgradeneeded = grabEventAndContinueHandler; 16 let event = yield undefined; 17 18 let db = event.target.result; 19 20 event.target.onsuccess = continueToNextStep; 21 22 let objectStore = db.createObjectStore("foo"); 23 objectStore.add({}, 1).onerror = errorHandler; 24 25 yield undefined; 26 27 objectStore = db.transaction("foo").objectStore("foo"); 28 29 let transaction = objectStore.transaction; 30 transaction.oncomplete = unexpectedSuccessHandler; 31 transaction.onabort = grabEventAndContinueHandler; 32 33 let sawError = false; 34 35 request = objectStore.get(1); 36 request.onsuccess = unexpectedSuccessHandler; 37 request.onerror = function (event) { 38 is(event.target.error.name, "AbortError", "Good error"); 39 sawError = true; 40 event.preventDefault(); 41 }; 42 43 transaction.abort(); 44 45 event = yield undefined; 46 47 is(event.type, "abort", "Got abort event"); 48 is(sawError, true, "Saw get() error"); 49 if (this.window) { 50 // Make sure the success event isn't queued somehow. 51 SpecialPowers.Services.tm.spinEventLoopUntilEmpty(); 52 } 53 54 finishTest(); 55 }