mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-31 14:15:30 +00:00
85611a7b6d
--HG-- extra : rebase_source : a22344ee1569f58f1f0a01017bfe0d46a6a14602
69 lines
1.9 KiB
HTML
69 lines
1.9 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<head>
|
|
<title>Test for BroadcastChannel</title>
|
|
<script type="application/javascript" 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>
|
|
|