Makes sure that an OpenDBRequest that would result in a version change is blocked because there are still open connections, it gets the blocked event. Also makes sure that request gets unblocked when the open connections close.

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)
indexedDB.open(dbname)
connection = event.target.result;
connection.onversionchange = firstVersionChange;
objectStore = connection.createObjectStore('testObjectStore');
First version change transaction complete
firstTransaction = connection.transaction('testObjectStore', 'readwrite');
objectStore = firstTransaction.objectStore('testObjectStore');
objectStorePutLoop();
secondRequest = indexedDB.open(dbname, 2);
secondRequest.onblocked = secondBlocked;
secondRequest.onupgradeneeded = secondUpgradeNeeded;
receivedVersionChange = true;
++blockedCount
PASS blockedEvent.oldVersion is 1
PASS blockedEvent.newVersion is 2
PASS blockedEvent.target.readyState is 'pending'
2nd upgradeNeeded
PASS blockedCount is 1
PASS event.target.result.version is 2
event.target.result.close();
PASS successfullyParsed is true

TEST COMPLETE

