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

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

    addEventListener("message", function()
    {
        if (window.history.fail) {
            log("FAIL: History object prototype tainted.");
        } else {
            log("PASS: History 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-history-prototype-iframe.html"></iframe>
</body>
</html>
