<html>
    <head>
        <script type="text/javascript">
            function log(message)
            {
                var item = document.createElement("li");
                item.appendChild(document.createTextNode(message));
                document.getElementById("console").appendChild(item);
            }
            function test()
            {
                if (window.layoutTestController)
                    layoutTestController.dumpAsText();
                log("javascript: function argument containing a backslash (\\) should not be converted to a slash (/): \"" + document.getElementById("1").pathname + "\"");
                log("http: base should convert a \\ to a / : \"" + document.getElementById("2").href + "\"");
                log("https: base should also convert a \\ to a / : \"" + document.getElementById("3").href + "\"");
                log("file: base should convert a \\ to a / : \"" + document.getElementById("4").href + "\"");
                log("any other valid base except javascript: should convert a \\ to a / : \"" + document.getElementById("5").href + "\"");
                log("query strings should be left alone: \"" + document.getElementById("6").href + "\"");
                log("anchors should be left alone as well: \"" + document.getElementById("7").href + "\"");
            }
        </script>
    </head>
    <body onload="test()">
        <p>This tests \ characters being changed to / in all different scenarios.</p>
        <p>If it works you should see seven messages below that have \ or / characters as specified.</p>
        <hr>
        <a id="1" href="javascript:alert('to be\\not')">1</a>
        <a id="2" href="http://apple.com\support">2</a>
        <a id="3" href="https:\\login.apple.com\support/">3</a>
        <a id="4" href="file:///Users\">4</a>
        <a id="5" href="ftp://apple.com\support/">5</a>
        <a id="6" href="http://apple.com\support?path=\\myshare\myfolder\myfile\">6</a>
        <a id="7" href="http://apple.com\support#path=\\myshare\myfolder\myfile\">7</a>
        <hr>
        <p><ol id="console"></ol></p>
    </body>
</html>
