Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
- This WPT test may be referenced by the following Test IDs:
- /IndexedDB/cursor-overloads.any.html - WPT Dashboard Interop Dashboard
- /IndexedDB/cursor-overloads.any.serviceworker.html - WPT Dashboard Interop Dashboard
- /IndexedDB/cursor-overloads.any.sharedworker.html - WPT Dashboard Interop Dashboard
- /IndexedDB/cursor-overloads.any.worker.html - WPT Dashboard Interop Dashboard
// 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', {durability: 'relaxed'});
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()');