Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

<!DOCTYPE HTML>
<html>
<head>
<title>Test for BroadcastChannel</title>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
</head>
<body>
<div id="content"></div>
<script type="application/javascript">
function runTest() {
addEventListener("message", receiveMessage, false);
function receiveMessage(evt) {
if (evt.data.status == "OK") {
ok(true, evt.data.message);
} else if (evt.data.status == "KO") {
ok(false, evt.data.message);
} else {
ok(false, "Unknown message");
}
}
ok("BroadcastChannel" in window, "BroadcastChannel exists");
var bc = new BroadcastChannel("foobar");
ok(bc, "BroadcastChannel can be created");
is(bc.name, "foobar", "BroadcastChannel.name is foobar");
ok("postMessage" in bc, "BroadcastChannel has postMessage() method");
bc.onmessage = function(evt) {
ok(evt instanceof MessageEvent, "This is a MessageEvent");
is(evt.target, bc, "MessageEvent.target is bc");
is(evt.target.name, "foobar", "MessageEvent.target.name is foobar");
is(evt.target.name, bc.name, "MessageEvent.target.name == bc.name");
ok(evt.origin.indexOf("http://mochi.test:8888") == 0, "MessageEvent.origin is correct");
is(evt.data, "Hello world from the iframe!", "The message from the iframe has been received!");
SimpleTest.finish();
};
var div = document.getElementById("content");
ok(div, "Parent exists");
var ifr = document.createElement("iframe");
ifr.addEventListener("load", iframeLoaded);
ifr.setAttribute("src", "iframe_broadcastchannel.html");
div.appendChild(ifr);
function iframeLoaded() {
bc.postMessage("Hello world from the window!");
}
// A leak test
var dummyBc = new BroadcastChannel("dont_leak_this");
dummyBc.foo = "bar";
// don't add message listener!
}
SimpleTest.waitForExplicitFinish();
runTest();
</script>
</body>
</html>