diff --git a/IndexedDB/cursor-overloads.any.js b/IndexedDB/cursor-overloads.any.js new file mode 100644 index 00000000000000..dd80d2f4038240 --- /dev/null +++ b/IndexedDB/cursor-overloads.any.js @@ -0,0 +1,87 @@ +// META: title=IndexedDB +// META: global=window,worker +// META: script=resources/support.js + +'use strict'; + +async_test(t => { + let db; + let trans; + let store; + let index; + let request = createdb(t); + + request.onupgradeneeded = function(e) { + db = e.target.result; + store = db.createObjectStore('store'); + index = store.createIndex('index', 'value'); + store.put({value: 0}, 0); + trans = request.transaction; + trans.oncomplete = verifyOverloads; + }; + + function verifyOverloads() { + trans = db.transaction('store', 'readonly', {durability: 'relaxed'}); + store = trans.objectStore('store'); + index = store.index('index'); + + checkCursorDirection(store.openCursor(), 'next'); + checkCursorDirection(store.openCursor(0), 'next'); + checkCursorDirection(store.openCursor(0, 'next'), 'next'); + checkCursorDirection(store.openCursor(0, 'nextunique'), 'nextunique'); + checkCursorDirection(store.openCursor(0, 'prev'), 'prev'); + checkCursorDirection(store.openCursor(0, 'prevunique'), 'prevunique'); + + checkCursorDirection(store.openCursor(IDBKeyRange.only(0)), 'next'); + checkCursorDirection(store.openCursor(IDBKeyRange.only(0), 'next'), 'next'); + checkCursorDirection( + store.openCursor(IDBKeyRange.only(0), 'nextunique'), 'nextunique'); + checkCursorDirection(store.openCursor(IDBKeyRange.only(0), 'prev'), 'prev'); + checkCursorDirection( + store.openCursor(IDBKeyRange.only(0), 'prevunique'), 'prevunique'); + + checkCursorDirection(index.openCursor(), 'next'); + checkCursorDirection(index.openCursor(0), 'next'); + checkCursorDirection(index.openCursor(0, 'next'), 'next'); + checkCursorDirection(index.openCursor(0, 'nextunique'), 'nextunique'); + checkCursorDirection(index.openCursor(0, 'prev'), 'prev'); + checkCursorDirection(index.openCursor(0, 'prevunique'), 'prevunique'); + + checkCursorDirection(index.openCursor(IDBKeyRange.only(0)), 'next'); + checkCursorDirection(index.openCursor(IDBKeyRange.only(0), 'next'), 'next'); + checkCursorDirection( + index.openCursor(IDBKeyRange.only(0), 'nextunique'), 'nextunique'); + checkCursorDirection(index.openCursor(IDBKeyRange.only(0), 'prev'), 'prev'); + checkCursorDirection( + index.openCursor(IDBKeyRange.only(0), 'prevunique'), 'prevunique'); + + checkCursorDirection(index.openKeyCursor(), 'next'); + checkCursorDirection(index.openKeyCursor(0), 'next'); + checkCursorDirection(index.openKeyCursor(0, 'next'), 'next'); + checkCursorDirection(index.openKeyCursor(0, 'nextunique'), 'nextunique'); + checkCursorDirection(index.openKeyCursor(0, 'prev'), 'prev'); + checkCursorDirection(index.openKeyCursor(0, 'prevunique'), 'prevunique'); + + checkCursorDirection(index.openKeyCursor(IDBKeyRange.only(0)), 'next'); + checkCursorDirection( + index.openKeyCursor(IDBKeyRange.only(0), 'next'), 'next'); + checkCursorDirection( + index.openKeyCursor(IDBKeyRange.only(0), 'nextunique'), 'nextunique'); + checkCursorDirection( + index.openKeyCursor(IDBKeyRange.only(0), 'prev'), 'prev'); + checkCursorDirection( + index.openKeyCursor(IDBKeyRange.only(0), 'prevunique'), 'prevunique'); + + t.done(); + } + + function checkCursorDirection(request, direction) { + request.onsuccess = function(event) { + assert_not_equals( + event.target.result, null, 'Check the result is not null') + assert_equals( + event.target.result.direction, direction, + 'Check the result direction'); + }; + } +}, 'Validate the overloads of IDBObjectStore.openCursor(), IDBIndex.openCursor() and IDBIndex.openKeyCursor()'); diff --git a/IndexedDB/cursor-overloads.htm b/IndexedDB/cursor-overloads.htm deleted file mode 100644 index 7beeaa2bb39cde..00000000000000 --- a/IndexedDB/cursor-overloads.htm +++ /dev/null @@ -1,88 +0,0 @@ - - - - - -Validate the overloads of IDBObjectStore.openCursor(), IDBIndex.openCursor() and IDBIndex.openKeyCursor() - - - - - - - - -
diff --git a/IndexedDB/delete-request-queue.any.js b/IndexedDB/delete-request-queue.any.js new file mode 100644 index 00000000000000..6b2034c7f6b653 --- /dev/null +++ b/IndexedDB/delete-request-queue.any.js @@ -0,0 +1,23 @@ +// META: title=IndexedDB +// META: global=window,worker +// META: script=resources/support.js + +'use strict'; + +let saw; +indexeddb_test( + (t, db) => { + this.saw = expect(t, ['delete1', 'delete2']); + let r = indexedDB.deleteDatabase(db.name); + r.onerror = t.unreached_func('delete should succeed'); + r.onsuccess = t.step_func(e => saw('delete1')); + }, + (t, db) => { + let r = indexedDB.deleteDatabase(db.name); + r.onerror = t.unreached_func('delete should succeed'); + r.onsuccess = t.step_func(e => saw('delete2')); + + db.close(); + t.done(); + }, + 'Deletes are processed as a FIFO queue'); diff --git a/IndexedDB/delete-request-queue.html b/IndexedDB/delete-request-queue.html deleted file mode 100644 index d8dfbf9a6061dd..00000000000000 --- a/IndexedDB/delete-request-queue.html +++ /dev/null @@ -1,27 +0,0 @@ - - -IndexedDB: delete requests are processed as a FIFO queue - - - - - diff --git a/IndexedDB/error-attributes.any.js b/IndexedDB/error-attributes.any.js new file mode 100644 index 00000000000000..9b5003040b273b --- /dev/null +++ b/IndexedDB/error-attributes.any.js @@ -0,0 +1,32 @@ +// META: title=IndexedDB +// META: global=window,worker +// META: script=resources/support.js + +'use strict'; + +indexeddb_test( + function(t, db) { + db.createObjectStore('store'); + }, + function(t, db) { + let tx = db.transaction('store', 'readwrite', {durability: 'relaxed'}); + let store = tx.objectStore('store'); + let r1 = store.add('value', 'key'); + r1.onerror = t.unreached_func('first add should succeed'); + + let r2 = store.add('value', 'key'); + r2.onsuccess = t.unreached_func('second add should fail'); + + r2.onerror = t.step_func(function() { + assert_true(r2.error instanceof DOMException); + assert_equals(r2.error.name, 'ConstraintError'); + }); + + tx.oncomplete = t.unreached_func('transaction should not complete'); + tx.onabort = t.step_func(function() { + assert_true(tx.error instanceof DOMException); + assert_equals(tx.error.name, 'ConstraintError'); + t.done(); + }); + }, + 'IDBRequest and IDBTransaction error properties should be DOMExceptions'); diff --git a/IndexedDB/error-attributes.html b/IndexedDB/error-attributes.html deleted file mode 100644 index d65bf21790a16a..00000000000000 --- a/IndexedDB/error-attributes.html +++ /dev/null @@ -1,38 +0,0 @@ - - -IndexedDB: Error attributes are DOMExceptions - - - - -