idbindex_openKeyCursor.any.js (2490B)
1 // META: global=window,worker 2 // META: title=IDBIndex.openKeyCursor() 3 // META: script=resources/support.js 4 5 'use strict'; 6 7 async_test(t => { 8 let db; 9 10 let open_rq = createdb(t); 11 open_rq.onupgradeneeded = function(e) { 12 db = e.target.result; 13 let store = db.createObjectStore("store", { keyPath: "key" }); 14 let index = store.createIndex("index", "indexedProperty"); 15 16 store.add({ key: 1, indexedProperty: "data" }); 17 18 assert_throws_dom("DataError", function(){ 19 index.openKeyCursor(NaN); 20 }); 21 t.done(); 22 } 23 }, "Throw DataError when using a invalid key"); 24 25 async_test(t => { 26 let db; 27 28 let open_rq = createdb(t); 29 open_rq.onupgradeneeded = function(e) { 30 db = e.target.result; 31 let store = db.createObjectStore("store", { keyPath: "key" }); 32 let index = store.createIndex("index", "indexedProperty"); 33 34 store.add({ key: 1, indexedProperty: "data" }); 35 store.deleteIndex("index"); 36 37 assert_throws_dom("InvalidStateError", function(){ 38 index.openKeyCursor(); 39 }); 40 t.done(); 41 } 42 }, "Throw InvalidStateError when the index is deleted"); 43 44 async_test(t => { 45 let db; 46 47 let open_rq = createdb(t); 48 open_rq.onupgradeneeded = function(e) { 49 db = e.target.result; 50 let store = db.createObjectStore("store", { keyPath: "key" }); 51 let index = store.createIndex("index", "indexedProperty"); 52 store.add({ key: 1, indexedProperty: "data" }); 53 } 54 open_rq.onsuccess = function(e) { 55 db = e.target.result; 56 let tx = db.transaction('store', 'readonly'); 57 let index = tx.objectStore('store').index('index'); 58 tx.abort(); 59 60 assert_throws_dom("TransactionInactiveError", function(){ 61 index.openKeyCursor(); 62 }); 63 t.done(); 64 } 65 }, "Throw TransactionInactiveError on aborted transaction"); 66 67 async_test(t => { 68 let db; 69 70 let open_rq = createdb(t); 71 open_rq.onupgradeneeded = function(e) { 72 db = e.target.result; 73 let store = db.createObjectStore("store", { keyPath: "key" }); 74 let index = store.createIndex("index", "indexedProperty"); 75 store.add({ key: 1, indexedProperty: "data" }); 76 77 e.target.transaction.abort(); 78 79 assert_throws_dom("InvalidStateError", function(){ 80 index.openKeyCursor(); 81 }); 82 t.done(); 83 } 84 }, "Throw InvalidStateError on index deleted by aborted upgrade");