<html>
<head>
    <script src="../resources/cross-frame-access.js"></script>
</head>
<body>
    <p>Opener Frame</p>
    <p id='accessMe'>FAIL: Access from a window opened with a javascript: URL was denied.</p>
    <script>
        if (window.testRunner) {
            testRunner.dumpAsText();
            testRunner.waitUntilDone();
            testRunner.setCanOpenWindows();
        }

        var url = "javascript:\"<html>"
            + "<scr" + "ipt>"
            +     "opener.document.getElementById('accessMe').innerHTML = 'PASS: Access from a window opened with a javascript: URL was allowed!';"
            +     "opener.closeWindowAndNotifyDone(window);"
            + "</scri" + "pt>"
            + "<body>"
            +     "<p>Opened Frame.</p>"
            + "</body>"
            + "</html>\"";

        window.open(url);
    </script>
</body>
</html>
