61 lines
1.6 KiB
JavaScript
61 lines
1.6 KiB
JavaScript
if (this.importScripts) {
|
|
importScripts('../../../resources/js-test.js');
|
|
importScripts('shared.js');
|
|
}
|
|
|
|
description("Check processing of pending version change requests - descending versions.");
|
|
|
|
indexedDBTest(null, function onConnection1Open(evt) {
|
|
preamble(evt);
|
|
db = event.target.result;
|
|
|
|
request = evalAndLog("indexedDB.open(dbname, 3)");
|
|
request.onblocked = connection2Blocked;
|
|
request.onupgradeneeded = connection2UpgradeNeeded;
|
|
request.onsuccess = connection2OpenSuccess;
|
|
request.onerror = unexpectedErrorCallback;
|
|
|
|
request = evalAndLog("indexedDB.open(dbname, 2)");
|
|
request.onblocked = connection3Blocked;
|
|
request.onupgradeneeded = unexpectedUpgradeNeededCallback;
|
|
request.onsuccess = unexpectedErrorCallback;
|
|
request.onerror = connection3Error;
|
|
});
|
|
|
|
function connection2Blocked(evt)
|
|
{
|
|
preamble(evt);
|
|
// Attempt to delay this until the third open has been processed;
|
|
// not strictly necessary but will exercise IPC/event timing.
|
|
setTimeout(function() {
|
|
evalAndLog("db.close()");
|
|
}, 0);
|
|
}
|
|
|
|
function connection3Blocked(evt)
|
|
{
|
|
preamble(evt);
|
|
}
|
|
|
|
function connection2UpgradeNeeded(evt)
|
|
{
|
|
preamble(evt);
|
|
shouldBe("event.oldVersion", "1");
|
|
shouldBe("event.newVersion", "3");
|
|
}
|
|
|
|
function connection2OpenSuccess(evt)
|
|
{
|
|
preamble(evt);
|
|
evalAndLog("event.target.result.close()");
|
|
evalAndLog("db2 = event.target.result");
|
|
shouldBe("db2.version", "3");
|
|
}
|
|
|
|
function connection3Error(evt)
|
|
{
|
|
preamble(evt);
|
|
shouldBeEqualToString("event.target.error.name", "VersionError");
|
|
finishJSTest();
|
|
}
|