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

function log(msg)
{
    document.getElementById("console").appendChild(document.createTextNode(msg + "\n"));
}

window.addEventListener("message", function(e) {
    if (e.data == "pass") {
        log("PASS");
        if (window.testRunner)
            testRunner.notifyDone();
    }
}, false);

window.onload = function() {
    win = window.open("resources/cross-origin-opener-opener.html");
}

</script>
</head>
<body>
<pre id="console"></pre>
</body>
</html>

