chromium/third_party/blink/web_tests/http/tests/messaging/cross-domain-message-event-dispatch.html

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

function log(msg) {
    var div = document.createElement("div");
    div.appendChild(document.createTextNode(msg));
    document.getElementById("result").appendChild(div);
}

function done() {
    if (window.testRunner)
        testRunner.notifyDone();
}

window.onload = function () {
    log("Test begins");

    // The setTimeout handlers will get called after the
    // event listeners.
    postMessage("Message1", "*");
    postMessage("Message2", "*");
    postMessage("Message3", "*");
    setTimeout("log('setTimeout1')", 0);
    setTimeout("log('setTimeout2')", 0);
    setTimeout(done, 0);
    log("Events queued");
}

addEventListener("message", function (e) {
        log("Capture phase: " + e.data);
    }, true);
addEventListener("message", function (e) {
        log("Bubble phase: " + e.data);
    }, false);

document.addEventListener("message", function (e) {
        log("FAIL: Capture phase (document): " + e.data);
    }, true);
document.addEventListener("message", function (e) {
        log("FAIL: Bubble phase (document): " + e.data);
    }, false);
</script>
</head>
<body>
<div id="result">waiting...</div>
</body>
</html>