<script>

var request = window.indexedDB.deleteDatabase("WebProcessKillIDBCleanup");
request.onsuccess = function(e)
{
    continueTest();
}
request.onerror = function(e)
{
    // Unexpected error
    window.webkit.messageHandlers.testHandler.postMessage('Error deleting database');
}

var database;

function continueTest()
{
    var request = window.indexedDB.open("WebProcessKillIDBCleanup");

    request.onsuccess = function()
    {
        window.webkit.messageHandlers.testHandler.postMessage('Open success');
        setTimeout(continueTest2, 0);
    }

    request.onerror = function()
    {
        // Unexpected error
        window.webkit.messageHandlers.testHandler.postMessage('Unexpected error opening database');
    }

    request.onupgradeneeded = function(event)
    {
        window.webkit.messageHandlers.testHandler.postMessage('UpgradeNeeded');

        database = event.target.result;
        var store = database.createObjectStore("TestObjectStore");

        event.target.transaction.oncomplete = function() {
            window.webkit.messageHandlers.testHandler.postMessage('Transaction complete');
        }

        event.target.transaction.onerror = function() {
            window.webkit.messageHandlers.testHandler.postMessage('Transaction errored!');
        }

        store.put("bar", "foo");
    }
}

function continueTest2()
{
    var objectStore = database.transaction("TestObjectStore", "readonly").objectStore("TestObjectStore");

    // Start a get-loop to keep this transaction active.
    var shouldMessageClose = true;
    function success() {
        objectStore.get("foo").onsuccess = success;
        if (shouldMessageClose) {
            window.webkit.messageHandlers.testHandler.postMessage('Infinite Transaction Started');
            shouldMessageClose = false;
        }
    }

    objectStore.get("foo").onsuccess = success;
}
</script>
