| // META: global=window,worker | 
 | // META: title=IndexedDB: IDBDatabase deleteObjectStore() Exception Ordering | 
 | // META: script=resources/support.js | 
 |  | 
 | // Spec: https://w3c.github.io/IndexedDB/#dom-idbdatabase-deleteobjectstore | 
 |  | 
 | 'use strict'; | 
 |  | 
 | indexeddb_test( | 
 |     (t, db, txn) => { | 
 |       db.createObjectStore('s'); | 
 |       txn.onabort = () => { | 
 |         setTimeout( | 
 |             t.step_func(() => { | 
 |               assert_throws_dom( | 
 |                   'InvalidStateError', () => db.deleteObjectStore('s'), | 
 |                   '"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.deleteObjectStore exception order: ' + | 
 |         'InvalidStateError vs. TransactionInactiveError', | 
 |     {upgrade_will_abort: true}); | 
 |  | 
 | indexeddb_test( | 
 |     (t, db, txn) => { | 
 |       txn.abort(); | 
 |       assert_throws_dom( | 
 |           'TransactionInactiveError', () => db.deleteObjectStore('nope'), | 
 |           '"not active" check (TransactionInactiveError) should precede ' + | 
 |               '"name in database" check (NotFoundError)'); | 
 |       t.done(); | 
 |     }, | 
 |     (t, db) => { | 
 |       t.assert_unreached('open should fail'); | 
 |     }, | 
 |     'IDBDatabase.deleteObjectStore exception order: ' + | 
 |         'TransactionInactiveError vs. NotFoundError', | 
 |     {upgrade_will_abort: true}); |