<html>
<head>
    <style>
        iframe { width: 400px; height: 200px;}
    </style>
    <script>
        if (window.testRunner) {
            testRunner.dumpAsText();
            testRunner.dumpChildFramesAsText();
            testRunner.waitUntilDone();
        }

        function loaded()
        {
            document.getElementsByTagName('h4')[0].innerHTML = document.domain;

            if (window.testRunner) {
                function waitForFlag() {
                    if (!testRunner.globalFlag) {
                        setTimeout(waitForFlag, 1);
                        return;
                    }

                    testRunner.globalFlag = false;
                    performTest();
                }
                setTimeout(waitForFlag, 1);
            }
        }

        function performTest()
        {
            var subFrame = window.frames[0];
            subFrame.frames[0].location = "http://localhost:8000/security/frameNavigation/resources/navigation-changed-iframe.html";
        }
    </script>
</head>
<body onload="loaded();">
    <p>This tests that documents can navigate the location of any of it's sub-frames regardless of domain.</p>
    <h4>DOMAIN</h4>
    <iframe src="http://localhost:8000/security/frameNavigation/resources/iframe-with-inner-frame-on-foreign-domain.html"></iframe>
    <button onclick="performTest()">Perform Test</button>
</body>
</html>
