Test that a database is recreated correctly when an open-with-version call is queued behind both a deleteDatabase and an open-with-version call

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;

dbname = "intversion-long-queue.html"
indexedDB.deleteDatabase(dbname)
indexedDB.open(dbname)

prepareDatabase():
db = event.target.result

connection1Success():
connection1 = event.target.result
PASS db is connection1
connection1.onversionchange = connection1VersionChangeCallback
request = indexedDB.open(dbname, 2)
request.onsuccess = connection2Success
request.onupgradeneeded = connection2UpgradeNeeded
request.onblocked = connection2Blocked

connection1VersionChangeCallback():
PASS event.type is "versionchange"
PASS event.oldVersion is 1
PASS event.newVersion is 2
PASS event.version is undefined.

connection2Blocked():
request = indexedDB.deleteDatabase(dbname)
request.onblocked = deleteDatabaseBlockedCallback
request.onsuccess = deleteDatabaseSuccessCallback
request = indexedDB.open(dbname, 3)
request.onupgradeneeded = connection3UpgradeNeeded
request.onsuccess = connection3Success
connection1.close()

deleteDatabaseBlockedCallback():
FIXME: http://crbug.com/153122
FAIL event.oldVersion should be 1 (of type number). Was undefined (of type undefined).
FAIL event.newVersion should be null (of type object). Was undefined (of type undefined).
FAIL event.version should be undefined. Was 

deleteDatabaseSuccessCallback():
PASS event.target.result is undefined.
FIXME: http://crbug.com/153122
FAIL event.oldVersion should be 1 (of type number). Was undefined (of type undefined).
FAIL event.newVersion should be null (of type object). Was undefined (of type undefined).

connection2UpgradeNeeded():
PASS event.oldVersion is 0
PASS event.newVersion is 2
db = event.target.result
PASS db.objectStoreNames.length is 0
db.createObjectStore('some object store')
transaction = event.target.transaction
transaction.oncomplete = connection2TransactionComplete

connection2TransactionComplete():
PASS db.version is 2

connection2Success():
connection2 = event.target.result
connection2.onversionchange = connection2VersionChangeEvent

connection2VersionChangeEvent():
PASS event.type is "versionchange"
PASS event.oldVersion is 2
PASS event.newVersion is 3
PASS event.version is undefined.
connection2.close()

connection3UpgradeNeeded():
gotUpgradeNeededEvent = true
PASS event.newVersion is 3
PASS event.oldVersion is 2

connection3Success():
PASS gotUpgradeNeededEvent is true
PASS event.target.result.objectStoreNames.length is 1
PASS successfullyParsed is true

TEST COMPLETE

