82 lines
2.5 KiB
JavaScript
82 lines
2.5 KiB
JavaScript
// META: title=Event order when opening a second database when one connection is open already
|
|
// META: global=window,worker
|
|
// META: script=resources/support.js
|
|
|
|
'use strict';
|
|
|
|
async function setupDatabase(t, dbname, version) {
|
|
indexedDB.deleteDatabase(dbname);
|
|
|
|
const openrq = indexedDB.open(dbname, version);
|
|
const eventWatcher = new EventWatcher(
|
|
t, openrq, ['upgradeneeded', 'error', 'blocked', 'success']);
|
|
|
|
let event = await eventWatcher.wait_for('upgradeneeded');
|
|
const db = event.target.result;
|
|
db.createObjectStore('store');
|
|
|
|
await eventWatcher.wait_for('success');
|
|
return db;
|
|
}
|
|
|
|
promise_test(async t => {
|
|
const dbname = location + '-' + t.name;
|
|
const version = 3;
|
|
const db = await setupDatabase(t, dbname, version);
|
|
let db2;
|
|
|
|
t.add_cleanup(() => {
|
|
if (db2)
|
|
db2.close();
|
|
if (db)
|
|
db.close();
|
|
indexedDB.deleteDatabase(dbname);
|
|
});
|
|
|
|
const dbWatcher = new EventWatcher(t, db, ['versionchange', 'close']);
|
|
const openrq2 = indexedDB.open(dbname, version + 1);
|
|
let versionChangeEvent = await dbWatcher.wait_for('versionchange');
|
|
const openrq2Watcher = new EventWatcher(
|
|
t, openrq2, ['upgradeneeded', 'success', 'error', 'blocked']);
|
|
|
|
assert_equals(versionChangeEvent.oldVersion, version, 'old version');
|
|
assert_equals(versionChangeEvent.newVersion, version + 1, 'new version');
|
|
db.close();
|
|
|
|
await openrq2Watcher.wait_for('upgradeneeded');
|
|
|
|
let successEvent = await openrq2Watcher.wait_for('success');
|
|
db2 = successEvent.target.result;
|
|
}, 'No Blocked event');
|
|
|
|
promise_test(async t => {
|
|
const dbname = location + '-' + t.name;
|
|
const version = 3;
|
|
const db = await setupDatabase(t, dbname, version);
|
|
let db2;
|
|
|
|
t.add_cleanup(() => {
|
|
if (db2)
|
|
db2.close();
|
|
if (db)
|
|
db.close();
|
|
indexedDB.deleteDatabase(dbname);
|
|
});
|
|
|
|
const dbWatcher = new EventWatcher(t, db, ['versionchange', 'close']);
|
|
const openrq2 = indexedDB.open(dbname, version + 1);
|
|
let versionChangeEvent = await dbWatcher.wait_for('versionchange');
|
|
const openrq2Watcher = new EventWatcher(
|
|
t, openrq2, ['blocked', 'upgradeneeded', 'error', 'success']);
|
|
|
|
assert_equals(versionChangeEvent.oldVersion, version, 'old version');
|
|
assert_equals(versionChangeEvent.newVersion, version + 1, 'new version');
|
|
|
|
let blockedEvent = await openrq2Watcher.wait_for('blocked');
|
|
db.close();
|
|
|
|
await openrq2Watcher.wait_for('upgradeneeded');
|
|
|
|
let successEvent = await openrq2Watcher.wait_for('success');
|
|
db2 = successEvent.target.result;
|
|
}, 'Blocked event');
|