<html>
    <head>
        <script src="../../resources/js-test-pre.js"></script>
    </head>
    <body>
        <textarea id="test" width="100" onfocus="popup()" onblur="popup()"></textarea>
        <div id="console"></div>

        <script>
            var win;
            function popup() {
                win = window.open("about:blank", "blank");
                shouldBeUndefined("win");
            }

            if (window.testRunner) {
                testRunner.dumpAsText();
                testRunner.setCanOpenWindows();
                testRunner.setPopupBlockingEnabled(true);
                testRunner.setCloseRemainingWindowsWhenComplete(true);
                testRunner.waitUntilDone();
            }

            document.getElementById("test").focus();
            document.getElementById("test").blur();

            if (window.testRunner)
                testRunner.notifyDone();
        </script>
    </body>
</html>
