<html>
<head>
<script>
function print(message) {
    var paragraph = document.createElement("p");
    paragraph.appendChild(document.createTextNode(message));
    document.getElementById("console").appendChild(paragraph);
}

function test() {
    var count = 0;
    var o = window;
    do {
        if (o.x)
            print("FAIL: element " + count + " in the window's prototype chain was not cleared");
        else
            print("PASS: element " + count + " in the window's prototype chain was cleared");

        ++count;
        o = o.__proto__;
    } while(o);
    
    if (window.testRunner)
        testRunner.notifyDone();
}
</script>
</head>
<body onload="test();">
<p>This test checks to ensure that the window object is cleared during a navigation.</p>
<p>If the test passes, you will see only PASS messages below.</p>
<hr>
<div id='console'/>
</body>
</html>
