[Worker] Test IndexedDB workers, recursion, and transaction termination.

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


Starting worker: resources/transaction-complete-workers.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] db.createObjectStore('store')
[Worker] 
[Worker] createTransaction():
[Worker] transaction = db.transaction('store')
[Worker] store = transaction.objectStore('store')
PASS [Worker] Transaction completed
[Worker] Expecting exception from store.get(0)
PASS [Worker] Exception was thrown.
PASS [Worker] code is 0
PASS [Worker] ename is 'TransactionInactiveError'
[Worker] Exception message: Failed to execute 'get' on 'IDBObjectStore': The transaction is inactive or finished.
[Worker] 
[Worker] recursionTest():
[Worker] transaction = db.transaction('store')
[Worker] store = transaction.objectStore('store')
[Worker] store.get(0)
PASS [Worker] transaction is active
[Worker] recursion depth: 1
[Worker] store.get(0)
PASS [Worker] transaction is still active
[Worker] recursion depth: 2
[Worker] store.get(0)
PASS [Worker] transaction is still active
[Worker] recursion depth: 3
[Worker] store.get(0)
PASS [Worker] transaction is still active
[Worker] recursion depth: 3
[Worker] store.get(0)
PASS [Worker] transaction is still active
[Worker] recursion depth: 2
[Worker] store.get(0)
PASS [Worker] transaction is still active
[Worker] recursion depth: 1
[Worker] store.get(0)
PASS [Worker] transaction is still active
PASS [Worker] transaction completed
[Worker] Expecting exception from store.get(0)
PASS [Worker] Exception was thrown.
PASS [Worker] code is 0
PASS [Worker] ename is 'TransactionInactiveError'
[Worker] Exception message: Failed to execute 'get' on 'IDBObjectStore': The transaction is inactive or finished.
[Worker] 
[Worker] trying a timeout callback:
[Worker] setTimeout(timeoutTest, 0)
[Worker] 
[Worker] timeoutTest():
[Worker] transaction = db.transaction('store')
[Worker] store = transaction.objectStore('store')
PASS [Worker] transaction started in setTimeout() callback completed
[Worker] Expecting exception from store.get(0)
PASS [Worker] Exception was thrown.
PASS [Worker] code is 0
PASS [Worker] ename is 'TransactionInactiveError'
[Worker] Exception message: Failed to execute 'get' on 'IDBObjectStore': The transaction is inactive or finished.
[Worker] 
[Worker] errorTest():
[Worker] self.old_onerror = self.onerror
[Worker] self.onerror = errorHandler
[Worker] 
[Worker] errorHandler():
[Worker] self.onerror = self.old_onerror
[Worker] transaction = db.transaction('store')
[Worker] store = transaction.objectStore('store')
Got expected error from worker, ignoring
event.preventDefault()
PASS [Worker] Transaction completed
[Worker] Expecting exception from store.get(0)
PASS [Worker] Exception was thrown.
PASS [Worker] code is 0
PASS [Worker] ename is 'TransactionInactiveError'
[Worker] Exception message: Failed to execute 'get' on 'IDBObjectStore': The transaction is inactive or finished.
PASS successfullyParsed is true

TEST COMPLETE

