<html>
<head>
    <script src="../resources/cross-frame-access.js"></script>
    <script>
        var openedWindow;

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

            openedWindow = window.open("http://localhost:8000/security/javascriptURL/resources/foreign-domain-javascript-url-accessor-opened-frame.html");

            if (window.testRunner) {
                setTimeout(pollUntilDone, 1);
            }
        }

        pollUntilDone = function()
        {
            if (!testRunner.globalFlag) {
                setTimeout(pollUntilDone, 1);
                return;
            }
            closeWindowAndNotifyDone(openedWindow);
        }
    </script>
</head>
<body>
    <p>Opener Frame</p>
    <p id='accessMe'>Pass: Cross frame access from a javascript: URL on a different domain was denied.</p>
    <pre id='console'></pre>
</body>
</html>
