blob: 2f39ac4d4d5717d9b7453cc3149c9a19e0c67f7d [file] [log] [blame]
if (this.importScripts) {
importScripts('../../../resources/js-test.js');
importScripts('shared.js');
}
description("Test that integer versions are reverted when their version transactions abort.");
function test()
{
removeVendorPrefixes();
setDBNameFromPath();
request = evalAndLog("indexedDB.deleteDatabase(dbname)");
request.onsuccess = deleteSuccess;
request.onerror = unexpectedErrorCallback;
}
function deleteSuccess(evt) {
evalAndLog("request = indexedDB.open(dbname, 2)");
request.onsuccess = openSuccess;
request.onerror = unexpectedErrorCallback;
request.onblocked = unexpectedBlockedCallback;
request.onupgradeneeded = firstUpgradeNeededCallback;
}
function firstUpgradeNeededCallback(evt)
{
preamble(evt);
evalAndLog("db = event.target.result");
evalAndLog("db.createObjectStore('some os')");
}
function openSuccess(evt)
{
preamble(evt);
evalAndLog("db = event.target.result");
shouldBe("db.version", "2");
evalAndLog("db.close()");
evalAndLog("request = indexedDB.open(dbname, 3)");
evalAndLog("request.onupgradeneeded = secondUpgradeNeededCallback");
evalAndLog("request.onerror = errorAfterAbortCallback");
request.onsuccess = unexpectedSuccessCallback;
request.onblocked = unexpectedBlockedCallback;
}
function secondUpgradeNeededCallback(evt)
{
preamble(evt);
evalAndLog("db = event.target.result");
evalAndLog("db.createObjectStore('some os 2')");
evalAndLog("event.target.transaction.abort()");
}
function errorAfterAbortCallback(evt)
{
preamble(evt);
shouldBe("db.version", "2");
evalAndLog("request = indexedDB.open(dbname)");
evalAndLog("request.onsuccess = finalSuccessCallback");
request.onerror = unexpectedErrorCallback;
request.onblocked = unexpectedBlockedCallback;
request.onupgradeneeded = unexpectedUpgradeNeededCallback;
}
function finalSuccessCallback(evt)
{
preamble(evt);
evalAndLog("db = event.target.result");
shouldBe("db.version", "2");
shouldBe("db.objectStoreNames.length", "1");
shouldBeEqualToString("db.objectStoreNames[0]", "some os");
finishJSTest();
}
test();