<script>
(function() {

if (location.hash == "#stop")
    return;

if (window.testRunner) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
    testRunner.setCanOpenWindows();
    testRunner.setCloseRemainingWindowsWhenComplete(true);
}

blankWindow = open(location + "#stop");
blankWindow.onload = function() {
    blankFunc = blankWindow.Function;
    blankWindow.opener = null;
    blankWindow.eval("location = 'about:blank'");

    setTimeout(function() {
        blankFunc = blankFunc("return window.Function")();
        if (!blankFunc && window.testRunner) {
            testRunner.notifyDone()
            return;
        }
        blankFunc("alertFunc", "(" + function() {
            targetWindow = open("http://localhost:8080/security/resources/post-done-to-opener.html");
            targetFunc = targetWindow.Function;
            this.alertFunc = alertFunc;

            targetWindow.addEventListener("load", function() {
                alertFunc(targetFunc("return document.documentElement.innerHTML")());
            });
        } + ")()")( function(s) { alert(s) });
    }, 0);
}

window.addEventListener('message', function(evt) {
    if (evt.data == 'done') {
        if (window.testRunner)
            testRunner.notifyDone();
    }
});

})();
</script>
This test passes if it doesn't alert something ugly.
