<html>
<head>
<script>

if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}

window.onmessage = function(evt)
{
    if (evt.data != "done") {
        alert("Unexpected message: " + evt.data);
        testRunner.notifyDone();
        return;
    }

    alert("Parent window's history object after attempt to clear: " + window.history);
    testRunner.notifyDone();
}

function setHistoryLength()
{
    alert("Parent window's history object before attempt to clear: " + window.history);
    window.frames[0].postMessage("setHistoryLength", "*");
}

</script>
</head>
<body onload="setHistoryLength();">
<iframe id='testFrame' src="http://localhost:8000/history/resources/cross-origin-replaces-history-object-iframe.html"></iframe>
</body>
</html>
