summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/IndexedDB/idbdatabase-createObjectStore-exception-order.htm
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /testing/web-platform/tests/IndexedDB/idbdatabase-createObjectStore-exception-order.htm
parentInitial commit. (diff)
downloadfirefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz
firefox-26a029d407be480d791972afb5975cf62c9360a6.zip
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/IndexedDB/idbdatabase-createObjectStore-exception-order.htm')
-rw-r--r--testing/web-platform/tests/IndexedDB/idbdatabase-createObjectStore-exception-order.htm84
1 files changed, 84 insertions, 0 deletions
diff --git a/testing/web-platform/tests/IndexedDB/idbdatabase-createObjectStore-exception-order.htm b/testing/web-platform/tests/IndexedDB/idbdatabase-createObjectStore-exception-order.htm
new file mode 100644
index 0000000000..1ca2ce1d7c
--- /dev/null
+++ b/testing/web-platform/tests/IndexedDB/idbdatabase-createObjectStore-exception-order.htm
@@ -0,0 +1,84 @@
+<!DOCTYPE html>
+<title>IndexedDB: IDBDatabase createObjectStore() Exception Ordering</title>
+<meta charset=utf-8>
+<link rel="help" href="https://w3c.github.io/IndexedDB/#dom-idbdatabase-createobjectstore">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="resources/support.js"></script>
+<script>
+
+indexeddb_test(
+ (t, db, txn, rq) => {
+ db.createObjectStore('s');
+
+ // Acknowledge the error, to prevent window.error from firing in
+ // browsers that implement that.
+ rq.onerror = e => { e.preventDefault(); };
+
+ txn.onabort = () => {
+ setTimeout(t.step_func(() => {
+ assert_throws_dom(
+ 'InvalidStateError', () => { db.createObjectStore('s2'); },
+ '"running an upgrade transaction" check (InvalidStateError) ' +
+ 'should precede "not active" check (TransactionInactiveError)');
+
+ t.done();
+ }), 0);
+ };
+ txn.abort();
+ },
+ (t, db) => { t.assert_unreached('open should fail'); },
+ 'IDBDatabase.createObjectStore exception order: ' +
+ 'InvalidStateError vs. TransactionInactiveError',
+ { upgrade_will_abort: true }
+);
+
+indexeddb_test(
+ (t, db, txn) => {
+ const store = db.createObjectStore('s');
+
+ txn.abort();
+
+ assert_throws_dom(
+ 'TransactionInactiveError',
+ () => { db.createObjectStore('s2', {keyPath: '-invalid-'}); },
+ '"not active" check (TransactionInactiveError) should precede ' +
+ '"valid key path" check (SyntaxError)');
+
+ t.done();
+ },
+ (t, db) => { t.assert_unreached('open should fail'); },
+ 'IDBDatabase.createObjectStore exception order: ' +
+ 'TransactionInactiveError vs. SyntaxError',
+ { upgrade_will_abort: true }
+);
+
+indexeddb_test(
+ (t, db) => {
+ db.createObjectStore('s');
+ assert_throws_dom('SyntaxError', () => {
+ db.createObjectStore('s', {keyPath: 'not a valid key path'});
+ }, '"Invalid key path" check (SyntaxError) should precede ' +
+ '"duplicate store name" check (ConstraintError)');
+ t.done();
+ },
+ (t, db) => {},
+ 'IDBDatabase.createObjectStore exception order: ' +
+ 'SyntaxError vs. ConstraintError'
+);
+
+indexeddb_test(
+ (t, db) => {
+ db.createObjectStore('s');
+ assert_throws_dom('ConstraintError', () => {
+ db.createObjectStore('s', {autoIncrement: true, keyPath: ''});
+ }, '"already exists" check (ConstraintError) should precede ' +
+ '"autoIncrement vs. keyPath" check (InvalidAccessError)');
+ t.done();
+ },
+ (t, db) => {},
+ 'IDBDatabase.createObjectStore exception order: ' +
+ 'ConstraintError vs. InvalidAccessError'
+);
+
+</script>