tor-browser

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

transaction-abort-request-error.any.js (2614B)


      1 // META: title=IndexedDB: Test error events fired at requests from aborted transaction
      2 // META: global=window,worker
      3 // META: script=resources/support-promises.js
      4 // META: script=resources/support.js
      5 
      6 // Spec: https://w3c.github.io/IndexedDB/#abort-transaction
      7 
      8 'use strict';
      9 
     10 indexeddb_test(
     11    (t, db) => {
     12      db.createObjectStore('store');
     13    },
     14    (t, db) => {
     15      const tx = db.transaction('store', 'readonly');
     16      const request = tx.objectStore('store').get(0);
     17      tx.abort();
     18      request.onsuccess = t.unreached_func('request should not succeed');
     19 
     20      let connection_saw_error = false;
     21      let transaction_saw_error = false;
     22 
     23      request.onerror = t.step_func(e => {
     24        assert_equals(
     25            request.readyState, 'done', 'Request\'s done flag should be set');
     26        assert_equals(
     27            request.result, undefined, 'Request\'s result should be undefined');
     28        assert_equals(
     29            request.error.name, 'AbortError',
     30            'Request\'s error should be AbortError');
     31 
     32        assert_equals(e.target, request, 'event target should be request');
     33        assert_equals(e.type, 'error', 'Event type should be error');
     34        assert_true(e.bubbles, 'Event should bubble');
     35        assert_true(e.cancelable, 'Event should cancelable');
     36 
     37        assert_true(
     38            connection_saw_error, 'Event propagated through connection');
     39        assert_true(
     40            transaction_saw_error, 'Event propagated through transaction');
     41        t.done();
     42      });
     43 
     44      // Event propagates via "get the parent" on request and transaction.
     45 
     46      db.addEventListener(
     47          'error', t.step_func(e => {
     48            connection_saw_error = true;
     49            assert_equals(e.target, request, 'event target should be request');
     50            assert_equals(e.type, 'error', 'Event type should be error');
     51            assert_true(e.bubbles, 'Event should bubble');
     52            assert_true(e.cancelable, 'Event should cancelable');
     53          }),
     54          true);
     55 
     56      tx.addEventListener(
     57          'error', t.step_func(e => {
     58            transaction_saw_error = true;
     59            assert_equals(e.target, request, 'event target should be request');
     60            assert_equals(e.type, 'error', 'Event type should be error');
     61            assert_true(e.bubbles, 'Event should bubble');
     62            assert_true(e.cancelable, 'Event should cancelable');
     63 
     64            assert_true(
     65                connection_saw_error, 'Event propagated through connection');
     66          }),
     67          true);
     68    },
     69    'Properties of error events fired at requests when aborting a transaction');