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

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

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

    // Open test window
    var win = window.open("resources/closure-access-after-navigation-window-child-1.html");

    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>
