chromium/third_party/blink/web_tests/storage/indexeddb/resources/intversion-pending-version-changes-ascending.js

if (this.importScripts) {
    importScripts('../../../resources/js-test.js');
    importScripts('shared.js');
}

description("Check processing of pending version change requests - increasing versions.");

indexedDBTest(null, function onConnection1Open(evt) {
    preamble(evt);
    db = event.target.result;

    request = evalAndLog("indexedDB.open(dbname, 2)");
    request.onblocked = connection2Blocked;
    request.onupgradeneeded = connection2UpgradeNeeded;
    request.onsuccess = connection2OpenSuccess;
    request.onerror = unexpectedErrorCallback;

    request = evalAndLog("indexedDB.open(dbname, 3)");
    request.onblocked = connection3Blocked;
    request.onupgradeneeded = connection3UpgradeNeeded;
    request.onsuccess = connection3OpenSuccess;
    request.onerror = unexpectedErrorCallback;

    debug("");
    debug("FIXME: The open call with higher version should execute first.");
});

function connection2Blocked(evt)
{
    preamble(evt);
    // Attempt to delay this until the third open has been processed;
    // not strictly necessary but will exercise IPC/event timing.
    setTimeout(function() {
        evalAndLog("db.close()");
    }, 0);
}

function connection2UpgradeNeeded(evt)
{
    preamble(evt);
    shouldBe("event.oldVersion", "1");
    shouldBe("event.newVersion", "2");
}

function connection2OpenSuccess(evt)
{
    preamble(evt);
    evalAndLog("db2 = event.target.result");
    shouldBe("db2.version", "2");
}

function connection3Blocked(evt)
{
    preamble(evt);
    evalAndLog("db2.close()");
}

function connection3UpgradeNeeded(evt)
{
    preamble(evt);
    shouldBe("event.oldVersion", "2");
    shouldBe("event.newVersion", "3");
}

function connection3OpenSuccess(evt)
{
    preamble(evt);
    evalAndLog("db3 = event.target.result");
    shouldBe("db3.version", "3");
    finishJSTest();
}