Test IndexedDB transaction internal active flag.

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 = "transaction-active-flag.html"
indexedDB.deleteDatabase(dbname)
indexedDB.open(dbname)
store = db.createObjectStore('store')
store.createIndex('index', 'keypath')

runTransaction():
transaction = db.transaction('store', 'readwrite')

Verify that transactions are created with |active| flag set:
store = transaction.objectStore('store')
index = store.index('index')
PASS store.add(0, 0) did not throw exception.
PASS store.put(0, 0) did not throw exception.
PASS store.get(0) did not throw exception.
PASS store.get(IDBKeyRange.only(0)) did not throw exception.
PASS store.delete(0) did not throw exception.
PASS store.delete(IDBKeyRange.only(0)) did not throw exception.
PASS store.count() did not throw exception.
PASS store.count(0) did not throw exception.
PASS store.count(IDBKeyRange.only(0)) did not throw exception.
PASS store.clear() did not throw exception.
PASS store.openCursor() did not throw exception.
PASS store.openCursor(0) did not throw exception.
PASS store.openCursor(0, 'next') did not throw exception.
PASS store.openCursor(IDBKeyRange.only(0)) did not throw exception.
PASS store.openCursor(IDBKeyRange.only(0), 'next') did not throw exception.
PASS index.get(0) did not throw exception.
PASS index.get(IDBKeyRange.only(0)) did not throw exception.
PASS index.getKey(0) did not throw exception.
PASS index.getKey(IDBKeyRange.only(0)) did not throw exception.
PASS index.count() did not throw exception.
PASS index.count(0) did not throw exception.
PASS index.count(IDBKeyRange.only(0)) did not throw exception.
PASS index.openCursor() did not throw exception.
PASS index.openCursor(0) did not throw exception.
PASS index.openCursor(0, 'next') did not throw exception.
PASS index.openCursor(IDBKeyRange.only(0)) did not throw exception.
PASS index.openCursor(IDBKeyRange.only(0), 'next') did not throw exception.
PASS index.openKeyCursor() did not throw exception.
PASS index.openKeyCursor(0) did not throw exception.
PASS index.openKeyCursor(0, 'next') did not throw exception.
PASS index.openKeyCursor(IDBKeyRange.only(0)) did not throw exception.
PASS index.openKeyCursor(IDBKeyRange.only(0), 'next') did not throw exception.

Transaction shouldn't be active inside a non-IDB-event callback
setTimeout(testTimeout, 0)

