Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
- This WPT test may be referenced by the following Test IDs:
- /IndexedDB/idbfactory_deleteDatabase.any.html - WPT Dashboard Interop Dashboard
- /IndexedDB/idbfactory_deleteDatabase.any.serviceworker.html - WPT Dashboard Interop Dashboard
- /IndexedDB/idbfactory_deleteDatabase.any.sharedworker.html - WPT Dashboard Interop Dashboard
- /IndexedDB/idbfactory_deleteDatabase.any.worker.html - WPT Dashboard Interop Dashboard
// 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');
}