blob: 2f8141c326773be3231833815bbe1e8b833b62c1 [file] [log] [blame]
if (this.importScripts) {
importScripts('../../../resources/js-test.js');
importScripts('shared.js');
}
description("Check that a page reloaded during an in-flight upgradeneeded event doesn't hang.");
function test()
{
removeVendorPrefixes();
setDBNameFromPath();
evalAndLog("dbname1 = dbname + '1'");
evalAndLog("dbname2 = dbname + '2'");
deleteDatabase1();
}
function deleteDatabase1()
{
preamble();
request = evalAndLog("indexedDB.deleteDatabase(dbname1)");
request.onerror = unexpectedBlockedCallback;
if (!isAfterReload())
request.onblocked = unexpectedBlockedCallback;
else
debug("In a multi process implementation this deleteDatabase may be blocked temporarily, so we don't check for either the presence or absence of a blocked event.");
request.onsuccess = deleteDatabase2;
}
function deleteDatabase2()
{
preamble();
request = evalAndLog("indexedDB.deleteDatabase(dbname2)");
request.onerror = unexpectedBlockedCallback;
request.onblocked = unexpectedBlockedCallback;
request.onsuccess = openDatabase1;
}
function isAfterReload()
{
return document.location.search == "?second";
}
function reload()
{
document.location += "?second";
}
function openDatabase1()
{
preamble();
request = evalAndLog("indexedDB.open(dbname1, 1)");
request.onerror = unexpectedBlockedCallback;
request.onblocked = unexpectedBlockedCallback;
request.onupgradeneeded = function openOnUpgradeNeeded1(evt) {
preamble(evt);
db1 = event.target.result;
store1 = db1.createObjectStore('store');
var count = 0;
function putter() {
++count;
if (count == 50)
return;
store1.put(0, 0).onsuccess = putter;
}
putter();
};
request.onsuccess = function openOnSuccess1(evt) {
preamble(evt);
shouldBeTrue("isAfterReload()");
finishJSTest();
};
if (!isAfterReload())
reload();
}
test();