| // META: global=window,worker |
| // META: title=IDBCursor.source |
| // META: script=resources/support.js |
| |
| 'use strict'; |
| |
| function cursor_source_test( |
| test_name, name, stringified_object, cursor_rq_func) { |
| indexeddb_test( |
| function(t, db, tx) { |
| const objStore = db.createObjectStore('my_objectstore'); |
| objStore.createIndex('my_index', ''); |
| |
| objStore.add('data', 1); |
| objStore.add('data2', 2); |
| }, |
| function(t, db) { |
| const cursor_rq = cursor_rq_func(db); |
| |
| cursor_rq.onsuccess = t.step_func((e) => { |
| if (!e.target.result) { |
| return; |
| } |
| const cursor = e.target.result; |
| assert_readonly(cursor, 'source'); |
| |
| // Direct try |
| assert_true(cursor.source instanceof Object, 'source isobject'); |
| assert_equals(cursor.source + '', stringified_object, 'source'); |
| assert_equals(cursor.source.name, name, 'name'); |
| |
| cursor.continue(); |
| }); |
| |
| cursor_rq.transaction.oncomplete = t.step_func((e) => { |
| t.done(); |
| }); |
| |
| cursor_rq.transaction.onerror = t.step_func((e) => { |
| assert_unreached( |
| 'Transaction got error. ' + |
| (e.target.error ? e.target.error.name : 'unknown')); |
| }); |
| }, |
| test_name); |
| } |
| |
| cursor_source_test( |
| 'IDBCursor.source - IDBObjectStore', 'my_objectstore', |
| '[object IDBObjectStore]', function(db) { |
| return db.transaction('my_objectstore', 'readonly') |
| .objectStore('my_objectstore') |
| .openCursor(); |
| }); |
| |
| cursor_source_test( |
| 'IDBCursor.source - IDBIndex', 'my_index', '[object IDBIndex]', |
| function(db) { |
| return db.transaction('my_objectstore', 'readonly') |
| .objectStore('my_objectstore') |
| .index('my_index') |
| .openCursor(); |
| }); |