diff --git a/IndexedDB/idbindex_get.any.js b/IndexedDB/idbindex_get.any.js new file mode 100644 index 00000000000000..601d41d8d164b9 --- /dev/null +++ b/IndexedDB/idbindex_get.any.js @@ -0,0 +1,32 @@ +// META: global=window,worker +// META: title=IDBIndex.get() - returns the record +// META: script=resources/support.js +// @author Microsoft + +'use_strict'; + +let db; +let index; +const t = async_test(), + record = { key: 1, indexedProperty: "data" }; + +const open_rq = createdb(t); +open_rq.onupgradeneeded = function(e) { + db = e.target.result; + const objStore = db.createObjectStore("store", { keyPath: "key" }); + index = objStore.createIndex("index", "indexedProperty"); + + objStore.add(record); +} + +open_rq.onsuccess = function(e) { + const rq = db.transaction("store", "readonly", {durability: 'relaxed'}) + .objectStore("store") + .index("index") + .get(record.indexedProperty); + + rq.onsuccess = t.step_func(function(e) { + assert_equals(e.target.result.key, record.key); + t.done(); + }); +} diff --git a/IndexedDB/idbindex_get.htm b/IndexedDB/idbindex_get.htm deleted file mode 100644 index 861d7e54d1ebf5..00000000000000 --- a/IndexedDB/idbindex_get.htm +++ /dev/null @@ -1,36 +0,0 @@ - - -IDBIndex.get() - returns the record - - - - - - - -
diff --git a/IndexedDB/idbindex_get2.any.js b/IndexedDB/idbindex_get2.any.js new file mode 100644 index 00000000000000..6790a604d932a1 --- /dev/null +++ b/IndexedDB/idbindex_get2.any.js @@ -0,0 +1,34 @@ +// META: global=window,worker +// META: title=IDBIndex.get() - returns the record where the index contains duplicate values +// META: script=resources/support.js +// @author Microsoft + +'use_strict'; + +let db; +const t = async_test(); +const records = [ { key:1, indexedProperty:"data" }, + { key:2, indexedProperty:"data" }, + { key:3, indexedProperty:"data" } ]; + +const open_rq = createdb(t); +open_rq.onupgradeneeded = function(e) { + db = e.target.result; + const objStore = db.createObjectStore("test", { keyPath: "key" }); + objStore.createIndex("index", "indexedProperty"); + + for (let i = 0; i < records.length; i++) + objStore.add(records[i]); +}; + +open_rq.onsuccess = function(e) { + const rq = db.transaction("test", "readonly", {durability: 'relaxed'}) + .objectStore("test") + .index("index") + .get("data"); + + rq.onsuccess = t.step_func(function(e) { + assert_equals(e.target.result.key, records[0].key); + t.done(); + }); +}; diff --git a/IndexedDB/idbindex_get2.htm b/IndexedDB/idbindex_get2.htm deleted file mode 100644 index 66d2fee5cb7711..00000000000000 --- a/IndexedDB/idbindex_get2.htm +++ /dev/null @@ -1,39 +0,0 @@ - - -IDBIndex.get() - returns the record where the index contains duplicate values - - - - - - - -
diff --git a/IndexedDB/idbindex_get3.any.js b/IndexedDB/idbindex_get3.any.js new file mode 100644 index 00000000000000..673621b94933cf --- /dev/null +++ b/IndexedDB/idbindex_get3.any.js @@ -0,0 +1,22 @@ +// META: global=window,worker +// META: title=IDBIndex.get() - attempt to retrieve a record that doesn't exist +// META: script=resources/support.js +// @author Microsoft + +'use_strict'; + +let db; +const t = async_test(); + +const open_rq = createdb(t); +open_rq.onupgradeneeded = function(e) { + db = e.target.result; + const rq = db.createObjectStore("test", { keyPath: "key" }) + .createIndex("index", "indexedProperty") + .get(1); + + rq.onsuccess = t.step_func(function(e) { + assert_equals(e.target.result, undefined); + t.done(); + }); +}; diff --git a/IndexedDB/idbindex_get3.htm b/IndexedDB/idbindex_get3.htm deleted file mode 100644 index 62a0a4f3baf34d..00000000000000 --- a/IndexedDB/idbindex_get3.htm +++ /dev/null @@ -1,27 +0,0 @@ - - -IDBIndex.get() - attempt to retrieve a record that doesn't exist - - - - - - - -
diff --git a/IndexedDB/idbindex_get4.any.js b/IndexedDB/idbindex_get4.any.js new file mode 100644 index 00000000000000..096a29e0202edb --- /dev/null +++ b/IndexedDB/idbindex_get4.any.js @@ -0,0 +1,35 @@ +// META: global=window,worker +// META: title=IDBIndex.get() - returns the record with the first key in the range +// META: script=resources/support.js +// @author Microsoft + +'use_strict'; + +let db; +const t = async_test(); + +const open_rq = createdb(t); + +open_rq.onupgradeneeded = function(e) { + db = e.target.result; + const store = db.createObjectStore("store", { keyPath: "key" }); + store.createIndex("index", "indexedProperty"); + + for(let i = 0; i < 10; i++) { + store.add({ key: i, indexedProperty: "data" + i }); + } +} + +open_rq.onsuccess = function(e) { + const rq = db.transaction("store", "readonly", {durability: 'relaxed'}) + .objectStore("store") + .index("index") + .get(IDBKeyRange.bound('data4', 'data7')); + + rq.onsuccess = t.step_func(function(e) { + assert_equals(e.target.result.key, 4); + assert_equals(e.target.result.indexedProperty, 'data4'); + + step_timeout(function() { t.done(); }, 4); + }); +} diff --git a/IndexedDB/idbindex_get4.htm b/IndexedDB/idbindex_get4.htm deleted file mode 100644 index 369c288071f05b..00000000000000 --- a/IndexedDB/idbindex_get4.htm +++ /dev/null @@ -1,39 +0,0 @@ - - -IDBIndex.get() - returns the record with the first key in the range - - - - - - - -
diff --git a/IndexedDB/idbindex_get5.any.js b/IndexedDB/idbindex_get5.any.js new file mode 100644 index 00000000000000..d99dfdc3bf0fc4 --- /dev/null +++ b/IndexedDB/idbindex_get5.any.js @@ -0,0 +1,21 @@ +// META: global=window,worker +// META: title=IDBIndex.get() - throw DataError when using invalid key +// META: script=resources/support.js +// @author Intel + +'use_strict'; + +let db; +const t = async_test(); + +const open_rq = createdb(t); +open_rq.onupgradeneeded = function(e) { + db = e.target.result; + + const index = db.createObjectStore("test", { keyPath: "key" }) + .createIndex("index", "indexedProperty"); + assert_throws_dom("DataError",function(){ + index.get(NaN); + }); + t.done(); +}; diff --git a/IndexedDB/idbindex_get5.htm b/IndexedDB/idbindex_get5.htm deleted file mode 100644 index 9b0bfe4b35f55b..00000000000000 --- a/IndexedDB/idbindex_get5.htm +++ /dev/null @@ -1,26 +0,0 @@ - - -IDBIndex.get() - throw DataError when using invalid key - - - - - -
- - diff --git a/IndexedDB/idbindex_get6.any.js b/IndexedDB/idbindex_get6.any.js new file mode 100644 index 00000000000000..8cbbe160883db8 --- /dev/null +++ b/IndexedDB/idbindex_get6.any.js @@ -0,0 +1,24 @@ +// META: global=window,worker +// META: title=IDBIndex.get() - throw InvalidStateError when the index is deleted +// META: script=resources/support.js +// @author Intel + +'use_strict'; + +let db; +const t = async_test(); + +const open_rq = createdb(t); +open_rq.onupgradeneeded = function(e) { + 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", function(){ + index.get("data"); + }); + t.done(); +} diff --git a/IndexedDB/idbindex_get6.htm b/IndexedDB/idbindex_get6.htm deleted file mode 100644 index ca51b8492fcac9..00000000000000 --- a/IndexedDB/idbindex_get6.htm +++ /dev/null @@ -1,29 +0,0 @@ - - -IDBIndex.get() - throw InvalidStateError when the index is deleted - - - - - -
- - diff --git a/IndexedDB/idbindex_get7.any.js b/IndexedDB/idbindex_get7.any.js new file mode 100644 index 00000000000000..35c8cc8045f10f --- /dev/null +++ b/IndexedDB/idbindex_get7.any.js @@ -0,0 +1,28 @@ +// META: global=window,worker +// META: title=IDBIndex.get() - throw TransactionInactiveError on aborted transaction +// META: script=resources/support.js +// @author Intel + +'use_strict'; + +let db; +const t = async_test(); + +const open_rq = createdb(t); +open_rq.onupgradeneeded = function(e) { + db = e.target.result; + const store = db.createObjectStore("store", { keyPath: "key" }); + const index = store.createIndex("index", "indexedProperty"); + store.add({ key: 1, indexedProperty: "data" }); +} +open_rq.onsuccess = function(e) { + db = e.target.result; + const tx = db.transaction('store', 'readonly', {durability: 'relaxed'}); + const index = tx.objectStore('store').index('index'); + tx.abort(); + + assert_throws_dom("TransactionInactiveError", function(){ + index.get("data"); + }); + t.done(); +} diff --git a/IndexedDB/idbindex_get7.htm b/IndexedDB/idbindex_get7.htm deleted file mode 100644 index 5e9511a0b1a532..00000000000000 --- a/IndexedDB/idbindex_get7.htm +++ /dev/null @@ -1,32 +0,0 @@ - - -IDBIndex.get() - throw TransactionInactiveError on aborted transaction - - - - - -
- diff --git a/IndexedDB/idbindex_get8.any.js b/IndexedDB/idbindex_get8.any.js new file mode 100644 index 00000000000000..d6183c189af53a --- /dev/null +++ b/IndexedDB/idbindex_get8.any.js @@ -0,0 +1,23 @@ +// META: global=window,worker +// META: title=IDBIndex.get() - throw InvalidStateError on index deleted by aborted upgrade +// META: script=resources/support.js + +'use_strict'; + +let db; +const t = async_test(); + +const open_rq = createdb(t); +open_rq.onupgradeneeded = function(e) { + 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", function(){ + index.get("data"); + }); + t.done(); +} diff --git a/IndexedDB/idbindex_get8.htm b/IndexedDB/idbindex_get8.htm deleted file mode 100644 index a2565419b98bca..00000000000000 --- a/IndexedDB/idbindex_get8.htm +++ /dev/null @@ -1,27 +0,0 @@ - - -IDBIndex.get() - throw InvalidStateError on index deleted by aborted upgrade - - - - -
-