<html><body>
This tests the basic functionality of the "noreferrer" link relation on anchor tags. The link below should not
send an http referrer, and the resulting window should have its opener attribute set to null.  The values
of the referrer and window.opener should be empty below.
<br/>
<a id="link" href="resources/no-referrer-same-window-helper.py" rel="noreferrer">Start no referrer test</a>
<script>
    window.name = "consoleWindow";
    if (window.testRunner) {
        testRunner.dumpAsText();
        testRunner.waitUntilDone();
    }

    var target = document.getElementById("link");
    eventSender.mouseMoveTo(target.offsetLeft + 2, target.offsetTop + 2);
    eventSender.mouseDown();
    eventSender.mouseUp();
    
function log(msg)
{
    var line = document.createElement('div');
    line.appendChild(document.createTextNode(msg));
    document.getElementById('console').appendChild(line);
}
</script>
<div id="console"></div>
</body></html>
