toolkit/devtools/webconsole/test/test_network_get.html

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rw-r--r--

Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.

     1 <!DOCTYPE HTML>
     2 <html lang="en">
     3 <head>
     4   <meta charset="utf8">
     5   <title>Test for the network actor (GET request)</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 for the network actor (GET request)</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);
    22   attachConsole(["NetworkActivity"], onAttach, true);
    23 }
    25 function onAttach(aState, aResponse)
    26 {
    27   info("test network GET request");
    29   onNetworkEvent = onNetworkEvent.bind(null, aState);
    30   aState.dbgClient.addListener("networkEvent", onNetworkEvent);
    31   onNetworkEventUpdate = onNetworkEventUpdate.bind(null, aState);
    32   aState.dbgClient.addListener("networkEventUpdate", onNetworkEventUpdate);
    34   let iframe = document.querySelector("iframe").contentWindow;
    35   iframe.wrappedJSObject.testXhrGet();
    36 }
    38 function onNetworkEvent(aState, aType, aPacket)
    39 {
    40   is(aPacket.from, aState.actor, "network event actor");
    42   info("checking the network event packet");
    44   let netActor = aPacket.eventActor;
    46   checkObject(netActor, {
    47     actor: /[a-z]/,
    48     startedDateTime: /^\d+\-\d+\-\d+T.+$/,
    49     url: /data\.json/,
    50     method: "GET",
    51   });
    53   aState.netActor = netActor.actor;
    55   aState.dbgClient.removeListener("networkEvent", onNetworkEvent);
    56 }
    58 let updates = [];
    60 function onNetworkEventUpdate(aState, aType, aPacket)
    61 {
    62   info("received networkEventUpdate " + aPacket.updateType);
    63   is(aPacket.from, aState.netActor, "networkEventUpdate actor");
    65   updates.push(aPacket.updateType);
    67   let expectedPacket = null;
    69   switch (aPacket.updateType) {
    70     case "requestHeaders":
    71     case "responseHeaders":
    72       ok(aPacket.headers > 0, "headers > 0");
    73       ok(aPacket.headersSize > 0, "headersSize > 0");
    74       break;
    75     case "requestCookies":
    76       expectedPacket = {
    77         cookies: 3,
    78       };
    79       break;
    80     case "requestPostData":
    81       ok(false, "got unexpected requestPostData");
    82       break;
    83     case "responseStart":
    84       expectedPacket = {
    85         response: {
    86           httpVersion: /^HTTP\/\d\.\d$/,
    87           status: 200,
    88           statusText: "OK",
    89           headersSize: /^\d+$/,
    90           discardResponseBody: true,
    91         },
    92       };
    93       break;
    94     case "responseCookies":
    95       expectedPacket = {
    96         cookies: 0,
    97       };
    98       break;
    99     case "responseContent":
   100       expectedPacket = {
   101         mimeType: "application/json",
   102         contentSize: 0,
   103         discardResponseBody: true,
   104       };
   105       break;
   106     case "eventTimings":
   107       expectedPacket = {
   108         totalTime: /^\d+$/,
   109       };
   110       break;
   111     default:
   112       ok(false, "unknown network event update type: " +
   113          aPacket.updateType);
   114       return;
   115   }
   117   if (expectedPacket) {
   118     info("checking the packet content");
   119     checkObject(aPacket, expectedPacket);
   120   }
   122   if (updates.indexOf("responseContent") > -1 &&
   123       updates.indexOf("eventTimings") > -1) {
   124     aState.dbgClient.removeListener("networkEventUpdate",
   125                                     onNetworkEvent);
   127     onRequestHeaders = onRequestHeaders.bind(null, aState);
   128     aState.client.getRequestHeaders(aState.netActor,
   129                                     onRequestHeaders);
   130   }
   131 }
   133 function onRequestHeaders(aState, aResponse)
   134 {
   135   info("checking request headers");
   137   ok(aResponse.headers.length > 0, "request headers > 0");
   138   ok(aResponse.headersSize > 0, "request headersSize > 0");
   140   checkHeadersOrCookies(aResponse.headers, {
   141     Referer: /network_requests_iframe\.html/,
   142     Cookie: /bug768096/,
   143   });
   145   onRequestCookies = onRequestCookies.bind(null, aState);
   146   aState.client.getRequestCookies(aState.netActor,
   147                                   onRequestCookies);
   148 }
   150 function onRequestCookies(aState, aResponse)
   151 {
   152   info("checking request cookies");
   154   is(aResponse.cookies.length, 3, "request cookies length");
   156   checkHeadersOrCookies(aResponse.cookies, {
   157     foobar: "fooval",
   158     omgfoo: "bug768096",
   159     badcookie: "bug826798=st3fan",
   160   });
   162   onRequestPostData = onRequestPostData.bind(null, aState);
   163   aState.client.getRequestPostData(aState.netActor,
   164                                    onRequestPostData);
   165 }
   167 function onRequestPostData(aState, aResponse)
   168 {
   169   info("checking request POST data");
   171   ok(!aResponse.postData.text, "no request POST data");
   172   ok(aResponse.postDataDiscarded, "request POST data was discarded");
   174   onResponseHeaders = onResponseHeaders.bind(null, aState);
   175   aState.client.getResponseHeaders(aState.netActor,
   176                                    onResponseHeaders);
   177 }
   179 function onResponseHeaders(aState, aResponse)
   180 {
   181   info("checking response headers");
   183   ok(aResponse.headers.length > 0, "response headers > 0");
   184   ok(aResponse.headersSize > 0, "response headersSize > 0");
   186   checkHeadersOrCookies(aResponse.headers, {
   187     "Content-Type": /^application\/(json|octet-stream)$/,
   188     "Content-Length": /^\d+$/,
   189   });
   191   onResponseCookies = onResponseCookies.bind(null, aState);
   192   aState.client.getResponseCookies(aState.netActor,
   193                                   onResponseCookies);
   194 }
   196 function onResponseCookies(aState, aResponse)
   197 {
   198   info("checking response cookies");
   200   is(aResponse.cookies.length, 0, "response cookies length");
   202   onResponseContent = onResponseContent.bind(null, aState);
   203   aState.client.getResponseContent(aState.netActor,
   204                                    onResponseContent);
   205 }
   207 function onResponseContent(aState, aResponse)
   208 {
   209   info("checking response content");
   211   ok(!aResponse.content.text, "no response content");
   212   ok(aResponse.contentDiscarded, "response content was discarded");
   214   onEventTimings = onEventTimings.bind(null, aState);
   215   aState.client.getEventTimings(aState.netActor,
   216                                 onEventTimings);
   217 }
   219 function onEventTimings(aState, aResponse)
   220 {
   221   info("checking event timings");
   223   checkObject(aResponse, {
   224     timings: {
   225       blocked: /^-1|\d+$/,
   226       dns: /^-1|\d+$/,
   227       connect: /^-1|\d+$/,
   228       send: /^-1|\d+$/,
   229       wait: /^-1|\d+$/,
   230       receive: /^-1|\d+$/,
   231     },
   232     totalTime: /^\d+$/,
   233   });
   235   closeDebugger(aState, function() {
   236     SimpleTest.finish();
   237   });
   238 }
   240 addEventListener("load", startTest);
   241 </script>
   242 </body>
   243 </html>

mercurial