Html程序  |  75行  |  1.89 KB

<html>
<head>
<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
<script src="../../fast/js/resources/js-test-pre.js"></script>
<script src="../../fast/js/resources/js-test-post-function.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();
}

var successfullyParsed = true;

test();

</script>
</body>
</html>