<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("Test IndexedDB transaction does not crash on abort.");
if (window.layoutTestController)
    layoutTestController.waitUntilDone();

function test()
{
    shouldBeTrue("'webkitIndexedDB' in window");
    shouldBeFalse("webkitIndexedDB == null");

    request = evalAndLog("webkitIndexedDB.open('transaction-crash-on-abort')");
    request.onsuccess = openSuccess;
    request.onerror = unexpectedErrorCallback;
}

function openSuccess()
{
    debug("openSuccess():");
    db = evalAndLog("db = event.target.result");
    request = evalAndLog("db.setVersion('1.0')");
    request.onsuccess = setVersionSuccess;
    request.onerror = unexpectedErrorCallback;
}

function setVersionSuccess()
{
    evalAndLog("db.createObjectStore('foo')");
    evalAndLog("db.transaction('foo')");
    evalAndLog("window.gc()");
    done();
}


test();

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