Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

// META: global=window,worker
// META: title=IDBIndex.openKeyCursor()
// META: script=resources/support.js
'use strict';
async_test(t => {
let db;
let open_rq = createdb(t);
open_rq.onupgradeneeded = function(e) {
db = e.target.result;
let store = db.createObjectStore("store", { keyPath: "key" });
let index = store.createIndex("index", "indexedProperty");
store.add({ key: 1, indexedProperty: "data" });
assert_throws_dom("DataError", function(){
index.openKeyCursor(NaN);
});
t.done();
}
}, "Throw DataError when using a invalid key");
async_test(t => {
let db;
let open_rq = createdb(t);
open_rq.onupgradeneeded = function(e) {
db = e.target.result;
let store = db.createObjectStore("store", { keyPath: "key" });
let index = store.createIndex("index", "indexedProperty");
store.add({ key: 1, indexedProperty: "data" });
store.deleteIndex("index");
assert_throws_dom("InvalidStateError", function(){
index.openKeyCursor();
});
t.done();
}
}, "Throw InvalidStateError when the index is deleted");
async_test(t => {
let db;
let open_rq = createdb(t);
open_rq.onupgradeneeded = function(e) {
db = e.target.result;
let store = db.createObjectStore("store", { keyPath: "key" });
let index = store.createIndex("index", "indexedProperty");
store.add({ key: 1, indexedProperty: "data" });
}
open_rq.onsuccess = function(e) {
db = e.target.result;
let tx = db.transaction('store', 'readonly', {durability: 'relaxed'});
let index = tx.objectStore('store').index('index');
tx.abort();
assert_throws_dom("TransactionInactiveError", function(){
index.openKeyCursor();
});
t.done();
}
}, "Throw TransactionInactiveError on aborted transaction");
async_test(t => {
let db;
let open_rq = createdb(t);
open_rq.onupgradeneeded = function(e) {
db = e.target.result;
let store = db.createObjectStore("store", { keyPath: "key" });
let index = store.createIndex("index", "indexedProperty");
store.add({ key: 1, indexedProperty: "data" });
e.target.transaction.abort();
assert_throws_dom("InvalidStateError", function(){
index.openKeyCursor();
});
t.done();
}
}, "Throw InvalidStateError on index deleted by aborted upgrade");