blob: 99c720509d78e7d4d2f3d2dd34b723426086bebe [file] [log] [blame]
Verify that that cursors weakly hold request, and work if request is GC'd
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 = "cursor-request-cycle.html"
indexedDB.deleteDatabase(dbname)
indexedDB.open(dbname)
prepareDatabase():
db = event.target.result
store = db.createObjectStore('store')
onOpen():
db = event.target.result
tx = db.transaction('store')
store = tx.objectStore('store')
cursorRequest = store.openCursor()
otherRequest = store.get(0)
openCursorRequestSuccess():
Result will be checked later, to ensure that lazy access is safe
otherRequestSuccess():
Verify that the request's result can be accessed lazily:
gc()
cursor = cursorRequest.result
PASS cursor is non-null.
PASS cursor.key is "key1"
PASS cursor.value is "value1"
cursorRequest.extra = 123
cursor.extra = 456
Ensure request is not released if cursor is still around.
cursorRequest = null
gc()
PASS cursorRequestObservation.wasCollected is false
cursor.continue()
cursor = null
gc()
PASS cursorObservation.wasCollected is false
finalRequest = store.get(0)
cursorContinueSuccess():
cursor = event.target.result
PASS cursor is non-null.
PASS cursor.key is "key2"
PASS cursor.value is "value2"
PASS event.target.extra is 123
PASS cursor.extra is 456
finalRequestSuccess():
PASS cursor.key is "key2"
PASS cursor.value is "value2"
cursor = null
gc()
PASS cursorRequestObservation.wasCollected is true
PASS cursorObservation.wasCollected is true
PASS successfullyParsed is true
TEST COMPLETE