toolkit/devtools/webconsole/test/test_network_longstring.html

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     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>
    14 <iframe src="http://example.com/chrome/toolkit/devtools/webconsole/test/network_requests_iframe.html"></iframe>
    16 <script class="testbody" type="text/javascript;version=1.8">
    17 SimpleTest.waitForExplicitFinish();
    19 function startTest()
    20 {
    21   removeEventListener("load", startTest);
    23   attachConsole(["NetworkActivity"], onAttach, true);
    24 }
    26 function onAttach(aState, aResponse)
    27 {
    28   info("enable network request and response body logging");
    30   window.ORIGINAL_LONG_STRING_LENGTH = DebuggerServer.LONG_STRING_LENGTH;
    31   window.ORIGINAL_LONG_STRING_INITIAL_LENGTH =
    32     DebuggerServer.LONG_STRING_INITIAL_LENGTH;
    34   DebuggerServer.LONG_STRING_LENGTH = 400;
    35   DebuggerServer.LONG_STRING_INITIAL_LENGTH = 400;
    37   onSetPreferences = onSetPreferences.bind(null, aState);
    38   aState.client.setPreferences({
    39     "NetworkMonitor.saveRequestAndResponseBodies": true,
    40   }, onSetPreferences);
    41 }
    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");
    49   info("test network POST request");
    51   onNetworkEvent = onNetworkEvent.bind(null, aState);
    52   aState.dbgClient.addListener("networkEvent", onNetworkEvent);
    53   onNetworkEventUpdate = onNetworkEventUpdate.bind(null, aState);
    54   aState.dbgClient.addListener("networkEventUpdate", onNetworkEventUpdate);
    56   let iframe = document.querySelector("iframe").contentWindow;
    57   iframe.wrappedJSObject.testXhrPost();
    58 }
    60 function onNetworkEvent(aState, aType, aPacket)
    61 {
    62   is(aPacket.from, aState.actor, "network event actor");
    64   info("checking the network event packet");
    66   let netActor = aPacket.eventActor;
    68   checkObject(netActor, {
    69     actor: /[a-z]/,
    70     startedDateTime: /^\d+\-\d+\-\d+T.+$/,
    71     url: /data\.json/,
    72     method: "POST",
    73   });
    75   aState.netActor = netActor.actor;
    77   aState.dbgClient.removeListener("networkEvent", onNetworkEvent);
    78 }
    80 let updates = [];
    82 function onNetworkEventUpdate(aState, aType, aPacket)
    83 {
    84   info("received networkEventUpdate " + aPacket.updateType);
    85   is(aPacket.from, aState.netActor, "networkEventUpdate actor");
    87   updates.push(aPacket.updateType);
    89   let expectedPacket = null;
    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   }
   140   if (expectedPacket) {
   141     info("checking the packet content");
   142     checkObject(aPacket, expectedPacket);
   143   }
   145   if (updates.indexOf("responseContent") > -1 &&
   146       updates.indexOf("eventTimings") > -1) {
   147     aState.dbgClient.removeListener("networkEventUpdate",
   148                                     onNetworkEvent);
   150     onRequestHeaders = onRequestHeaders.bind(null, aState);
   151     aState.client.getRequestHeaders(aState.netActor,
   152                                     onRequestHeaders);
   153   }
   154 }
   156 function onRequestHeaders(aState, aResponse)
   157 {
   158   info("checking request headers");
   160   ok(aResponse.headers.length > 0, "request headers > 0");
   161   ok(aResponse.headersSize > 0, "request headersSize > 0");
   163   checkHeadersOrCookies(aResponse.headers, {
   164     Referer: /network_requests_iframe\.html/,
   165     Cookie: /bug768096/,
   166   });
   168   onRequestCookies = onRequestCookies.bind(null, aState);
   169   aState.client.getRequestCookies(aState.netActor,
   170                                   onRequestCookies);
   171 }
   173 function onRequestCookies(aState, aResponse)
   174 {
   175   info("checking request cookies");
   177   is(aResponse.cookies.length, 3, "request cookies length");
   179   checkHeadersOrCookies(aResponse.cookies, {
   180     foobar: "fooval",
   181     omgfoo: "bug768096",
   182     badcookie: "bug826798=st3fan",
   183   });
   185   onRequestPostData = onRequestPostData.bind(null, aState);
   186   aState.client.getRequestPostData(aState.netActor,
   187                                    onRequestPostData);
   188 }
   190 function onRequestPostData(aState, aResponse)
   191 {
   192   info("checking request POST data");
   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   });
   206   is(aResponse.postData.text.initial.length,
   207      DebuggerServer.LONG_STRING_INITIAL_LENGTH, "postData text initial length");
   209   onResponseHeaders = onResponseHeaders.bind(null, aState);
   210   aState.client.getResponseHeaders(aState.netActor,
   211                                    onResponseHeaders);
   212 }
   214 function onResponseHeaders(aState, aResponse)
   215 {
   216   info("checking response headers");
   218   ok(aResponse.headers.length > 0, "response headers > 0");
   219   ok(aResponse.headersSize > 0, "response headersSize > 0");
   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   });
   233   onResponseCookies = onResponseCookies.bind(null, aState);
   234   aState.client.getResponseCookies(aState.netActor,
   235                                   onResponseCookies);
   236 }
   238 function onResponseCookies(aState, aResponse)
   239 {
   240   info("checking response cookies");
   242   is(aResponse.cookies.length, 0, "response cookies length");
   244   onResponseContent = onResponseContent.bind(null, aState);
   245   aState.client.getResponseContent(aState.netActor,
   246                                    onResponseContent);
   247 }
   249 function onResponseContent(aState, aResponse)
   250 {
   251   info("checking response content");
   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   });
   265   is(aResponse.content.text.initial.length,
   266      DebuggerServer.LONG_STRING_INITIAL_LENGTH, "content initial length");
   268   onEventTimings = onEventTimings.bind(null, aState);
   269   aState.client.getEventTimings(aState.netActor,
   270                                 onEventTimings);
   271 }
   273 function onEventTimings(aState, aResponse)
   274 {
   275   info("checking event timings");
   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   });
   289   closeDebugger(aState, function() {
   290     DebuggerServer.LONG_STRING_LENGTH = ORIGINAL_LONG_STRING_LENGTH;
   291     DebuggerServer.LONG_STRING_INITIAL_LENGTH = ORIGINAL_LONG_STRING_INITIAL_LENGTH;
   293     SimpleTest.finish();
   294   });
   295 }
   297 addEventListener("load", startTest);
   298 </script>
   299 </body>
   300 </html>

mercurial