[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