content/base/test/test_bug372964.html

branch
TOR_BUG_9701
changeset 15
b8a032363ba2
equal deleted inserted replaced
-1:000000000000 0:9b8ba7eee64a
1 <!DOCTYPE HTML>
2 <html>
3 <!--
4 https://bugzilla.mozilla.org/show_bug.cgi?id=372964
5 -->
6 <head>
7 <title>Test for Bug 372964</title>
8 <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
9 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
10 </head>
11 <body>
12 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=372964">Mozilla Bug 372964</a>
13 <p id="display"></p>
14 <div id="content" style="display: none">
15
16 </div>
17 <pre id="test">
18 <script class="testbody" type="text/javascript">
19
20 /** Test for Bug 372964 **/
21
22 var expectedEventType = "";
23 var shouldBeTrusted = false;
24 var eventHandlerCallCount = 0;
25
26 function eventHandler(evt) {
27 ++eventHandlerCallCount;
28 is(evt.type, expectedEventType, "Wrong event type");
29 is(evt.isTrusted, shouldBeTrusted, "Wrong .isTrusted");
30 }
31
32 function test(trusted, type, removeAddedListener, removeSetListener, allowUntrusted) {
33 if (trusted) {
34 var x1 = SpecialPowers.wrap(new XMLHttpRequest());
35 } else {
36 x1 = new XMLHttpRequest();
37 }
38
39 var handlerCount = 0;
40 if (trusted || allowUntrusted || allowUntrusted == undefined) {
41 ++handlerCount;
42 }
43
44 if (allowUntrusted == undefined) {
45 // Test .addEventListener with 3 parameters.
46 x1.addEventListener(type, eventHandler, false);
47 } else {
48 // Test .addEventListener with 4 parameters.
49 x1.addEventListener(type, eventHandler, false, allowUntrusted);
50 }
51
52 if (("on" + type) in x1) {
53 ++handlerCount;
54 x1["on" + type] = eventHandler;
55 }
56
57 if (removeAddedListener) {
58 x1.removeEventListener(type, eventHandler, false);
59 if (trusted || allowUntrusted || allowUntrusted == undefined) {
60 --handlerCount;
61 }
62 }
63
64 if (removeSetListener) {
65 if (("on" + type) in x1) {
66 --handlerCount;
67 x1["on" + type] = null;
68 }
69 }
70
71 var e1 = document.createEvent("Events");
72 e1.initEvent(type, true, true);
73 expectedEventType = type;
74 shouldBeTrusted = trusted;
75 var ecc = eventHandlerCallCount;
76 x1.dispatchEvent(e1);
77 is(eventHandlerCallCount, ecc + handlerCount,
78 "Wrong number event handler calls. (1)");
79
80 e1 = document.createEvent("Events");
81 e1.initEvent(type, true, true);
82 expectedEventType = type;
83 // Set trusted since open() may cause events to be sent.
84 shouldBeTrusted = true;
85 x1.open("GET", window.location);
86 x1.abort(); // This should not remove event listeners.
87 ecc = eventHandlerCallCount;
88 shouldBeTrusted = trusted;
89 x1.dispatchEvent(e1);
90 is(eventHandlerCallCount, ecc + handlerCount,
91 "Wrong number event handler calls. (2)");
92
93 e1 = document.createEvent("Events");
94 e1.initEvent(type, true, true);
95 expectedEventType = type;
96 // Set trusted since open()/send() may cause events to be sent.
97 shouldBeTrusted = true;
98 x1.open("GET", window.location);
99 x1.send("");
100 x1.abort(); // This should not remove event listeners!
101 ecc = eventHandlerCallCount;
102 shouldBeTrusted = trusted;
103 x1.dispatchEvent(e1);
104 is(eventHandlerCallCount, ecc + handlerCount,
105 "Wrong number event handler calls. (3)");
106 }
107
108 var events =
109 ["load", "error", "progress", "readystatechange", "foo"];
110
111 do {
112 var e = events.shift();
113 test(false, e, false, false);
114 test(false, e, false, true);
115 test(false, e, true, false);
116 test(false, e, true, true);
117 test(true, e, false, false);
118 test(true, e, false, true);
119 test(true, e, true, false);
120 test(true, e, true, true);
121
122 test(false, e, false, false, false);
123 test(false, e, false, false, true);
124 test(false, e, false, true, false);
125 test(false, e, false, true, true);
126 test(false, e, true, false, false);
127 test(false, e, true, false, true);
128 test(false, e, true, true, false);
129 test(false, e, true, true, true);
130 test(true, e, false, false, false);
131 test(true, e, false, false, true);
132 test(true, e, false, true, false);
133 test(true, e, false, true, true);
134 test(true, e, true, false, false);
135 test(true, e, true, false, true);
136 test(true, e, true, true, false);
137 test(true, e, true, true, true);
138 } while(events.length);
139
140 </script>
141 </pre>
142 </body>
143 </html>
144

mercurial