tor-browser

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

idbfactory-open-request-error.any.js (2005B)


      1 // META: title=IDBFactory open(): request properties on error
      2 // META: global=window,worker
      3 // META: script=resources/support.js
      4 
      5 // Spec: https://w3c.github.io/IndexedDB/#dom-idbfactory-open
      6 
      7 'use strict';
      8 
      9 let saw_abort = false;
     10 
     11 indexeddb_test(
     12    (t, db, tx, rq) => {
     13      const store = db.createObjectStore('store');
     14      store.put({name: 'a'}, 1);
     15      store.put({name: 'a'}, 2);
     16      store.createIndex('index', 'name', {unique: true});
     17 
     18      assert_equals(
     19          rq.readyState, 'done',
     20          'request done flag should be set during upgradeneeded');
     21      assert_equals(
     22          rq.result, db,
     23          'request result should be set (to connection) during upgradeneeded');
     24      assert_equals(
     25          rq.error, null, 'request result should be null during upgradeneeded');
     26 
     27      tx.oncomplete = t.unreached_func('transaction should abort');
     28      tx.onabort = t.step_func(() => {
     29        saw_abort = true;
     30 
     31        assert_equals(
     32            rq.readyState, 'done',
     33            'request done flag should still be set during abort');
     34 
     35        // Chrome is flaky here. See: https://crbug.com/723846
     36        /*
     37        assert_equals(
     38          rq.result, db,
     39          'request result should still be set (to connection) during abort');
     40        assert_equals(
     41          rq.error, null,
     42          'request result should still be null during abort');
     43        */
     44      });
     45 
     46      rq.onerror = t.step_func(() => {
     47        assert_true(saw_abort, 'abort event should fire before error');
     48        assert_equals(
     49            rq.readyState, 'done', 'request done flag should be set on error');
     50        assert_equals(
     51            rq.result, undefined,
     52            'request result should be undefined on error');
     53        assert_equals(
     54            rq.error.name, 'AbortError',
     55            'request error should be AbortError on error');
     56        t.done();
     57      });
     58    },
     59    (t, db) => {},
     60    'Properties of IDBOpenDBRequest during failed IDBFactory open()',
     61    {upgrade_will_abort: true});