<script>
    if (window.testRunner) {
        testRunner.dumpAsText();
        testRunner.waitUntilDone();
    }

    function log(msg)
    {
        document.getElementById("console").appendChild(document.createTextNode(msg + "\n"));
    }

    addEventListener("message", function()
    {
        if (window.location.fail) {
            log("FAIL: Location object prototype tainted.");
        } else {
            log("PASS: Location object prototype not tainted.");
        }

        if (window.testRunner)
            testRunner.notifyDone();
    }, false);
</script>
<body>
    <pre id="console"></pre>
    <iframe src="http://localhost:8000/security/resources/cross-frame-location-prototype-iframe.html"></iframe>
</body>
</html>
