| // META: title=IndexedDB |
| // META: global=window,worker |
| // META: script=resources/support.js |
| |
| 'use strict'; |
| |
| async_test(t => { |
| let db; |
| let trans; |
| let store; |
| let index; |
| let request = createdb(t); |
| |
| request.onupgradeneeded = function(e) { |
| db = e.target.result; |
| store = db.createObjectStore('store'); |
| index = store.createIndex('index', 'value'); |
| store.put({value: 0}, 0); |
| trans = request.transaction; |
| trans.oncomplete = verifyOverloads; |
| }; |
| |
| function verifyOverloads() { |
| trans = db.transaction('store', 'readonly'); |
| store = trans.objectStore('store'); |
| index = store.index('index'); |
| |
| checkCursorDirection(store.openCursor(), 'next'); |
| checkCursorDirection(store.openCursor(0), 'next'); |
| checkCursorDirection(store.openCursor(0, 'next'), 'next'); |
| checkCursorDirection(store.openCursor(0, 'nextunique'), 'nextunique'); |
| checkCursorDirection(store.openCursor(0, 'prev'), 'prev'); |
| checkCursorDirection(store.openCursor(0, 'prevunique'), 'prevunique'); |
| |
| checkCursorDirection(store.openCursor(IDBKeyRange.only(0)), 'next'); |
| checkCursorDirection(store.openCursor(IDBKeyRange.only(0), 'next'), 'next'); |
| checkCursorDirection( |
| store.openCursor(IDBKeyRange.only(0), 'nextunique'), 'nextunique'); |
| checkCursorDirection(store.openCursor(IDBKeyRange.only(0), 'prev'), 'prev'); |
| checkCursorDirection( |
| store.openCursor(IDBKeyRange.only(0), 'prevunique'), 'prevunique'); |
| |
| checkCursorDirection(index.openCursor(), 'next'); |
| checkCursorDirection(index.openCursor(0), 'next'); |
| checkCursorDirection(index.openCursor(0, 'next'), 'next'); |
| checkCursorDirection(index.openCursor(0, 'nextunique'), 'nextunique'); |
| checkCursorDirection(index.openCursor(0, 'prev'), 'prev'); |
| checkCursorDirection(index.openCursor(0, 'prevunique'), 'prevunique'); |
| |
| checkCursorDirection(index.openCursor(IDBKeyRange.only(0)), 'next'); |
| checkCursorDirection(index.openCursor(IDBKeyRange.only(0), 'next'), 'next'); |
| checkCursorDirection( |
| index.openCursor(IDBKeyRange.only(0), 'nextunique'), 'nextunique'); |
| checkCursorDirection(index.openCursor(IDBKeyRange.only(0), 'prev'), 'prev'); |
| checkCursorDirection( |
| index.openCursor(IDBKeyRange.only(0), 'prevunique'), 'prevunique'); |
| |
| checkCursorDirection(index.openKeyCursor(), 'next'); |
| checkCursorDirection(index.openKeyCursor(0), 'next'); |
| checkCursorDirection(index.openKeyCursor(0, 'next'), 'next'); |
| checkCursorDirection(index.openKeyCursor(0, 'nextunique'), 'nextunique'); |
| checkCursorDirection(index.openKeyCursor(0, 'prev'), 'prev'); |
| checkCursorDirection(index.openKeyCursor(0, 'prevunique'), 'prevunique'); |
| |
| checkCursorDirection(index.openKeyCursor(IDBKeyRange.only(0)), 'next'); |
| checkCursorDirection( |
| index.openKeyCursor(IDBKeyRange.only(0), 'next'), 'next'); |
| checkCursorDirection( |
| index.openKeyCursor(IDBKeyRange.only(0), 'nextunique'), 'nextunique'); |
| checkCursorDirection( |
| index.openKeyCursor(IDBKeyRange.only(0), 'prev'), 'prev'); |
| checkCursorDirection( |
| index.openKeyCursor(IDBKeyRange.only(0), 'prevunique'), 'prevunique'); |
| |
| t.done(); |
| } |
| |
| function checkCursorDirection(request, direction) { |
| request.onsuccess = function(event) { |
| assert_not_equals( |
| event.target.result, null, 'Check the result is not null') |
| assert_equals( |
| event.target.result.direction, direction, |
| 'Check the result direction'); |
| }; |
| } |
| }, 'Validate the overloads of IDBObjectStore.openCursor(), IDBIndex.openCursor() and IDBIndex.openKeyCursor()'); |