65 lines
1.8 KiB
JavaScript
65 lines
1.8 KiB
JavaScript
// META: global=window,worker
|
|
// META: title=IDBIndex.openCursor()
|
|
// META: script=resources/support.js
|
|
|
|
'use_strict';
|
|
|
|
async_test(t => {
|
|
const open_rq = createdb(t);
|
|
|
|
open_rq.onupgradeneeded = t.step_func(e => {
|
|
const db = e.target.result;
|
|
const store = db.createObjectStore('store', {keyPath: 'key'});
|
|
const index = store.createIndex('index', 'indexedProperty');
|
|
|
|
store.add({key: 1, indexedProperty: 'data'});
|
|
store.deleteIndex('index');
|
|
|
|
assert_throws_dom('InvalidStateError', () => {
|
|
index.openCursor();
|
|
});
|
|
t.done();
|
|
});
|
|
}, 'If the index is deleted, throw InvalidStateError');
|
|
|
|
async_test(t => {
|
|
let db;
|
|
const open_rq = createdb(t);
|
|
|
|
open_rq.onupgradeneeded = t.step_func(e => {
|
|
db = e.target.result;
|
|
const store = db.createObjectStore('store', {keyPath: 'key'});
|
|
store.createIndex('index', 'indexedProperty');
|
|
store.add({key: 1, indexedProperty: 'data'});
|
|
});
|
|
|
|
open_rq.onsuccess = t.step_func(e => {
|
|
db = e.target.result;
|
|
const tx = db.transaction('store', 'readonly');
|
|
const index = tx.objectStore('store').index('index');
|
|
tx.abort();
|
|
|
|
assert_throws_dom('TransactionInactiveError', () => {
|
|
index.openCursor();
|
|
});
|
|
t.done();
|
|
});
|
|
}, 'If the transaction has been aborted, throw TransactionInactiveError');
|
|
|
|
async_test(t => {
|
|
const open_rq = createdb(t);
|
|
|
|
open_rq.onupgradeneeded = t.step_func(e => {
|
|
const db = e.target.result;
|
|
const store = db.createObjectStore('store', {keyPath: 'key'});
|
|
const index = store.createIndex('index', 'indexedProperty');
|
|
store.add({key: 1, indexedProperty: 'data'});
|
|
|
|
e.target.transaction.abort();
|
|
|
|
assert_throws_dom('InvalidStateError', () => {
|
|
index.openCursor();
|
|
});
|
|
t.done();
|
|
});
|
|
}, 'If the index is deleted by an aborted upgrade, throw InvalidStateError');
|