Test IndexedDB 'steps for closing a database connection'

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

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'
Exception message: Failed to execute 'transaction' on 'IDBDatabase': The database connection is closing.


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

