| <!DOCTYPE html> |
| <meta charset=utf-8> |
| <title>Upgrade transaction deactivation timing</title> |
| <link rel="help" href="http://localhost:4201/#upgrade-transaction-steps"> |
| <script src=/resources/testharness.js></script> |
| <script src=/resources/testharnessreport.js></script> |
| <script src=support.js></script> |
| <script> |
| |
| indexeddb_test( |
| (t, db, tx) => { |
| db.createObjectStore('store'); |
| assert_true(is_transaction_active(tx, 'store'), |
| 'Transaction should be active in upgradeneeded callback'); |
| }, |
| (t, db) => { t.done(); }, |
| 'Upgrade transactions are active in upgradeneeded callback'); |
| |
| indexeddb_test( |
| (t, db, tx) => { |
| db.createObjectStore('store'); |
| assert_true(is_transaction_active(tx, 'store'), |
| 'Transaction should be active in upgradeneeded callback'); |
| |
| Promise.resolve().then(t.step_func(() => { |
| assert_true(is_transaction_active(tx, 'store'), |
| 'Transaction should be active in microtask checkpoint'); |
| })); |
| }, |
| (t, db) => { t.done(); }, |
| 'Upgrade transactions are active in upgradeneeded callback and microtasks'); |
| |
| |
| indexeddb_test( |
| (t, db, tx) => { |
| db.createObjectStore('store'); |
| const release_tx = keep_alive(tx, 'store'); |
| |
| setTimeout(t.step_func(() => { |
| assert_false(is_transaction_active(tx, 'store'), |
| 'Transaction should be inactive in next task'); |
| release_tx(); |
| }), 0); |
| }, |
| (t, db) => { t.done(); }, |
| 'Upgrade transactions are deactivated before next task'); |
| |
| </script> |