74 lines
2.1 KiB
JavaScript
74 lines
2.1 KiB
JavaScript
// META: global=window,worker
|
|
// META: title=IDBDatabase.close()
|
|
// META: script=resources/support.js
|
|
|
|
// Spec: https://w3c.github.io/IndexedDB/#dom-idbdatabase-transaction
|
|
|
|
'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.');
|