tor-browser

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

upgrade-transaction-deactivation-timing.any.js (1516B)


      1 // META: title=Upgrade transaction deactivation timing
      2 // META: global=window,worker
      3 // META: script=resources/support.js
      4 // META: script=resources/support-promises.js
      5 
      6 // Spec: "https://w3c.github.io/IndexedDB/#upgrade-transaction-steps"
      7 
      8 'use strict';
      9 
     10 indexeddb_test(
     11    (t, db, tx) => {
     12        db.createObjectStore('store');
     13        assert_true(is_transaction_active(tx, 'store'),
     14            'Transaction should be active in upgradeneeded callback');
     15    },
     16    (t, db) => { t.done(); },
     17    'Upgrade transactions are active in upgradeneeded callback');
     18 
     19 indexeddb_test(
     20    (t, db, tx) => {
     21        db.createObjectStore('store');
     22        assert_true(is_transaction_active(tx, 'store'),
     23            'Transaction should be active in upgradeneeded callback');
     24 
     25        Promise.resolve().then(t.step_func(() => {
     26            assert_true(is_transaction_active(tx, 'store'),
     27                'Transaction should be active in microtask checkpoint');
     28        }));
     29    },
     30    (t, db) => { t.done(); },
     31    'Upgrade transactions are active in upgradeneeded callback and microtasks');
     32 
     33 
     34 indexeddb_test(
     35    (t, db, tx) => {
     36        db.createObjectStore('store');
     37        const release_tx = keep_alive(tx, 'store');
     38 
     39        setTimeout(t.step_func(() => {
     40            assert_false(is_transaction_active(tx, 'store'),
     41                'Transaction should be inactive in next task');
     42            release_tx();
     43        }), 0);
     44    },
     45    (t, db) => { t.done(); },
     46    'Upgrade transactions are deactivated before next task');