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