Test mutating an IndexedDB's objectstore from a cursor.

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

dbname = "mutating-cursor.html"
indexedDB.deleteDatabase(dbname)
indexedDB.open(dbname)
objectStore = db.createObjectStore('store')
objectStore.add(1, 1).onerror = unexpectedErrorCallback
objectStore.add(2, 2).onerror = unexpectedErrorCallback
objectStore.add(3, 3).onerror = unexpectedErrorCallback
objectStore.add(4, 4).onerror = unexpectedErrorCallback
openForwardCursor()
trans = db.transaction(['store'], 'readwrite')
trans.objectStore('store')
objectStore.openCursor()
forwardCursor()
1
PASS cursor.key is cursorSteps
PASS cursor.value is cursorSteps
event.target.source.add(5, 5)
cursor.continue()
forwardCursor()
2
PASS cursor.key is cursorSteps
PASS cursor.value is cursorSteps
cursor.continue()
forwardCursor()
3
PASS cursor.key is cursorSteps
PASS cursor.value is cursorSteps
cursor.continue()
forwardCursor()
4
PASS cursor.key is cursorSteps
PASS cursor.value is cursorSteps
cursor.continue()
forwardCursor()
5
PASS cursor.key is cursorSteps
PASS cursor.value is cursorSteps
cursor.continue()
forwardCursor()
PASS cursorSteps is 5
forwardCursorComplete()
openReverseCursor()
trans = db.transaction(['store'], 'readwrite')
trans.objectStore('store')
objectStore.openCursor(null, 'prev')
reverseCursor()
5
PASS cursor.key is cursorSteps
PASS cursor.value is cursorSteps
cursor.continue()
reverseCursor()
4
PASS cursor.key is cursorSteps
PASS cursor.value is cursorSteps
cursor.continue()
reverseCursor()
3
PASS cursor.key is cursorSteps
PASS cursor.value is cursorSteps
cursor.continue()
reverseCursor()
2
PASS cursor.key is cursorSteps
PASS cursor.value is cursorSteps
event.target.source.add(0, 0)
cursor.continue()
reverseCursor()
1
PASS cursor.key is cursorSteps
PASS cursor.value is cursorSteps
cursor.continue()
reverseCursor()
0
PASS cursor.key is cursorSteps
PASS cursor.value is cursorSteps
cursor.continue()
reverseCursor()
PASS cursorSteps is 0
reverseCursorComplete()
PASS successfullyParsed is true

TEST COMPLETE

