| <!doctype html> |
| <meta charset=utf-8> |
| <title>IndexedDB: IDBDatabase transaction() Exception Ordering</title> |
| <link rel="help" href="https://w3c.github.io/IndexedDB/#dom-idbdatabase-transaction"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="support.js"></script> |
| <script> |
| |
| indexeddb_test( |
| (t, db) => { |
| db.createObjectStore('s'); |
| }, |
| (t, db) => { |
| db.close(); |
| assert_throws('InvalidStateError', () => { |
| db.transaction('no-such-store'); |
| }, '"Connection is closed" check (InvalidStateError) should precede ' + |
| '"store names" check (NotFoundError)'); |
| t.done(); |
| }, |
| 'IDBDatabase.transaction exception order: InvalidStateError vs. NotFoundError' |
| ); |
| |
| indexeddb_test( |
| (t, db) => { |
| db.createObjectStore('s'); |
| }, |
| (t, db) => { |
| db.close(); |
| assert_throws('InvalidStateError', () => { |
| db.transaction([]); |
| }, '"Connection is closed" check (InvalidStateError) should precede ' + |
| '"stores is empty" check (InvalidAccessError)'); |
| t.done(); |
| }, |
| 'IDBDatabase.transaction exception order: InvalidStateError vs. InvalidAccessError' |
| ); |
| |
| indexeddb_test( |
| (t, db) => { |
| db.createObjectStore('s'); |
| }, |
| (t, db) => { |
| assert_throws('NotFoundError', () => { |
| db.transaction('no-such-store', 'versionchange'); |
| }, '"No such store" check (NotFoundError) should precede ' + |
| '"invalid mode" check (TypeError)'); |
| t.done(); |
| }, |
| 'IDBDatabase.transaction exception order: NotFoundError vs. TypeError' |
| ); |
| |
| </script> |