blob: f941f219e563bcd3fd3f1ae5d6a718e4bb7e17e5 [file] [log] [blame]
Joshua Bell57aa2ac2017-03-07 20:34:571<!DOCTYPE html>
2<meta charset=utf-8>
3<title>Upgrade transaction deactivation timing</title>
4<link rel="help" href="http://localhost:4201/#upgrade-transaction-steps">
5<script src=/resources/testharness.js></script>
6<script src=/resources/testharnessreport.js></script>
7<script src=support.js></script>
8<script>
9
10indexeddb_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
19indexeddb_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
34indexeddb_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');
47
48</script>