Test that deleteDatabase is blocked on open connections

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;

blockedEventFired = false
indexedDB.open(dbname)

openOnSuccess():
h = event.target.result
indexedDB.deleteDatabase(dbname)

onVersionChange():
PASS event.target.version is 1
PASS event.oldVersion is 1
PASS event.newVersion is null

deleteDatabaseOnBlocked():
blockedEventFired = true
h.close()

deleteDatabaseOnSuccess():
PASS blockedEventFired is true
PASS successfullyParsed is true

TEST COMPLETE

