chromium/third_party/blink/web_tests/fast/dom/Window/window-property-clearing.html

<p>
This page tests whether global declarations are cleared after a navigation.
If the test passes, you'll see a series of PASS messages below.
</p>
<pre id="console"></pre>

<script>
function log(s)
{
    document.getElementById("console").appendChild(document.createTextNode(s + "\n"));
}

function shouldBe(evalA, a, b)
{
    if (evalA === b) {
        log("PASS: " + a + " should be " + b + " and is.");
    } else {
        log("FAIL: " + a + " should be " + b + " but instead is " + evalA + ".");
    }
}

var count = 0;
function didFinishLoading(childWindow) // called by subframes
{
    log("\nPage " + count + ":");
    if (!count) {
        shouldBe('x' in childWindow, "'x' in childWindow", true);
        shouldBe(childWindow.x, "childWindow.x", 1);
        shouldBe('f' in childWindow, "'f' in childWindow", true);
        shouldBe(typeof childWindow.f, "childWindow.f", "function");
        
        childWindow.name = "test";
        
        childWindow.location = "window-property-clearing-iframe1.html";
        
        ++count;
    } else {
        shouldBe('x' in childWindow, "'x' in childWindow", false);
        shouldBe(childWindow.x, "childWindow.x", undefined);
        shouldBe('f' in childWindow, "'f' in childWindow", false);
        shouldBe(typeof childWindow.f, "typeof childWindow.f", "undefined");
        shouldBe('name' in childWindow, "'name' in childWindow", true);
        shouldBe(childWindow.name, "childWindow.name", "test");
    
        if (window.testRunner)
            testRunner.notifyDone();
    }
}

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

test();
</script>

<iframe src="resources/window-property-clearing-iframe0.html"></iframe>