1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
<!DOCTYPE html>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=postMessage
-->
<head>
<title>MessageEvent tests</title>
<script src="/tests/SimpleTest/SimpleTest.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, cancelable, data,
origin, 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);
document.addEventListener("message", recvMsg);
var res = sendMsg();
ok(res === true, "nothing canceled this");
is(count, 2, "listener not called twice");
SimpleTest.finish();
}
addLoadEvent(setup);
</script>
</pre>
</body>
</html>
|