<html>
    <head>
        <link rel="stylesheet" href="fake.css" type="text/css" >
        <script>	
                if (window.testRunner) {
                    testRunner.dumpAsText();
                }
                function testForm() {
                    if (document.LoginForm)
                    {
                        alert("Test passed: " + document.LoginForm);
                    }
                    else
                    {
                        alert("Test failed: " + document.LoginForm);
                    }
                }
        </script>
    </head>

<body onLoad="testForm();">
<form name="LoginForm"> 
<embed type="application/x-webkit-test-netscape"></embed>
</form>			
</body>
</html>
