| // META: script=support.js |
| |
| function cursorRequestTest({ useIndex, useKeyCursor }) { |
| indexeddb_test( |
| (t, db) => { |
| const objStore = db.createObjectStore("my_objectstore"); |
| objStore.add("data", 1); |
| objStore.createIndex("my_index", ""); |
| }, |
| (t, db) => { |
| const tx = db.transaction("my_objectstore"); |
| let source = tx.objectStore("my_objectstore"); |
| if (useIndex) source = source.index('my_index'); |
| const req = useKeyCursor ? source.openKeyCursor() : source.openCursor(); |
| let cursor; |
| |
| req.onsuccess = t.step_func(() => { |
| cursor = req.result; |
| assert_equals(cursor.request, req, 'cursor.request'); |
| assert_readonly(cursor, 'request'); |
| assert_equals(cursor.request, cursor.request, 'cursor.request does not change'); |
| }); |
| |
| req.transaction.oncomplete = t.step_func(() => { |
| setTimeout(t.step_func(() => { |
| assert_equals(cursor.request, req, 'cursor.request after transaction complete'); |
| t.done(); |
| }), 0); |
| }); |
| |
| req.transaction.onerror = t.unreached_func('Transaction error'); |
| }, |
| `cursor.request from ${useIndex ? 'IDBIndex' : 'IDBObjectStore'}.${useKeyCursor ? 'openKeyCursor' : 'openCursor'}` |
| ); |
| } |
| |
| for (const useIndex of [false, true]) { |
| for (const useKeyCursor of [false, true]) { |
| cursorRequestTest({ useIndex, useKeyCursor }); |
| } |
| } |