Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
- This WPT test may be referenced by the following Test IDs:
- /IndexedDB/idbdatabase_close.any.html - WPT Dashboard Interop Dashboard
- /IndexedDB/idbdatabase_close.any.serviceworker.html - WPT Dashboard Interop Dashboard
- /IndexedDB/idbdatabase_close.any.sharedworker.html - WPT Dashboard Interop Dashboard
- /IndexedDB/idbdatabase_close.any.worker.html - WPT Dashboard Interop Dashboard
// META: global=window,worker
// META: title=IDBDatabase.close()
// META: script=resources/support.js
'use strict';
async_test(t => {
let db;
let versionchange_fired;
let blocked_fired;
let upgradeneeded_fired;
const open_rq = createdb(t);
let counter = 0;
open_rq.onupgradeneeded = function() {};
open_rq.onsuccess = function(e) {
db = e.target.result;
db.onversionchange = t.step_func((e) => {
versionchange_fired = counter++;
});
const rq = indexedDB.open(db.name, db.version + 1);
rq.onblocked = t.step_func((e) => {
blocked_fired = counter++;
db.close();
});
rq.onupgradeneeded = t.step_func((e) => {
upgradeneeded_fired = counter++;
});
rq.onsuccess = t.step_func((e) => {
assert_equals(versionchange_fired, 0, 'versionchange event fired #');
assert_equals(blocked_fired, 1, 'block event fired #');
assert_equals(
upgradeneeded_fired, 2, 'second upgradeneeded event fired #');
rq.result.close();
t.done();
});
rq.onerror = t.step_func(e => {
assert_unreached('Unexpected database deletion error: ' + e.target.error);
});
};
}, 'Unblock the version change transaction created by an open database request');
async_test(t => {
let db;
let blocked_fired = false;
let versionchange_fired = false;
const open_rq = createdb(t);
open_rq.onupgradeneeded = t.step_func(e => {});
open_rq.onsuccess = t.step_func(e => {
db = e.target.result;
db.onversionchange = t.step_func(e => {
versionchange_fired = true;
});
const rq = indexedDB.deleteDatabase(db.name);
rq.onblocked = t.step_func(e => {
blocked_fired = true;
db.close();
});
rq.onsuccess = t.step_func(e => {
assert_true(versionchange_fired, 'versionchange event fired')
assert_true(blocked_fired, 'block event fired')
t.done();
});
rq.onerror = t.step_func(e => {
assert_unreached('Unexpected database deletion error: ' + e.target.error);
});
});
}, 'Unblock the delete database request.');