if (this.importScripts) { importScripts('../../../resources/js-test.js'); importScripts('shared.js'); } description("Regression test for IDBRequest issue calling continue on a cursor then aborting."); indexedDBTest(prepareDatabase, testCursor); function prepareDatabase() { db = event.target.result; event.target.transaction.onabort = unexpectedAbortCallback; evalAndLog("db.createObjectStore('store')"); } function testCursor() { debug(""); debug("testCursor:"); evalAndLog("transaction = db.transaction('store', 'readwrite')"); evalAndLog("store = transaction.objectStore('store')"); request = evalAndLog("store.add('value1', 'key1')"); request.onerror = unexpectedErrorCallback; request = evalAndLog("store.add('value2', 'key2')"); request.onerror = unexpectedErrorCallback; debug(""); evalAndLog("state = 0"); evalAndLog("request = store.openCursor()"); request.onsuccess = function() { debug(""); debug("'success' event fired at request."); shouldBe("++state", "1"); evalAndLog("request.result.continue()"); transaction.abort(); }; request.onerror = function() { debug(""); debug("'error' event fired at request."); shouldBe("++state", "2"); }; transaction.oncomplete = unexpectedCompleteCallback; transaction.onabort = function() { debug(""); debug("'abort' event fired at transaction."); shouldBe("++state", "3"); finishJSTest(); }; }