Checks that garbage collection doesn't reclaim objects with pending activity

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


dbname = "pending-activity.html"
indexedDB.deleteDatabase(dbname)
indexedDB.open(dbname)

prepareDatabase():
store = db.createObjectStore('store')
store.put(0, 0)

testTransaction():
transaction = db.transaction('store')
transaction.oncomplete = transactionOnComplete
transaction = null
self.gc()
PASS Transaction 'complete' event fired.

testRequest():
transaction = db.transaction('store')
store = transaction.objectStore('store')
request = store.get(0)
request.onsuccess = requestOnSuccess
request = null
self.gc()
PASS Request 'success' event fired.

testCursorRequest():
transaction = db.transaction('store')
store = transaction.objectStore('store')
request = store.openCursor()
request.onsuccess = cursorRequestOnFirstSuccess
PASS Request 'success' event fired.
cursor = request.result
cursor.continue()
request.onsuccess = cursorRequestOnSecondSuccess
request = null
self.gc()
PASS Request 'success' event fired.

PASS successfullyParsed is true

TEST COMPLETE

