<html>
<head>
<script>
function print(message) {
    var paragraph = document.createElement("p");
    paragraph.appendChild(document.createTextNode(message));
    document.getElementById("console").appendChild(paragraph);
}

function test2()
{
    return objCController.doesNotExist;
}

function test()
{
    if (!window.objCController) {
        print("FAIL: window.objCController does not exist");
        return;
    }

    if (window.layoutTestController)
        layoutTestController.dumpAsText();

    var crasher = test2();
    delete objCController;
    
    // create lots of objects to force a garbage collection
    var i = 0;
    var s;
    while (i < 5000) {
        i = i + 1.11;
        s = s + " ";
    }
    
    if (crasher) {} // force call to toBoolean
    if (crasher == null) {} // force call to type() through call to equal
    
    if (window.objCController)
        print("FAIL: unable to delete objCController");
    else
        print("PASS: You didn't crash.");
}
</script>
</head>
<body onload="test()">
<p>
This test checks for a regression against: rdar://problem/4176077 CrashTracer: 
6569 crashes in DashboardClient at com.apple.JavaScriptCore:
KJS::Bindings::ObjcFallbackObjectImp::type()
</p>
<p>
This test only works in DumpRenderTree, because it depends on having a plugin object 
that it can 'delete.'
</p>
<hr>
<div id="console"></div>
</body>
</html>
