Ensure that metadata remains correct when an aborted version change is followed by another.

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;

indexedDB.deleteDatabase(dbname)

openConnection():
request = indexedDB.open(dbname, 2)

onUpgradeNeeded():
db = request.result
PASS db.version is 2
transaction = request.transaction
request = indexedDB.open(dbname, 3)
transaction.abort()

onError():
PASS db.version is 0

onUpgradeNeeded2():
db = request.result
PASS db.version is 3

onSuccess():
db = request.result
PASS db.version is 3
PASS successfullyParsed is true

TEST COMPLETE

