chromium/third_party/blink/web_tests/storage/indexeddb/resources/request-continue-abort.js

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', {durability: 'relaxed'})");

    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();
    };
}