<html>
<head>
<script>
function load() {
    if (window.testRunner)
        testRunner.dumpAsText();
    str = "";
    for (i=0;i<10;i++)
      str += "Hostname is " + document.links[i].hostname + ". Host is " + document.links[i].host + "<br>";
    document.getElementById("hostname_host").innerHTML = str;
}
</script>
</head>
<body onload="load()">
<a  href="http://dev.w3.org:80/html5/spec/infrastructure.html#interfaces-for-url-manipulation">http with default port</a><br>
<a  href="https://dev.w3.org:443/html5/spec/infrastructure.html#interfaces-for-url-manipulation">https with default port</a><br>
<a  href="ftp://dev.w3.org:21/html5/spec/infrastructure.html#interfaces-for-url-manipulation">ftp with default port</a><br>
<br>
<a  href="http://dev.w3.org:123/html5/spec/infrastructure.html#interfaces-for-url-manipulation">http with non-default port</a><br>
<a  href="https://dev.w3.org:123/html5/spec/infrastructure.html#interfaces-for-url-manipulation">https with non-default port</a><br>
<a  href="ftp://dev.w3.org:123/html5/spec/infrastructure.html#interfaces-for-url-manipulation">ftp with non-default port</a><br>
<br>
<a  href="http://dev.w3.org/html5/spec/infrastructure.html#interfaces-for-url-manipulation">http without port</a><br>
<a  href="https://dev.w3.org/html5/spec/infrastructure.html#interfaces-for-url-manipulation">https without port</a><br>
<a  href="ftp://dev.w3.org/html5/spec/infrastructure.html#interfaces-for-url-manipulation">ftp without port</a><br>
<br>
<a  href="http://dev.w3.org:0/html5/spec/infrastructure.html#interfaces-for-url-manipulation">http with port 0</a><br>
<span id="hostname_host"></span>

</body>
</html>
