| // META: title=IndexedDB |
| // META: global=window,worker |
| // META: script=resources/support.js |
| |
| 'use strict'; |
| |
| async_test(t => { |
| let db; |
| let open_rq = createdb(t); |
| let sawTransactionComplete = false; |
| |
| open_rq.onupgradeneeded = function(e) { |
| db = e.target.result; |
| assert_equals(db.version, 1); |
| |
| db.createObjectStore('os'); |
| db.close(); |
| |
| e.target.transaction.oncomplete = function() { |
| sawTransactionComplete = true; |
| }; |
| }; |
| |
| open_rq.onerror = function(e) { |
| assert_true(sawTransactionComplete, 'saw transaction.complete'); |
| |
| assert_equals(e.target.error.name, 'AbortError'); |
| assert_equals(e.result, undefined); |
| |
| assert_true(!!db); |
| assert_equals(db.version, 1); |
| assert_equals(db.objectStoreNames.length, 1); |
| assert_throws_dom('InvalidStateError', function() { |
| db.transaction('os', 'readonly'); |
| }); |
| |
| t.done(); |
| }; |
| }, 'When db.close() is called in onupgradeneeded, the db is cleaned up on refresh'); |