| // 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'); |
| 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"); |