idbdatabase_close.any.js (2154B)
1 // META: global=window,worker 2 // META: title=IDBDatabase.close() 3 // META: script=resources/support.js 4 5 // Spec: https://w3c.github.io/IndexedDB/#dom-idbdatabase-transaction 6 7 'use strict'; 8 9 async_test(t => { 10 let db; 11 let versionchange_fired; 12 let blocked_fired; 13 let upgradeneeded_fired; 14 const open_rq = createdb(t); 15 let counter = 0; 16 17 open_rq.onupgradeneeded = function() {}; 18 open_rq.onsuccess = function(e) { 19 db = e.target.result; 20 db.onversionchange = t.step_func((e) => { 21 versionchange_fired = counter++; 22 }); 23 const rq = indexedDB.open(db.name, db.version + 1); 24 rq.onblocked = t.step_func((e) => { 25 blocked_fired = counter++; 26 db.close(); 27 }); 28 rq.onupgradeneeded = t.step_func((e) => { 29 upgradeneeded_fired = counter++; 30 }); 31 rq.onsuccess = t.step_func((e) => { 32 assert_equals(versionchange_fired, 0, 'versionchange event fired #'); 33 assert_equals(blocked_fired, 1, 'block event fired #'); 34 assert_equals( 35 upgradeneeded_fired, 2, 'second upgradeneeded event fired #'); 36 37 rq.result.close(); 38 t.done(); 39 }); 40 rq.onerror = t.step_func(e => { 41 assert_unreached('Unexpected database deletion error: ' + e.target.error); 42 }); 43 }; 44 }, 'Unblock the version change transaction created by an open database request'); 45 46 async_test(t => { 47 let db; 48 let blocked_fired = false; 49 let versionchange_fired = false; 50 const open_rq = createdb(t); 51 52 open_rq.onupgradeneeded = t.step_func(e => {}); 53 open_rq.onsuccess = t.step_func(e => { 54 db = e.target.result; 55 56 db.onversionchange = t.step_func(e => { 57 versionchange_fired = true; 58 }); 59 60 const rq = indexedDB.deleteDatabase(db.name); 61 rq.onblocked = t.step_func(e => { 62 blocked_fired = true; 63 db.close(); 64 }); 65 rq.onsuccess = t.step_func(e => { 66 assert_true(versionchange_fired, 'versionchange event fired') 67 assert_true(blocked_fired, 'block event fired') 68 t.done(); 69 }); 70 rq.onerror = t.step_func(e => { 71 assert_unreached('Unexpected database deletion error: ' + e.target.error); 72 }); 73 }); 74 }, 'Unblock the delete database request.');