From e4a3e278c1a569b8b3f42bac428b92dc7c4cc9c0 Mon Sep 17 00:00:00 2001 From: Jake Archibald Date: Tue, 19 Mar 2019 03:20:17 +0000 Subject: [PATCH] IndexedDB cursor.request (#15820) * cursor.request * More detailed test, testing the various different kinds of cursor. * Using unreached_func --- IndexedDB/idbcursor-request.any.js | 40 ++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 IndexedDB/idbcursor-request.any.js diff --git a/IndexedDB/idbcursor-request.any.js b/IndexedDB/idbcursor-request.any.js new file mode 100644 index 00000000000000..a62efc0b8eb7a3 --- /dev/null +++ b/IndexedDB/idbcursor-request.any.js @@ -0,0 +1,40 @@ +// 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'); + }); + + 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 }); + } +}