close-in-upgradeneeded.any.js (972B)
1 // META: title=IndexedDB 2 // META: global=window,worker 3 // META: script=resources/support.js 4 5 'use strict'; 6 7 async_test(t => { 8 let db; 9 let open_rq = createdb(t); 10 let sawTransactionComplete = false; 11 12 open_rq.onupgradeneeded = function(e) { 13 db = e.target.result; 14 assert_equals(db.version, 1); 15 16 db.createObjectStore('os'); 17 db.close(); 18 19 e.target.transaction.oncomplete = function() { 20 sawTransactionComplete = true; 21 }; 22 }; 23 24 open_rq.onerror = function(e) { 25 assert_true(sawTransactionComplete, 'saw transaction.complete'); 26 27 assert_equals(e.target.error.name, 'AbortError'); 28 assert_equals(e.result, undefined); 29 30 assert_true(!!db); 31 assert_equals(db.version, 1); 32 assert_equals(db.objectStoreNames.length, 1); 33 assert_throws_dom('InvalidStateError', function() { 34 db.transaction('os', 'readonly'); 35 }); 36 37 t.done(); 38 }; 39 }, 'When db.close() is called in onupgradeneeded, the db is cleaned up on refresh');