<html>
<head>
    <script type="text/javascript">
    if (window.testRunner) {
        testRunner.dumpAsText();
        testRunner.waitUntilDone();
    }

    var newWindow = window.open("data:text/html,Hello world!")
    if (!newWindow)
        alert("Please disable pop-up blocker");

    function finishWhenClosed() {
        if (newWindow.closed) {
            if (window.testRunner)
                testRunner.notifyDone();
            return;
        }
        setTimeout(finishWhenClosed, 1);
    };

    window.onload = function() {
        newWindow.close();

        var testPlugin = document.getElementById('testPlugin');
        if (!testPlugin || !testPlugin.parentNode)
            document.documentElement.appendChild(document.createTextNode("SUCCESS"));

        finishWhenClosed();
    }
    </script>
</head>
<body>
    <p>This tests a plug-in that removes itself from the document during NPP_New.  It passes if it does not crash during removal (<a href="rdar://problem/6954546">&lt;rdar://problem/6954546&gt;</a>) or when a window is next closed (<a href="rdar://problem/7090444">&lt;rdar://problem/7090444&gt;</a>).</p>
    <embed id="testPlugin" type="application/x-webkit-test-netscape" width="200" height="200" cleardocumentduringnew></embed>
</body>
</html>
