idbcursor-request.any.js (1433B)
1 // META: script=resources/support.js 2 'use strict'; 3 4 function cursorRequestTest({ useIndex, useKeyCursor }) { 5 indexeddb_test( 6 (t, db) => { 7 const objStore = db.createObjectStore("my_objectstore"); 8 objStore.add("data", 1); 9 objStore.createIndex("my_index", ""); 10 }, 11 (t, db) => { 12 const tx = db.transaction("my_objectstore", "readonly"); 13 let source = tx.objectStore("my_objectstore"); 14 if (useIndex) source = source.index('my_index'); 15 const req = useKeyCursor ? source.openKeyCursor() : source.openCursor(); 16 let cursor; 17 18 req.onsuccess = t.step_func(() => { 19 cursor = req.result; 20 assert_equals(cursor.request, req, 'cursor.request'); 21 assert_readonly(cursor, 'request'); 22 assert_equals(cursor.request, cursor.request, 'cursor.request does not change'); 23 }); 24 25 req.transaction.oncomplete = t.step_func(() => { 26 setTimeout(t.step_func(() => { 27 assert_equals(cursor.request, req, 'cursor.request after transaction complete'); 28 t.done(); 29 }), 0); 30 }); 31 32 req.transaction.onerror = t.unreached_func('Transaction error'); 33 }, 34 `cursor.request from ${useIndex ? 'IDBIndex' : 'IDBObjectStore'}.${useKeyCursor ? 'openKeyCursor' : 'openCursor'}` 35 ); 36 } 37 38 for (const useIndex of [false, true]) { 39 for (const useKeyCursor of [false, true]) { 40 cursorRequestTest({ useIndex, useKeyCursor }); 41 } 42 }