<!DOCTYPE html> <html> <!-- https://bugzilla.mozilla.org/show_bug.cgi?id=postMessage --> <head> <title>MessageEvent tests</title> <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> <script type="text/javascript" src="browserFu.js"></script> <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> </head> <body> <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=postMessage">Mozilla Bug 387706</a> <p id="display"></p> <div id="content" style="display: none"> </div> <button id="target">target</button> <pre id="test"> <script class="testbody" type="application/javascript"> /** Test for Bug 387706 **/ SimpleTest.waitForExplicitFinish(); var data = "foobar"; var origin = "http://cool.example.com"; var bubbles = true, cancelable = true; var lastEventId = "lastEventId"; var target; var count = 0; function sendMsg() { try { var evt = new MessageEvent('message', { bubbles: bubbles, cancelable: cancelable, data: data, origin: origin, lastEventId: lastEventId, source: window}); ok(evt instanceof MessageEvent, "I ordered a MessageEvent!"); is(evt.data, data, "unexpected data"); is(evt.origin, origin, "unexpected origin"); is(evt.lastEventId, lastEventId, "unexpected lastEventId"); is(evt.cancelable, cancelable, "wrong cancelable property"); is(evt.bubbles, bubbles, "wrong bubbling property"); is(evt.source, window, "wrong source"); return target.dispatchEvent(evt); } catch (e) { ok(false, "exception thrown: " + e); return false; } } function recvMsg(evt) { is(evt.data, data, "unexpected data"); is(evt.origin, origin, "unexpected origin"); is(evt.lastEventId, lastEventId, "unexpected lastEventId"); is(evt.cancelable, cancelable, "wrong cancelable property"); is(evt.bubbles, bubbles, "wrong bubbling property"); is(evt.source, window, "wrong source"); is(evt.target, target, "wrong target"); if (target == evt.currentTarget) { is(Event.AT_TARGET, evt.eventPhase, "this listener was on the target"); } else { is(evt.currentTarget, document, "should have gotten this at the window"); is(Event.BUBBLING_PHASE, evt.eventPhase, "wrong phase"); } count++; } function setup() { target = $("target"); target.addEventListener("message", recvMsg, false); document.addEventListener("message", recvMsg, false); var res = sendMsg(); ok(res === true, "nothing canceled this"); is(count, 2, "listener not called twice"); SimpleTest.finish(); } addLoadEvent(setup); </script> </pre> </body> </html>