if (this.importScripts) {
importScripts('../../../resources/js-test.js');
importScripts('shared.js');
}
description("Test that blocked events get delivered properly with the new open api");
function test()
{
setDBNameFromPath();
request = evalAndLog("indexedDB.deleteDatabase(dbname)");
request.onsuccess = deleteSuccess;
request.onerror = unexpectedErrorCallback;
}
function deleteSuccess(evt) {
preamble();
evalAndLog("request = indexedDB.open(dbname, 2)");
request.onsuccess = firstSuccessEventHandler;
request.onblocked = unexpectedBlockedCallback;
request.onerror = unexpectedErrorCallback;
gotFirstUpgradeNeededEvent = false;
request.onupgradeneeded = firstUpgradeNeededCallback;
}
function firstUpgradeNeededCallback(evt)
{
preamble(evt);
evalAndLog("gotFirstUpgradeNeededEvent = true");
shouldBe("event.oldVersion", "0");
shouldBe("event.newVersion", "2");
shouldBeEqualToString("String(event)", "[object IDBVersionChangeEvent]");
}
gotBlockedEvent = false;
function firstSuccessEventHandler(evt)
{
preamble(evt);
shouldBeTrue("gotFirstUpgradeNeededEvent");
evalAndLog("connection1 = event.target.result");
evalAndLog("connection1.onversionchange = versionChangeHandler");
shouldBeEqualToString("String(connection1)", "[object IDBDatabase]");
evalAndLog("request = indexedDB.open(dbname, 3)");
request.onsuccess = secondSuccessCallback;
request.onerror = unexpectedErrorCallback;
request.onblocked = blockedEventHandler;
request.onupgradeneeded = secondUpgradeNeededEventHandler;
}
var sawVersionChangeEvent = false;
function versionChangeHandler(evt)
{
preamble(evt);
evalAndLog("sawVersionChangeEvent = true");
shouldBeEqualToString("event.type", "versionchange");
shouldBeEqualToString("String(event)", "[object IDBVersionChangeEvent]");
shouldBe("event.target", "connection1");
shouldBe("event.oldVersion", "2");
shouldBe("event.newVersion", "3");
}
function blockedEventHandler(evt)
{
preamble(evt);
shouldBeTrue("sawVersionChangeEvent");
evalAndLog("gotBlockedEvent = true");
shouldBeEqualToString("String(event)", "[object IDBVersionChangeEvent]");
shouldBe("event.oldVersion", "2");
shouldBe("event.newVersion", "3");
shouldBeEqualToString("event.type", "blocked");
evalAndLog("connection1.close()");
}
gotSecondUpgradeNeededEvent = false;
function secondUpgradeNeededEventHandler(evt)
{
preamble(evt);
shouldBeTrue("gotBlockedEvent");
evalAndLog("gotSecondUpgradeNeededEvent = true");
}
function secondSuccessCallback(evt)
{
preamble(evt);
shouldBeTrue("gotSecondUpgradeNeededEvent");
finishJSTest();
}
test();