browser/devtools/webconsole/test/browser_webconsole_netlogging.js

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 /* vim:set ts=2 sw=2 sts=2 et: */
     2 /* ***** BEGIN LICENSE BLOCK *****
     3  * Any copyright is dedicated to the Public Domain.
     4  * http://creativecommons.org/publicdomain/zero/1.0/
     5  *
     6  * Contributor(s):
     7  *  Julian Viereck <jviereck@mozilla.com>
     8  *  Patrick Walton <pcwalton@mozilla.com>
     9  *  Mihai Șucan <mihai.sucan@gmail.com>
    10  *
    11  * ***** END LICENSE BLOCK ***** */
    13 // Tests that network log messages bring up the network panel.
    15 const TEST_NETWORK_REQUEST_URI = "http://example.com/browser/browser/devtools/webconsole/test/test-network-request.html";
    17 const TEST_IMG = "http://example.com/browser/browser/devtools/webconsole/test/test-image.png";
    19 const TEST_DATA_JSON_CONTENT =
    20   '{ id: "test JSON data", myArray: [ "foo", "bar", "baz", "biff" ] }';
    22 let lastRequest = null;
    23 let requestCallback = null;
    25 function test()
    26 {
    27   addTab("data:text/html;charset=utf-8,Web Console network logging tests");
    29   browser.addEventListener("load", function onLoad() {
    30     browser.removeEventListener("load", onLoad, true);
    32     openConsole(null, function(aHud) {
    33       hud = aHud;
    35       HUDService.lastFinishedRequest.callback = requestCallbackWrapper;
    37       executeSoon(testPageLoad);
    38     });
    39   }, true);
    40 }
    42 function requestCallbackWrapper(aRequest)
    43 {
    44   lastRequest = aRequest;
    46   hud.ui.webConsoleClient.getResponseContent(lastRequest.actor,
    47     function(aResponse) {
    48       lastRequest.response.content = aResponse.content;
    49       lastRequest.discardResponseBody = aResponse.contentDiscarded;
    51       hud.ui.webConsoleClient.getRequestPostData(lastRequest.actor,
    52         function(aResponse) {
    53           lastRequest.request.postData = aResponse.postData;
    54           lastRequest.discardRequestBody = aResponse.postDataDiscarded;
    56           if (requestCallback) {
    57             requestCallback();
    58           }
    59         });
    60     });
    61 }
    63 function testPageLoad()
    64 {
    65   requestCallback = function() {
    66     // Check if page load was logged correctly.
    67     ok(lastRequest, "Page load was logged");
    69     is(lastRequest.request.url, TEST_NETWORK_REQUEST_URI,
    70       "Logged network entry is page load");
    71     is(lastRequest.request.method, "GET", "Method is correct");
    72     ok(!lastRequest.request.postData.text, "No request body was stored");
    73     ok(lastRequest.discardRequestBody, "Request body was discarded");
    74     ok(!lastRequest.response.content.text, "No response body was stored");
    75     ok(lastRequest.discardResponseBody, "Response body was discarded");
    77     lastRequest = null;
    78     requestCallback = null;
    79     executeSoon(testPageLoadBody);
    80   };
    82   content.location = TEST_NETWORK_REQUEST_URI;
    83 }
    85 function testPageLoadBody()
    86 {
    87   // Turn on logging of request bodies and check again.
    88   hud.ui.setSaveRequestAndResponseBodies(true).then(() => {
    89     ok(hud.ui._saveRequestAndResponseBodies,
    90       "The saveRequestAndResponseBodies property was successfully set.");
    92     testPageLoadBodyAfterSettingUpdate();
    93   });
    94 }
    96 function testPageLoadBodyAfterSettingUpdate()
    97 {
    98   let loaded = false;
    99   let requestCallbackInvoked = false;
   101   requestCallback = function() {
   102     ok(lastRequest, "Page load was logged again");
   103     ok(!lastRequest.discardResponseBody, "Response body was not discarded");
   104     is(lastRequest.response.content.text.indexOf("<!DOCTYPE HTML>"), 0,
   105       "Response body's beginning is okay");
   107     lastRequest = null;
   108     requestCallback = null;
   109     requestCallbackInvoked = true;
   111     if (loaded) {
   112       executeSoon(testXhrGet);
   113     }
   114   };
   116   browser.addEventListener("load", function onLoad() {
   117     browser.removeEventListener("load", onLoad, true);
   118     loaded = true;
   120     if (requestCallbackInvoked) {
   121       executeSoon(testXhrGet);
   122     }
   123   }, true);
   125   content.location.reload();
   126 }
   128 function testXhrGet()
   129 {
   130   requestCallback = function() {
   131     ok(lastRequest, "testXhrGet() was logged");
   132     is(lastRequest.request.method, "GET", "Method is correct");
   133     ok(!lastRequest.request.postData.text, "No request body was sent");
   134     ok(!lastRequest.discardRequestBody, "Request body was not discarded");
   135     is(lastRequest.response.content.text, TEST_DATA_JSON_CONTENT,
   136       "Response is correct");
   138     lastRequest = null;
   139     requestCallback = null;
   140     executeSoon(testXhrPost);
   141   };
   143   // Start the XMLHttpRequest() GET test.
   144   content.wrappedJSObject.testXhrGet();
   145 }
   147 function testXhrPost()
   148 {
   149   requestCallback = function() {
   150     ok(lastRequest, "testXhrPost() was logged");
   151     is(lastRequest.request.method, "POST", "Method is correct");
   152     is(lastRequest.request.postData.text, "Hello world!",
   153       "Request body was logged");
   154     is(lastRequest.response.content.text, TEST_DATA_JSON_CONTENT,
   155       "Response is correct");
   157     lastRequest = null;
   158     requestCallback = null;
   159     executeSoon(testFormSubmission);
   160   };
   162   // Start the XMLHttpRequest() POST test.
   163   content.wrappedJSObject.testXhrPost();
   164 }
   166 function testFormSubmission()
   167 {
   168   // Start the form submission test. As the form is submitted, the page is
   169   // loaded again. Bind to the load event to catch when this is done.
   170   requestCallback = function() {
   171     ok(lastRequest, "testFormSubmission() was logged");
   172     is(lastRequest.request.method, "POST", "Method is correct");
   173     isnot(lastRequest.request.postData.text.
   174       indexOf("Content-Type: application/x-www-form-urlencoded"), -1,
   175       "Content-Type is correct");
   176     isnot(lastRequest.request.postData.text.
   177       indexOf("Content-Length: 20"), -1, "Content-length is correct");
   178     isnot(lastRequest.request.postData.text.
   179       indexOf("name=foo+bar&age=144"), -1, "Form data is correct");
   180     is(lastRequest.response.content.text.indexOf("<!DOCTYPE HTML>"), 0,
   181       "Response body's beginning is okay");
   183     executeSoon(testNetworkPanel);
   184   };
   186   let form = content.document.querySelector("form");
   187   ok(form, "we have the HTML form");
   188   form.submit();
   189 }
   191 function testNetworkPanel()
   192 {
   193   // Open the NetworkPanel. The functionality of the NetworkPanel is tested
   194   // within separate test files.
   195   let networkPanel = hud.ui.openNetworkPanel(hud.ui.filterBox, lastRequest);
   197   networkPanel.panel.addEventListener("popupshown", function onPopupShown() {
   198     networkPanel.panel.removeEventListener("popupshown", onPopupShown, true);
   200     is(hud.ui.filterBox._netPanel, networkPanel,
   201        "Network panel stored on anchor node");
   202     ok(true, "NetworkPanel was opened");
   204     // All tests are done. Shutdown.
   205     networkPanel.panel.hidePopup();
   206     lastRequest = null;
   207     HUDService.lastFinishedRequest.callback = null;
   208     executeSoon(finishTest);
   209   }, true);
   210 }

mercurial