toolkit/devtools/webconsole/test/test_network_longstring.html

branch
TOR_BUG_3246
changeset 7
129ffea94266
equal deleted inserted replaced
-1:000000000000 0:5b6d1de2b0e3
1 <!DOCTYPE HTML>
2 <html lang="en">
3 <head>
4 <meta charset="utf8">
5 <title>Test that the network actor uses the LongStringActor</title>
6 <script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
7 <script type="text/javascript;version=1.8" src="common.js"></script>
8 <!-- Any copyright is dedicated to the Public Domain.
9 - http://creativecommons.org/publicdomain/zero/1.0/ -->
10 </head>
11 <body>
12 <p>Test that the network actor uses the LongStringActor</p>
13
14 <iframe src="http://example.com/chrome/toolkit/devtools/webconsole/test/network_requests_iframe.html"></iframe>
15
16 <script class="testbody" type="text/javascript;version=1.8">
17 SimpleTest.waitForExplicitFinish();
18
19 function startTest()
20 {
21 removeEventListener("load", startTest);
22
23 attachConsole(["NetworkActivity"], onAttach, true);
24 }
25
26 function onAttach(aState, aResponse)
27 {
28 info("enable network request and response body logging");
29
30 window.ORIGINAL_LONG_STRING_LENGTH = DebuggerServer.LONG_STRING_LENGTH;
31 window.ORIGINAL_LONG_STRING_INITIAL_LENGTH =
32 DebuggerServer.LONG_STRING_INITIAL_LENGTH;
33
34 DebuggerServer.LONG_STRING_LENGTH = 400;
35 DebuggerServer.LONG_STRING_INITIAL_LENGTH = 400;
36
37 onSetPreferences = onSetPreferences.bind(null, aState);
38 aState.client.setPreferences({
39 "NetworkMonitor.saveRequestAndResponseBodies": true,
40 }, onSetPreferences);
41 }
42
43 function onSetPreferences(aState, aResponse)
44 {
45 is(aResponse.updated.length, 1, "updated prefs length");
46 is(aResponse.updated[0], "NetworkMonitor.saveRequestAndResponseBodies",
47 "updated prefs length");
48
49 info("test network POST request");
50
51 onNetworkEvent = onNetworkEvent.bind(null, aState);
52 aState.dbgClient.addListener("networkEvent", onNetworkEvent);
53 onNetworkEventUpdate = onNetworkEventUpdate.bind(null, aState);
54 aState.dbgClient.addListener("networkEventUpdate", onNetworkEventUpdate);
55
56 let iframe = document.querySelector("iframe").contentWindow;
57 iframe.wrappedJSObject.testXhrPost();
58 }
59
60 function onNetworkEvent(aState, aType, aPacket)
61 {
62 is(aPacket.from, aState.actor, "network event actor");
63
64 info("checking the network event packet");
65
66 let netActor = aPacket.eventActor;
67
68 checkObject(netActor, {
69 actor: /[a-z]/,
70 startedDateTime: /^\d+\-\d+\-\d+T.+$/,
71 url: /data\.json/,
72 method: "POST",
73 });
74
75 aState.netActor = netActor.actor;
76
77 aState.dbgClient.removeListener("networkEvent", onNetworkEvent);
78 }
79
80 let updates = [];
81
82 function onNetworkEventUpdate(aState, aType, aPacket)
83 {
84 info("received networkEventUpdate " + aPacket.updateType);
85 is(aPacket.from, aState.netActor, "networkEventUpdate actor");
86
87 updates.push(aPacket.updateType);
88
89 let expectedPacket = null;
90
91 switch (aPacket.updateType) {
92 case "requestHeaders":
93 case "responseHeaders":
94 ok(aPacket.headers > 0, "headers > 0");
95 ok(aPacket.headersSize > 0, "headersSize > 0");
96 break;
97 case "requestCookies":
98 expectedPacket = {
99 cookies: 3,
100 };
101 break;
102 case "requestPostData":
103 ok(aPacket.dataSize > 0, "dataSize > 0");
104 ok(!aPacket.discardRequestBody, "discardRequestBody");
105 break;
106 case "responseStart":
107 expectedPacket = {
108 response: {
109 httpVersion: /^HTTP\/\d\.\d$/,
110 status: 200,
111 statusText: "OK",
112 headersSize: /^\d+$/,
113 discardResponseBody: false,
114 },
115 };
116 break;
117 case "responseCookies":
118 expectedPacket = {
119 cookies: 0,
120 };
121 break;
122 case "responseContent":
123 expectedPacket = {
124 mimeType: "application/json",
125 contentSize: /^\d+$/,
126 discardResponseBody: false,
127 };
128 break;
129 case "eventTimings":
130 expectedPacket = {
131 totalTime: /^\d+$/,
132 };
133 break;
134 default:
135 ok(false, "unknown network event update type: " +
136 aPacket.updateType);
137 return;
138 }
139
140 if (expectedPacket) {
141 info("checking the packet content");
142 checkObject(aPacket, expectedPacket);
143 }
144
145 if (updates.indexOf("responseContent") > -1 &&
146 updates.indexOf("eventTimings") > -1) {
147 aState.dbgClient.removeListener("networkEventUpdate",
148 onNetworkEvent);
149
150 onRequestHeaders = onRequestHeaders.bind(null, aState);
151 aState.client.getRequestHeaders(aState.netActor,
152 onRequestHeaders);
153 }
154 }
155
156 function onRequestHeaders(aState, aResponse)
157 {
158 info("checking request headers");
159
160 ok(aResponse.headers.length > 0, "request headers > 0");
161 ok(aResponse.headersSize > 0, "request headersSize > 0");
162
163 checkHeadersOrCookies(aResponse.headers, {
164 Referer: /network_requests_iframe\.html/,
165 Cookie: /bug768096/,
166 });
167
168 onRequestCookies = onRequestCookies.bind(null, aState);
169 aState.client.getRequestCookies(aState.netActor,
170 onRequestCookies);
171 }
172
173 function onRequestCookies(aState, aResponse)
174 {
175 info("checking request cookies");
176
177 is(aResponse.cookies.length, 3, "request cookies length");
178
179 checkHeadersOrCookies(aResponse.cookies, {
180 foobar: "fooval",
181 omgfoo: "bug768096",
182 badcookie: "bug826798=st3fan",
183 });
184
185 onRequestPostData = onRequestPostData.bind(null, aState);
186 aState.client.getRequestPostData(aState.netActor,
187 onRequestPostData);
188 }
189
190 function onRequestPostData(aState, aResponse)
191 {
192 info("checking request POST data");
193
194 checkObject(aResponse, {
195 postData: {
196 text: {
197 type: "longString",
198 initial: /^Hello world! foobaz barr.+foobaz barrfo$/,
199 length: 552,
200 actor: /[a-z]/,
201 },
202 },
203 postDataDiscarded: false,
204 });
205
206 is(aResponse.postData.text.initial.length,
207 DebuggerServer.LONG_STRING_INITIAL_LENGTH, "postData text initial length");
208
209 onResponseHeaders = onResponseHeaders.bind(null, aState);
210 aState.client.getResponseHeaders(aState.netActor,
211 onResponseHeaders);
212 }
213
214 function onResponseHeaders(aState, aResponse)
215 {
216 info("checking response headers");
217
218 ok(aResponse.headers.length > 0, "response headers > 0");
219 ok(aResponse.headersSize > 0, "response headersSize > 0");
220
221 checkHeadersOrCookies(aResponse.headers, {
222 "Content-Type": /^application\/(json|octet-stream)$/,
223 "Content-Length": /^\d+$/,
224 "x-very-short": "hello world",
225 "x-very-long": {
226 "type": "longString",
227 "length": 521,
228 "initial": /^Lorem ipsum.+\. Donec vitae d$/,
229 "actor": /[a-z]/,
230 },
231 });
232
233 onResponseCookies = onResponseCookies.bind(null, aState);
234 aState.client.getResponseCookies(aState.netActor,
235 onResponseCookies);
236 }
237
238 function onResponseCookies(aState, aResponse)
239 {
240 info("checking response cookies");
241
242 is(aResponse.cookies.length, 0, "response cookies length");
243
244 onResponseContent = onResponseContent.bind(null, aState);
245 aState.client.getResponseContent(aState.netActor,
246 onResponseContent);
247 }
248
249 function onResponseContent(aState, aResponse)
250 {
251 info("checking response content");
252
253 checkObject(aResponse, {
254 content: {
255 text: {
256 type: "longString",
257 initial: /^\{ id: "test JSON data"(.|\r|\n)+ barfoo ba$/g,
258 length: 1070,
259 actor: /[a-z]/,
260 },
261 },
262 contentDiscarded: false,
263 });
264
265 is(aResponse.content.text.initial.length,
266 DebuggerServer.LONG_STRING_INITIAL_LENGTH, "content initial length");
267
268 onEventTimings = onEventTimings.bind(null, aState);
269 aState.client.getEventTimings(aState.netActor,
270 onEventTimings);
271 }
272
273 function onEventTimings(aState, aResponse)
274 {
275 info("checking event timings");
276
277 checkObject(aResponse, {
278 timings: {
279 blocked: /^-1|\d+$/,
280 dns: /^-1|\d+$/,
281 connect: /^-1|\d+$/,
282 send: /^-1|\d+$/,
283 wait: /^-1|\d+$/,
284 receive: /^-1|\d+$/,
285 },
286 totalTime: /^\d+$/,
287 });
288
289 closeDebugger(aState, function() {
290 DebuggerServer.LONG_STRING_LENGTH = ORIGINAL_LONG_STRING_LENGTH;
291 DebuggerServer.LONG_STRING_INITIAL_LENGTH = ORIGINAL_LONG_STRING_INITIAL_LENGTH;
292
293 SimpleTest.finish();
294 });
295 }
296
297 addEventListener("load", startTest);
298 </script>
299 </body>
300 </html>

mercurial