<html> <!-- webkit-test-runner [ JavaScriptCanOpenWindowsAutomatically=false ] -->
    <head>
        <script src="../../resources/js-test-pre.js"></script>
    </head>
    <body>
        <a id=test href="javascript:popup()">test</a>
        <div id="console"></div>
        <script> 
            var win;
            function popup() {
                win = window.open('about:blank','blank','height=200,width=200');
                shouldBeNull("win");
            }

            if (window.testRunner) {
                testRunner.dumpAsText();
                testRunner.waitUntilDone();
            }

            clickEvent = document.createEvent("MouseEvents");
            clickEvent.initEvent("click", true, true, document.defaultView, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
            document.getElementById("test").dispatchEvent(clickEvent);

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