<html>
<script>
function runTest()
{
    if (window.layoutTestController)
        layoutTestController.dumpAsText();
        
    var successCount = 0;
    var plugin = document.getElementById("testPlugin");
    plugin.logDestroy = true;
    
    var testObject = plugin.testObject;        
    plugin.parentNode.removeChild(plugin);
    
    try {
        testObject.property;
    } catch (e) {
        if (e instanceof ReferenceError)
            successCount++;
    }

    try {
        testObject.property = 'hello';
    } catch (e) {
        if (e instanceof ReferenceError)
            successCount++;
    }
    
    if (successCount == 2)
        document.getElementById('result').innerHTML = 'SUCCESS';
}

</script>

<body onload="runTest();">
This tests that accessing plug-in script objects from a destroyed plugin cause throws the right exceptions.
<div id="result">FAILURE</div>
<embed id="testPlugin" type="application/x-webkit-test-netscape" width="200" height="200"></embed>
</body>
</html>
