tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

idbdatabase-transaction-exception-order.any.js (1937B)


      1 // META: global=window,worker
      2 // META: title=IndexedDB: IDBDatabase transaction() Exception Ordering
      3 // META: script=resources/support.js
      4 
      5 // Spec: https://w3c.github.io/IndexedDB/#dom-idbdatabase-transaction
      6 
      7 'use strict';
      8 
      9 indexeddb_test(
     10    (t, db) => {
     11      db.createObjectStore('s');
     12    },
     13    (t, db) => {
     14      db.close();
     15      assert_throws_dom(
     16          'InvalidStateError', () => db.transaction('no-such-store'),
     17          '"Connection is closed" check (InvalidStateError) should precede ' +
     18              '"store names" check (NotFoundError)');
     19      t.done();
     20    },
     21    'IDBDatabase.transaction exception order: InvalidStateError vs. NotFoundError');
     22 
     23 indexeddb_test(
     24    (t, db) => {
     25      db.createObjectStore('s');
     26    },
     27    (t, db) => {
     28      db.close();
     29      assert_throws_dom(
     30          'InvalidStateError', () => db.transaction([]),
     31          '"Connection is closed" check (InvalidStateError) should precede ' +
     32              '"stores is empty" check (InvalidAccessError)');
     33      t.done();
     34    },
     35    'IDBDatabase.transaction exception order: InvalidStateError vs. InvalidAccessError');
     36 
     37 // Verify that the invalid mode check actually throws an exception.
     38 indexeddb_test(
     39    (t, db) => {
     40      db.createObjectStore('s');
     41    },
     42    (t, db) => {
     43      assert_throws_js(
     44          TypeError, () => db.transaction('s', 'versionchange'),
     45          '"invalid mode" check should throw TypeError');
     46      t.done();
     47    },
     48    'IDBDatabase.transaction throws exception on invalid mode');
     49 
     50 indexeddb_test(
     51    (t, db) => {
     52      db.createObjectStore('s');
     53    },
     54    (t, db) => {
     55      assert_throws_dom(
     56          'NotFoundError',
     57          () => db.transaction('no-such-store', 'versionchange'),
     58          '"No such store" check (NotFoundError) should precede ' +
     59              '"invalid mode" check (TypeError)');
     60      t.done();
     61    },
     62    'IDBDatabase.transaction exception order: NotFoundError vs. TypeError');