Ensure IDBDatabase wrapper isn't prematurely collected.

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


indexedDB.deleteDatabase(dbname)

openDB():
indexedDB.open(dbname, 1)

onUpgradeNeeded():
db = event.target.result
db.createObjectStore('store').createIndex('index', 'keyPath')
db = null

openSuccess():
sawVersionChangeEvent = false

collectGarbage():
self.gc()

openAgain():
indexedDB.open(dbname, 2)

onVersionChange():
event.target.close()
sawVersionChangeEvent = true

openAgainSuccess():
PASS sawVersionChangeEvent is true
PASS successfullyParsed is true

TEST COMPLETE

