<html>
<script>
function runTest()
{
    if (window.testRunner)
        testRunner.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>