testTimeout():
store = transaction.objectStore('store')
index = store.index('index')
Expecting exception from store.add(0, 0)
PASS Exception was thrown.
PASS code is 0
PASS ename is 'TransactionInactiveError'
Expecting exception from store.put(0, 0)
PASS Exception was thrown.
PASS code is 0
PASS ename is 'TransactionInactiveError'
Expecting exception from store.get(0)
PASS Exception was thrown.
PASS code is 0
PASS ename is 'TransactionInactiveError'
Expecting exception from store.get(IDBKeyRange.only(0))
PASS Exception was thrown.
PASS code is 0
PASS ename is 'TransactionInactiveError'
Expecting exception from store.delete(0)
PASS Exception was thrown.
PASS code is 0
PASS ename is 'TransactionInactiveError'
Expecting exception from store.delete(IDBKeyRange.only(0))
PASS Exception was thrown.
PASS code is 0
PASS ename is 'TransactionInactiveError'
Expecting exception from store.count()
PASS Exception was thrown.
PASS code is 0
PASS ename is 'TransactionInactiveError'
Expecting exception from store.count(0)
PASS Exception was thrown.
PASS code is 0
PASS ename is 'TransactionInactiveError'
Expecting exception from store.count(IDBKeyRange.only(0))
PASS Exception was thrown.
PASS code is 0
PASS ename is 'TransactionInactiveError'
Expecting exception from store.clear()
PASS Exception was thrown.
PASS code is 0
PASS ename is 'TransactionInactiveError'
Expecting exception from store.openCursor()
PASS Exception was thrown.
PASS code is 0
PASS ename is 'TransactionInactiveError'
Expecting exception from store.openCursor(0)
PASS Exception was thrown.
PASS code is 0
PASS ename is 'TransactionInactiveError'
Expecting exception from store.openCursor(0, 'next')
PASS Exception was thrown.
PASS code is 0
PASS ename is 'TransactionInactiveError'
Expecting exception from store.openCursor(IDBKeyRange.only(0))
PASS Exception was thrown.
PASS code is 0
PASS ename is 'TransactionInactiveError'
Expecting exception from store.openCursor(IDBKeyRange.only(0), 'next')
PASS Exception was thrown.
PASS code is 0
PASS ename is 'TransactionInactiveError'
Expecting exception from index.get(0)
PASS Exception was thrown.
PASS code is 0
PASS ename is 'TransactionInactiveError'
Expecting exception from index.get(IDBKeyRange.only(0))
PASS Exception was thrown.
PASS code is 0
PASS ename is 'TransactionInactiveError'
Expecting exception from index.getKey(0)
PASS Exception was thrown.
PASS code is 0
PASS ename is 'TransactionInactiveError'
Expecting exception from index.getKey(IDBKeyRange.only(0))
PASS Exception was thrown.
PASS code is 0
PASS ename is 'TransactionInactiveError'
Expecting exception from index.count()
PASS Exception was thrown.
PASS code is 0
PASS ename is 'TransactionInactiveError'
Expecting exception from index.count(0)
PASS Exception was thrown.
PASS code is 0
PASS ename is 'TransactionInactiveError'
Expecting exception from index.count(IDBKeyRange.only(0))
PASS Exception was thrown.
PASS code is 0
PASS ename is 'TransactionInactiveError'
Expecting exception from index.openCursor()
PASS Exception was thrown.
PASS code is 0
PASS ename is 'TransactionInactiveError'
Expecting exception from index.openCursor(0)
PASS Exception was thrown.
PASS code is 0
PASS ename is 'TransactionInactiveError'
Expecting exception from index.openCursor(0, 'next')
PASS Exception was thrown.
PASS code is 0
PASS ename is 'TransactionInactiveError'
Expecting exception from index.openCursor(IDBKeyRange.only(0))
PASS Exception was thrown.
PASS code is 0
PASS ename is 'TransactionInactiveError'
Expecting exception from index.openCursor(IDBKeyRange.only(0), 'next')
PASS Exception was thrown.
PASS code is 0
PASS ename is 'TransactionInactiveError'
Expecting exception from index.openKeyCursor()
PASS Exception was thrown.
PASS code is 0
PASS ename is 'TransactionInactiveError'
Expecting exception from index.openKeyCursor(0)
PASS Exception was thrown.
PASS code is 0
PASS ename is 'TransactionInactiveError'
Expecting exception from index.openKeyCursor(0, 'next')
PASS Exception was thrown.
PASS code is 0
PASS ename is 'TransactionInactiveError'
Expecting exception from index.openKeyCursor(IDBKeyRange.only(0))
PASS Exception was thrown.
PASS code is 0
PASS ename is 'TransactionInactiveError'
Expecting exception from index.openKeyCursor(IDBKeyRange.only(0), 'next')
PASS Exception was thrown.
PASS code is 0
PASS ename is 'TransactionInactiveError'

testEventCallback():
Transaction should be active inside a non-IDB-event callback
store = transaction.objectStore('store')
index = store.index('index')
PASS store.add(0, 0) did not throw exception.
PASS store.put(0, 0) did not throw exception.
PASS store.get(0) did not throw exception.
PASS store.get(IDBKeyRange.only(0)) did not throw exception.
PASS store.delete(0) did not throw exception.
PASS store.delete(IDBKeyRange.only(0)) did not throw exception.
PASS store.count() did not throw exception.
PASS store.count(0) did not throw exception.
PASS store.count(IDBKeyRange.only(0)) did not throw exception.
PASS store.clear() did not throw exception.
PASS store.openCursor() did not throw exception.
PASS store.openCursor(0) did not throw exception.
PASS store.openCursor(0, 'next') did not throw exception.
PASS store.openCursor(IDBKeyRange.only(0)) did not throw exception.
PASS store.openCursor(IDBKeyRange.only(0), 'next') did not throw exception.
PASS index.get(0) did not throw exception.
PASS index.get(IDBKeyRange.only(0)) did not throw exception.
PASS index.getKey(0) did not throw exception.
PASS index.getKey(IDBKeyRange.only(0)) did not throw exception.
PASS index.count() did not throw exception.
PASS index.count(0) did not throw exception.
PASS index.count(IDBKeyRange.only(0)) did not throw exception.
PASS index.openCursor() did not throw exception.
PASS index.openCursor(0) did not throw exception.
PASS index.openCursor(0, 'next') did not throw exception.
PASS index.openCursor(IDBKeyRange.only(0)) did not throw exception.
PASS index.openCursor(IDBKeyRange.only(0), 'next') did not throw exception.
PASS index.openKeyCursor() did not throw exception.
PASS index.openKeyCursor(0) did not throw exception.
PASS index.openKeyCursor(0, 'next') did not throw exception.
PASS index.openKeyCursor(IDBKeyRange.only(0)) did not throw exception.
PASS index.openKeyCursor(IDBKeyRange.only(0), 'next') did not throw exception.

transactionComplete():
Expecting exception from store = transaction.objectStore('store')
PASS Exception was thrown.
PASS code is DOMException.INVALID_STATE_ERR
PASS ename is 'InvalidStateError'
PASS successfullyParsed is true

TEST COMPLETE

