[Worker] Test that deleteDatabase is delayed if a VERSION_CHANGE transaction is running

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


Starting worker: resources/deletedatabase-delayed-by-open-and-versionchange.js
[Worker] indexedDB = self.indexedDB || self.webkitIndexedDB || self.mozIndexedDB || self.msIndexedDB || self.OIndexedDB;
[Worker]
[Worker] indexedDB.deleteDatabase(dbname)
[Worker] indexedDB.open(dbname)
[Worker]
[Worker] prepareDatabase():
[Worker] versionChangeComplete = false
[Worker] h = event.target.result
[Worker] blockedCalled = false
[Worker] indexedDB.deleteDatabase(dbname)
[Worker] h.createObjectStore('testObjectStore').put('bar', 'foo')
[Worker]
[Worker] transactionOnComplete():
[Worker] versionChangeComplete = true
[Worker]
[Worker] onOpenSuccess():
PASS [Worker] blockedCalled is false
[Worker] h = event.target.result
[Worker] h.close()
[Worker]
[Worker] deleteDatabaseOnSuccess():
PASS [Worker] versionChangeComplete is true
PASS successfullyParsed is true

TEST COMPLETE

