Check processing of pending version change requests - increasing versions.

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

dbname = "intversion-pending-version-changes-ascending.html"
indexedDB.deleteDatabase(dbname)
indexedDB.open(dbname)


onConnection1Open():
indexedDB.open(dbname, 2)
indexedDB.open(dbname, 3)


FIXME: The open call with higher version should execute first.


connection2Blocked():
db.close()


connection2UpgradeNeeded():
PASS event.oldVersion is 1
PASS event.newVersion is 2


connection2OpenSuccess():
db2 = event.target.result
PASS db2.version is 2


connection3Blocked():
db2.close()


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


connection3OpenSuccess():
db3 = event.target.result
PASS db3.version is 3
PASS successfullyParsed is true

TEST COMPLETE

