// META: title=IDBFactory.deleteDatabase() // META: global=window,worker // META: script=resources/support.js 'use strict'; async_test(t => { const open_rq = createdb(t, undefined, 9); open_rq.onupgradeneeded = t.step_func(e => {}); open_rq.onsuccess = t.step_func(e => { const db = e.target.result; db.close(); const delete_rq = indexedDB.deleteDatabase(db.name); delete_rq.onerror = t.step_func(e => { assert_unreached('Unexpected delete_rq.error event'); }); delete_rq.onsuccess = t.step_func(e => { assert_equals(e.target.source, null, 'event.target.source'); t.done(); }); }); }, 'deleteDatabase() request should have no source'); async_test(t => { const open_rq = createdb(t, undefined, 9); open_rq.onupgradeneeded = t.step_func(e => {}); open_rq.onsuccess = t.step_func(e => { const db = e.target.result; db.close(); const delete_rq = indexedDB.deleteDatabase(db.name); delete_rq.onerror = t.step_func(e => { assert_unreached('Unexpected delete_rq.error event'); }); delete_rq.onsuccess = t.step_func(e => { assert_equals(e.target.result, undefined, 'result'); t.done(); }); }); }, 'Result of the deleteDatabase() request is set to undefined.'); async_test(t => { let db; const open_rq = createdb(t, undefined, 9); open_rq.onupgradeneeded = t.step_func(e => { db = e.target.result; db.createObjectStore('os'); }); open_rq.onsuccess = t.step_func(e => { db.close(); const delete_rq = indexedDB.deleteDatabase(db.name); delete_rq.onerror = t.step_func(e => { assert_unreached('Unexpected delete_rq.error event'); }); delete_rq.onsuccess = t.step_func(e => { assert_equals(e.oldVersion, 9, 'oldVersion'); assert_equals(e.newVersion, null, 'newVersion'); assert_equals(e.target.result, undefined, 'result'); assert_true( e instanceof IDBVersionChangeEvent, 'e instanceof IDBVersionChangeEvent'); t.done(); }); }); }, 'The deleteDatabase() request\'s success event is an IDBVersionChangeEvent.'); async_test(t => { const dbname = location + '-' + t.name; indexedDB.deleteDatabase(dbname); let db; const openrq = indexedDB.open(dbname, 3); openrq.onupgradeneeded = t.step_func(e => { e.target.result.createObjectStore('store'); }); openrq.onsuccess = t.step_func(e => { db = e.target.result; // Errors db.onversionchange = fail(t, 'db.versionchange'); db.onerror = fail(t, 'db.error'); db.abort = fail(t, 'db.abort'); step_timeout(t.step_func(() => Second(t, dbname)), 4); db.close(); }); // Errors openrq.onerror = fail(t, 'open.error'); openrq.onblocked = fail(t, 'open.blocked'); }, 'Delete an existing database - Test events opening a second \ database when one connection is open already'); function Second(t, dbname) { const deleterq = indexedDB.deleteDatabase(dbname); deleterq.onsuccess = e => { t.done(); }; deleterq.onerror = fail(t, 'delete.error'); deleterq.onblocked = fail(t, 'delete.blocked'); deleterq.onupgradeneeded = fail(t, 'delete.upgradeneeded'); }