<html> | |
<head> | |
<script src="../../fast/js/resources/js-test-pre.js"></script> | |
<script src="resources/shared.js"></script> | |
</head> | |
<body> | |
<p id="description"></p> | |
<div id="console"></div> | |
<script> | |
description("An open connection blocks a separate connection's setVersion call"); | |
if (window.layoutTestController) | |
layoutTestController.waitUntilDone(); | |
connections = [] | |
function test() | |
{ | |
if ('webkitIndexedDB' in window) | |
IndexedDB = webkitIndexedDB; | |
else if ('mozIndexedDB' in window) | |
IndexedDB = mozIndexedDB; | |
shouldBeFalse("IndexedDB == null"); | |
openDBConnection(); | |
} | |
function openDBConnection() | |
{ | |
request = evalAndLog("IndexedDB.open('set-version-blocked')"); | |
request.onsuccess = openSuccess; | |
request.onerror = unexpectedErrorCallback; | |
} | |
function openSuccess() | |
{ | |
connection = event.target.result; | |
connections.push(connection); | |
original_version = connection.version; | |
if (connections.length < 2) | |
openDBConnection(); | |
else { | |
var versionChangeRequest = evalAndLog("connections[0].setVersion('version 1')"); | |
versionChangeRequest.onerror = unexpectedErrorCallback; | |
versionChangeRequest.onsuccess = inSetVersion; | |
versionChangeRequest.onblocked = blocked; | |
} | |
} | |
seen_blocked_event = false; | |
function blocked() | |
{ | |
evalAndLog("seen_blocked_event = true"); | |
blocked_event = event; | |
shouldBeEqualToString("blocked_event.version", "version 1"); | |
shouldEvaluateTo("blocked_event.target.readyState", 1); | |
evalAndLog("connections[1].close()"); | |
} | |
function inSetVersion() | |
{ | |
debug("in setVersion.onsuccess"); | |
shouldBeTrue("seen_blocked_event"); | |
deleteAllObjectStores(connections[0]); | |
done(); | |
} | |
test(); | |
</script> | |
</body> | |
</html> |