<html>
<script>
if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
}

var windowObject;

function getWindow()
{
    windowObject = subframe;
    subframe.location.href = 'resources/blank.html';
}

function checkWindowAccess()
{
    if (windowObject && windowObject.document && /blank.html/.test(windowObject.location)) {
        document.getElementById('result').innerHTML = 'SUCCESS';
        if (window.testRunner)
            testRunner.notifyDone();
    }
}
</script>
<body onload='getWindow()'>
<p>Test for <a href="http://bugs.webkit.org/show_bug.cgi?id=27394">bug 27394</a>:
properties on a window object should be accessible after the frame of the window object has navigated to another page.</p>
<div id='result'>FAILED</div>
<iframe name='subframe' onload='checkWindowAccess()'></iframe>
</body>
</html>
