| 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; |
| |
| indexedDB.deleteDatabase(dbname) |
| indexedDB.open(dbname) |
| |
| prepareDatabase(): |
| db = event.target.result |
| store = db.createObjectStore('store') |
| |
| onOpen(): |
| db = event.target.result |
| tx = db.transaction('store', 'readonly') |
| store = tx.objectStore('store') |
| Create 1000 cursorRequests and check their results in otherRequestSuccess(). |
| otherRequest = store.get(0) |
| |
| otherRequestSuccess(): |
| Verify that results of openCursor requests can be accessed lazily. |
| gc() |
| Ensure requests are not released if cursors are still around. |
| cursorRequests = null |
| gc() |
| PASS isAnyCollected(cursorRequestObservers) is false |
| Ensure requests are not released if they are pending. |
| cursors = null |
| gc() |
| PASS isAnyCollected(cursorObservers) is false |
| PASS isAnyCollected(cursorRequestObservers) is false |
| finalRequest = store.get(0) |
| |
| finalRequestSuccess(): |
| Ensure requests and cursors are released. |
| PASS cursors is non-null. |
| PASS cursors.length is 1000 |
| cursors = null |
| gc() |
| PASS isAnyCollected(cursorObservers) is true |
| PASS isAnyCollected(cursorRequestObservers) is true |
| PASS successfullyParsed is true |
| |
| TEST COMPLETE |
| |