<pre id="console"></pre>
<script>
    if (window.testRunner) {
        testRunner.dumpAsText();
        testRunner.waitUntilDone();
    }

    var logString = "";
    function log(s)
    {
        logString += s + "<br />";
    }

    function logTitle(s)
    {
        log("<b>" + s + "<b>");
    }

    function done()
    {
        document.getElementById("console").innerHTML = logString;
        if (window.testRunner)
            testRunner.notifyDone();
    }

    Object.prototype.myVal = "parent";
    var myGlobal = {
        myGlobalVal: "parent"
    };

    getObjectOfParent = function()
    {
        return {};
    };

    getGlobalOfParent = function()
    {
        return myGlobal;
    };

    test = function(p, val)
    {
        try {
            log(p + "()." + val + " = " + window[p]()[val]);
        } catch(e) {
            log(e.message);
        }
    };
</script>
<iframe src="resources/closure-access-after-navigation-iframe-child-1.html"></iframe>
