96 lines
2.6 KiB
JavaScript
96 lines
2.6 KiB
JavaScript
if (this.importScripts) {
|
|
importScripts('../../../resources/js-test.js');
|
|
importScripts('shared.js');
|
|
}
|
|
|
|
description("Test that a database is recreated correctly when an open-with-version call is queued behind a deleteDatabase call");
|
|
|
|
function test()
|
|
{
|
|
removeVendorPrefixes();
|
|
setDBNameFromPath();
|
|
request = evalAndLog("indexedDB.deleteDatabase(dbname)");
|
|
request.onsuccess = deleteSuccess;
|
|
request.onerror = unexpectedErrorCallback;
|
|
}
|
|
|
|
function deleteSuccess(evt) {
|
|
preamble(evt);
|
|
debugger;
|
|
evalAndLog("request = indexedDB.open(dbname)");
|
|
evalAndLog("request.onsuccess = firstSuccessCallback");
|
|
request.onerror = unexpectedErrorCallback;
|
|
}
|
|
|
|
function firstSuccessCallback(evt)
|
|
{
|
|
event = evt;
|
|
debug("");
|
|
debug("firstSuccessCallback():");
|
|
evalAndLog("connection1 = event.target.result");
|
|
evalAndLog("connection1.onversionchange = connection1VersionChangeCallback");
|
|
evalAndLog("request = indexedDB.open(dbname)");
|
|
evalAndLog("request.onsuccess = secondSuccessCallback");
|
|
request.onerror = unexpectedErrorCallback;
|
|
|
|
evalAndLog("request = indexedDB.deleteDatabase(dbname)");
|
|
evalAndLog("request.onblocked = deleteDatabaseBlockedCallback");
|
|
evalAndLog("request.onsuccess = deleteDatabaseSuccessCallback");
|
|
request.onerror = unexpectedErrorCallback;
|
|
|
|
evalAndLog("request = indexedDB.open(dbname, 1)");
|
|
evalAndLog("request.onupgradeneeded = upgradeNeededCallback");
|
|
evalAndLog("request.onsuccess = openWithVersionSuccessCallback");
|
|
request.onblocked = unexpectedBlockedCallback;
|
|
request.onerror = unexpectedErrorCallback;
|
|
}
|
|
|
|
function secondSuccessCallback(evt)
|
|
{
|
|
preamble(evt);
|
|
evalAndLog("db = event.target.result");
|
|
evalAndLog("db.onversionchange = connection2VersionChangeCallback");
|
|
}
|
|
|
|
function connection1VersionChangeCallback(evt)
|
|
{
|
|
preamble(evt);
|
|
shouldBeEqualToString("event.type", "versionchange");
|
|
shouldBe("event.oldVersion", "1");
|
|
shouldBeNull("event.newVersion");
|
|
}
|
|
|
|
function connection2VersionChangeCallback(evt)
|
|
{
|
|
preamble(evt);
|
|
shouldBeEqualToString("event.type", "versionchange");
|
|
evalAndLog("event.target.close()");
|
|
}
|
|
|
|
function deleteDatabaseBlockedCallback(evt)
|
|
{
|
|
preamble(evt);
|
|
evalAndLog("connection1.close()");
|
|
}
|
|
|
|
function deleteDatabaseSuccessCallback(evt)
|
|
{
|
|
preamble(evt);
|
|
}
|
|
|
|
function upgradeNeededCallback(evt)
|
|
{
|
|
preamble(evt);
|
|
shouldBe("event.newVersion", "1");
|
|
shouldBe("event.oldVersion", "0");
|
|
}
|
|
|
|
function openWithVersionSuccessCallback(evt)
|
|
{
|
|
preamble(evt);
|
|
shouldBe("event.target.result.objectStoreNames.length", "0");
|
|
finishJSTest();
|
|
}
|
|
|
|
test();
|