| 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 |
| |