Test IndexedDB 'steps for closing a database connection'

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;

dbname = "database-close.html"
indexedDB.deleteDatabase(dbname)
indexedDB.open(dbname)
store = connection.createObjectStore('store')
store.put('value1', 'key1')
store.put('value2', 'key2')

testClose():
Create transactions using connection:
trans1 = connection.transaction('store')
trans2 = connection.transaction('store')

Close the connection:
connection.close()
Step 1: Set the internal closePending flag of connection to true. [Verified via side effects, below.]

Step 2: Wait for all transactions created using connection to complete. Once they are complete, connection is closed.
awaiting_transaction_count = 2
trans1.objectStore('store').get('key1')
trans2.objectStore('store').get('key2')

NOTE: Once the closePending flag has been set to true no new transactions can be created using connection. All functions that create transactions first check the closePending flag first and throw an exception if it is true.

Expecting exception from trans3 = connection.transaction('store')
PASS Exception was thrown.
PASS code is DOMException.INVALID_STATE_ERR
PASS ename is 'InvalidStateError'

NOTE: Once the connection is closed, this can unblock the steps for deleting a database, which waits for connections to a given database to be closed before continuing.

indexedDB.deleteDatabase(dbname)

transaction #1 request successful
PASS event.target.result is "value1"

transaction #2 request successful
PASS event.target.result is "value2"

All transactions completed - database deletes should now be unblocked.

delete database unblocked
PASS awaiting_transaction_count is 0
PASS successfullyParsed is true

TEST COMPLETE

