<html>
<head>
    <script type="text/javascript">
    if (window.testRunner) {
        testRunner.dumpAsText();
        testRunner.setCanOpenWindows();
        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>
