backing out bugs 587574, 588540, 573103, 568634 to clear leaks, a=#developers
authorRob Campbell <rcampbell@mozilla.com>
Sat, 28 Aug 2010 14:51:40 -0300
changeset 51701 289e6da90526a259e7b6fac8ef93c46d944db53c
parent 51700 f1897201ea6c88069e9b80474fb534b5b617b7c4
child 51702 bfc95c7ec709357b0b96293ffeb4685520190b8b
push idunknown
push userunknown
push dateunknown
bugs587574, 588540, 573103, 568634
milestone2.0b5pre
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
backing out bugs 587574, 588540, 573103, 568634 to clear leaks, a=#developers
toolkit/components/console/hudservice/HUDService.jsm
toolkit/components/console/hudservice/NetworkPanel.xhtml
toolkit/components/console/hudservice/tests/browser/Makefile.in
toolkit/components/console/hudservice/tests/browser/browser_HUDServiceTestsAll.js
toolkit/components/console/hudservice/tests/browser/browser_webconsole_netlogging.js
toolkit/components/console/hudservice/tests/browser/test-data.json
toolkit/components/console/hudservice/tests/browser/test-encoding-ISO-8859-1.html
toolkit/components/console/hudservice/tests/browser/test-network-request.html
toolkit/components/console/jar.mn
toolkit/locales/en-US/chrome/global/headsUpDisplay.properties
toolkit/locales/en-US/chrome/global/webConsole.dtd
toolkit/locales/jar.mn
toolkit/themes/gnomestripe/global/jar.mn
toolkit/themes/gnomestripe/global/webConsole_networkPanel.css
toolkit/themes/pinstripe/global/jar.mn
toolkit/themes/pinstripe/global/webConsole_networkPanel.css
toolkit/themes/winstripe/global/jar.mn
toolkit/themes/winstripe/global/webConsole_networkPanel.css
--- a/toolkit/components/console/hudservice/HUDService.jsm
+++ b/toolkit/components/console/hudservice/HUDService.jsm
@@ -58,22 +58,16 @@ XPCOMUtils.defineLazyServiceGetter(this,
 XPCOMUtils.defineLazyServiceGetter(this, "activityDistributor",
                                    "@mozilla.org/network/http-activity-distributor;1",
                                    "nsIHttpActivityDistributor");
 
 XPCOMUtils.defineLazyServiceGetter(this, "sss",
                                    "@mozilla.org/content/style-sheet-service;1",
                                    "nsIStyleSheetService");
 
-XPCOMUtils.defineLazyGetter(this, "NetUtil", function () {
-  var obj = {};
-  Cu.import("resource://gre/modules/NetUtil.jsm", obj);
-  return obj.NetUtil;
-});
-
 XPCOMUtils.defineLazyGetter(this, "PropertyPanel", function () {
   var obj = {};
   try {
     Cu.import("resource://gre/modules/PropertyPanel.jsm", obj);
   } catch (err) {
     Cu.reportError(err);
   }
   return obj.PropertyPanel;
@@ -109,162 +103,16 @@ const SEARCH_DELAY = 200;
 const ERRORS = { LOG_MESSAGE_MISSING_ARGS:
                  "Missing arguments: aMessage, aConsoleNode and aMessageNode are required.",
                  CANNOT_GET_HUD: "Cannot getHeads Up Display with provided ID",
                  MISSING_ARGS: "Missing arguments",
                  LOG_OUTPUT_FAILED: "Log Failure: Could not append messageNode to outputNode",
 };
 
 /**
- * Implements the nsIStreamListener and nsIRequestObserver interface. Used
- * within the HS_httpObserverFactory function to get the response body of
- * requests.
- *
- * The code is mostly based on code listings from:
- *
- *   http://www.softwareishard.com/blog/firebug/
- *      nsitraceablechannel-intercept-http-traffic/
- *
- * @param object aHttpActivity
- *        HttpActivity object associated with this request (see
- *        HS_httpObserverFactory). As the response is done, the response header,
- *        body and status is stored on aHttpActivity.
- */
-function ResponseListener(aHttpActivity) {
-  this.receivedData = "";
-  this.httpActivity = aHttpActivity;
-}
-
-ResponseListener.prototype =
-{
-  /**
-   * The original listener for this request.
-   */
-  originalListener: null,
-
-  /**
-   * The HttpActivity object associated with this response.
-   */
-  httpActivity: null,
-
-  /**
-   * Stores the received data as a string.
-   */
-  receivedData: null,
-
-  /**
-   * Sets the httpActivity object's response header if it isn't set already.
-   *
-   * @param nsIRequest aRequest
-   */
-  setResponseHeader: function RL_setResponseHeader(aRequest)
-  {
-    let httpActivity = this.httpActivity;
-    // Check if the header isn't set yet.
-    if (!httpActivity.response.header) {
-      httpActivity.response.header = {};
-      if (aRequest instanceof Ci.nsIHttpChannel) {
-        aRequest.visitResponseHeaders({
-          visitHeader: function(aName, aValue) {
-            httpActivity.response.header[aName] = aValue;
-          }
-        });
-      }
-    }
-  },
-
-  /**
-   * See documention at
-   * https://developer.mozilla.org/en/XPCOM_Interface_Reference/nsIStreamListener
-   *
-   * Grabs a copy of the original data and passes it on to the original listener.
-   *
-   * @param nsIRequest aRequest
-   * @param nsISupports aContext
-   * @param nsIInputStream aInputStream
-   * @param unsigned long aOffset
-   * @param unsigned long aCount
-   */
-  onDataAvailable: function RL_onDataAvailable(aRequest, aContext, aInputStream,
-                                                aOffset, aCount)
-  {
-    this.setResponseHeader(aRequest);
-
-    let StorageStream = Components.Constructor("@mozilla.org/storagestream;1",
-                                                "nsIStorageStream",
-                                                "init");
-    let BinaryOutputStream = Components.Constructor("@mozilla.org/binaryoutputstream;1",
-                                                      "nsIBinaryOutputStream",
-                                                      "setOutputStream");
-
-    storageStream = new StorageStream(8192, aCount, null);
-    binaryOutputStream = new BinaryOutputStream(storageStream.getOutputStream(0));
-
-    let data = NetUtil.readInputStreamToString(aInputStream, aCount);
-    this.receivedData += data;
-    binaryOutputStream.writeBytes(data, aCount);
-
-    this.originalListener.onDataAvailable(aRequest, aContext,
-      storageStream.newInputStream(0), aOffset, aCount);
-  },
-
-  /**
-   * See documentation at
-   * https://developer.mozilla.org/En/NsIRequestObserver
-   *
-   * @param nsIRequest aRequest
-   * @param nsISupports aContext
-   */
-  onStartRequest: function RL_onStartRequest(aRequest, aContext)
-  {
-    this.originalListener.onStartRequest(aRequest, aContext);
-  },
-
-  /**
-   * See documentation at
-   * https://developer.mozilla.org/En/NsIRequestObserver
-   *
-   * If aRequest is an nsIHttpChannel then the response header is stored on the
-   * httpActivity object. Also, the response body is set on the httpActivity
-   * object and the HUDService.lastFinishedRequestCallback is called if there
-   * is one.
-   *
-   * @param nsIRequest aRequest
-   * @param nsISupports aContext
-   * @param nsresult aStatusCode
-   */
-  onStopRequest: function RL_onStopRequest(aRequest, aContext, aStatusCode)
-  {
-    this.originalListener.onStopRequest(aRequest, aContext, aStatusCode);
-
-    this.setResponseHeader(aRequest);
-    this.httpActivity.response.body = this.receivedData;
-
-    if (HUDService.lastFinishedRequestCallback) {
-      HUDService.lastFinishedRequestCallback(this.httpActivity);
-    }
-
-    // Call update on all panels.
-    this.httpActivity.panels.forEach(function(weakRef) {
-      let panel = weakRef.get();
-      if (panel) {
-        panel.update();
-      }
-    });
-    this.httpActivity.response.isDone = true;
-    this.httpActivity = null;
-  },
-
-  QueryInterface: XPCOMUtils.generateQI([
-    Ci.nsIStreamListener,
-    Ci.nsISupports
-  ])
-}
-
-/**
  * Helper object for networking stuff.
  *
  * All of the following functions have been taken from the Firebug source. They
  * have been modified to match the Firefox coding rules.
  */
 
 // FIREBUG CODE BEGIN.
 
@@ -317,119 +165,16 @@ ResponseListener.prototype =
  *  Hernan Rodríguez Colmeiro
  *  Austin Andrews
  *  Christoph Dorn
  *  Steven Roussey (AppCenter Inc, Network54)
  */
 var NetworkHelper =
 {
   /**
-   * Converts aText with a given aCharset to unicode.
-   *
-   * @param string aText
-   *        Text to convert.
-   * @param string aCharset
-   *        Charset to convert the text to.
-   * @returns string
-   *          Converted text.
-   */
-  convertToUnicode: function NH_convertToUnicode(aText, aCharset)
-  {
-    let conv = Cc["@mozilla.org/intl/scriptableunicodeconverter"].
-               createInstance(Ci.nsIScriptableUnicodeConverter);
-    conv.charset = aCharset || "UTF-8";
-    return conv.ConvertToUnicode(aText);
-  },
-
-  /**
-   * Reads all available bytes from aStream and converts them to aCharset.
-   *
-   * @param nsIInputStream aStream
-   * @param string aCharset
-   * @returns string
-   *          UTF-16 encoded string based on the content of aStream and aCharset.
-   */
-  readAndConvertFromStream: function NH_readAndConvertFromStream(aStream, aCharset)
-  {
-    let text = null;
-    try {
-      text = NetUtil.readInputStreamToString(aStream, aStream.available())
-      return this.convertToUnicode(text, aCharset);
-    }
-    catch (err) {
-      return text;
-    }
-  },
-
-   /**
-   * Reads the posted text from aRequest.
-   *
-   * @param nsIHttpChannel aRequest
-   * @param nsIDOMNode aBrowser
-   * @returns string or null
-   *          Returns the posted string if it was possible to read from aRequest
-   *          otherwise null.
-   */
-  readPostTextFromRequest: function NH_readPostTextFromRequest(aRequest, aBrowser)
-  {
-    if (aRequest instanceof Ci.nsIUploadChannel) {
-      let iStream = aRequest.uploadStream;
-
-      let isSeekableStream = false;
-      if (iStream instanceof Ci.nsISeekableStream) {
-        isSeekableStream = true;
-      }
-
-      let prevOffset;
-      if (isSeekableStream) {
-        prevOffset = iStream.tell();
-        iStream.seek(Ci.nsISeekableStream.NS_SEEK_SET, 0);
-      }
-
-      // Read data from the stream.
-      let charset = aBrowser.contentWindow.document.characterSet;
-      let text = this.readAndConvertFromStream(iStream, charset);
-
-      // Seek locks the file, so seek to the beginning only if necko hasn't
-      // read it yet, since necko doesn't seek to 0 before reading (at lest
-      // not till 459384 is fixed).
-      if (isSeekableStream && prevOffset == 0) {
-        iStream.seek(Ci.nsISeekableStream.NS_SEEK_SET, 0);
-      }
-      return text;
-    }
-    return null;
-  },
-
-  /**
-   * Reads the posted text from the page's cache.
-   *
-   * @param nsIDOMNode aBrowser
-   * @returns string or null
-   *          Returns the posted string if it was possible to read from aBrowser
-   *          otherwise null.
-   */
-  readPostTextFromPage: function NH_readPostTextFromPage(aBrowser)
-  {
-    let webNav = aBrowser.webNavigation;
-    if (webNav instanceof Ci.nsIWebPageDescriptor) {
-      let descriptor = webNav.currentDescriptor;
-
-      if (descriptor instanceof Ci.nsISHEntry && descriptor.postData &&
-          descriptor instanceof Ci.nsISeekableStream) {
-        descriptor.seek(NS_SEEK_SET, 0);
-
-        let charset = browser.contentWindow.document.characterSet;
-        return this.readAndConvertFromStream(descriptor, charset);
-      }
-    }
-    return null;
-  },
-
-  /**
    * Gets the nsIDOMWindow that is associated with aRequest.
    *
    * @param nsIHttpChannel aRequest
    * @returns nsIDOMWindow or null
    */
   getWindowForRequest: function NH_getWindowForRequest(aRequest)
   {
     let loadContext = this.getRequestLoadContext(aRequest);
@@ -456,621 +201,21 @@ var NetworkHelper =
     if (aRequest && aRequest.loadGroup
                  && aRequest.loadGroup.notificationCallbacks) {
       try {
         return aRequest.loadGroup.notificationCallbacks.getInterface(Ci.nsILoadContext);
       } catch (ex) { }
     }
 
     return null;
-  },
-
-  /**
-   * Loads the content of aUrl from the cache.
-   *
-   * @param string aUrl
-   *        URL to load the cached content for.
-   * @param string aCharset
-   *        Assumed charset of the cached content. Used if there is no charset
-   *        on the channel directly.
-   * @param function aCallback
-   *        Callback that is called with the loaded cached content if available
-   *        or null if something failed while getting the cached content.
-   */
-  loadFromCache: function NH_loadFromCache(aUrl, aCharset, aCallback)
-  {
-    let channel = NetUtil.newChannel(aUrl);
-
-    // Ensure that we only read from the cache and not the server.
-    channel.loadFlags = Ci.nsIRequest.LOAD_FROM_CACHE |
-      Ci.nsICachingChannel.LOAD_ONLY_FROM_CACHE |
-      Ci.nsICachingChannel.LOAD_BYPASS_LOCAL_CACHE_IF_BUSY;
-
-    NetUtil.asyncFetch(channel, function (aInputStream, aStatusCode, aRequest) {
-      if (!Components.isSuccessCode(aStatusCode)) {
-        aCallback(null);
-        return;
-      }
-
-      // Try to get the encoding from the channel. If there is none, then use
-      // the passed assumed aCharset.
-      let aChannel = aRequest.QueryInterface(Ci.nsIChannel);
-      let contentCharset = aChannel.contentCharset || aCharset;
-
-      // Read the content of the stream using contentCharset as encoding.
-      aCallback(NetworkHelper.readAndConvertFromStream(aInputStream,
-                                                       contentCharset));
-    });
-  }
+   }
 }
 
 // FIREBUG CODE END.
 
-///////////////////////////////////////////////////////////////////////////
-//// Helper for creating the network panel.
-
-/**
- * Creates a DOMNode and sets all the attributes of aAttributes on the created
- * element.
- *
- * @param nsIDOMDocument aDocument
- *        Document to create the new DOMNode.
- * @param string aTag
- *        Name of the tag for the DOMNode.
- * @param object aAttributes
- *        Attributes set on the created DOMNode.
- *
- * @returns nsIDOMNode
- */
-function createElement(aDocument, aTag, aAttributes)
-{
-  let node = aDocument.createElement(aTag);
-  for (var attr in aAttributes) {
-    node.setAttribute(attr, aAttributes[attr]);
-  }
-  return node;
-}
-
-/**
- * Creates a new DOMNode and appends it to aParent.
- *
- * @param nsIDOMNode aParent
- *        A parent node to append the created element.
- * @param string aTag
- *        Name of the tag for the DOMNode.
- * @param object aAttributes
- *        Attributes set on the created DOMNode.
- *
- * @returns nsIDOMNode
- */
-function createAndAppendElement(aParent, aTag, aAttributes)
-{
-  let node = createElement(aParent.ownerDocument, aTag, aAttributes);
-  aParent.appendChild(node);
-  return node;
-}
-
-///////////////////////////////////////////////////////////////////////////
-//// NetworkPanel
-
-/**
- * Creates a new NetworkPanel.
- *
- * @param nsIDOMNode aParent
- *        Parent node to append the created panel to.
- * @param object aHttpActivity
- *        HttpActivity to display in the panel.
- */
-function NetworkPanel(aParent, aHttpActivity)
-{
-  let doc = aParent.ownerDocument;
-  this.httpActivity = aHttpActivity;
-
-  // Create the underlaying panel
-  this.panel = createElement(doc, "panel", {
-    label: HUDService.getStr("NetworkPanel.label"),
-    titlebar: "normal",
-    noautofocus: "true",
-    noautohide: "true",
-    close: "true"
-  });
-
-  // Create the browser that displays the NetworkPanel XHTML.
-  this.browser = createAndAppendElement(this.panel, "browser", {
-    src: "chrome://global/content/NetworkPanel.xhtml",
-    disablehistory: "true",
-    flex: "1"
-  });
-
-  // Destroy the panel when it's closed.
-  this.panel.addEventListener("popuphidden", function onPopupHide() {
-    self.panel.removeEventListener("popuphidden", onPopupHide, false);
-    self.panel.parentNode.removeChild(self.panel);
-    self.panel = null;
-    self.browser = null;
-    self.document = null;
-    self.httpActivity = null;
-  }, false);
-
-  // Set the document object and update the content once the panel is loaded.
-  let self = this;
-  this.panel.addEventListener("load", function onLoad() {
-    self.panel.removeEventListener("load", onLoad, true)
-    self.document = self.browser.contentWindow.document;
-    self.update();
-  }, true);
-
-  // Create the footer.
-  let footer = createElement(doc, "hbox", { align: "end" });
-  createAndAppendElement(footer, "spacer", { flex: 1 });
-
-  createAndAppendElement(footer, "resizer", { dir: "bottomend" });
-  this.panel.appendChild(footer);
-
-  aParent.appendChild(this.panel);
-}
-
-NetworkPanel.prototype =
-{
-  /**
-   * Callback is called once the NetworkPanel is processed completly. Used by
-   * unit tests.
-   */
-  isDoneCallback: null,
-
-  /**
-   * The current state of the output.
-   */
-  _state: 0,
-
-  /**
-   * State variables.
-   */
-  _INIT: 0,
-  _DISPLAYED_REQUEST_HEADER: 1,
-  _DISPLAYED_REQUEST_BODY: 2,
-  _DISPLAYED_RESPONSE_HEADER: 3,
-  _TRANSITION_CLOSED: 4,
-
-  _fromDataRegExp: /Content-Type\:\s*application\/x-www-form-urlencoded/,
-
-  /**
-   * Small helper function that is nearly equal to  HUDService.getFormatStr
-   * except that it prefixes aName with "NetworkPanel.".
-   *
-   * @param string aName
-   *        The name of an i10n string to format. This string is prefixed with
-   *        "NetworkPanel." before calling the HUDService.getFormatStr function.
-   * @param array aArray
-   *        Values used as placeholder for the i10n string.
-   * @returns string
-   *          The i10n formated string.
-   */
-  _format: function NP_format(aName, aArray)
-  {
-    return HUDService.getFormatStr("NetworkPanel." + aName, aArray);
-  },
-
-  /**
-   *
-   * @returns boolean
-   *          True if the response is an image, false otherwise.
-   */
-  get _responseIsImage()
-  {
-    let response = this.httpActivity.response;
-    if (!response || !response.header || !response.header["Content-Type"]) {
-      let request = this.httpActivity.request;
-      if (request.header["Accept"] &&
-          request.header["Accept"].indexOf("image/") != -1) {
-        return true;
-      }
-      else {
-        return false;
-      }
-    }
-    return response.header["Content-Type"].indexOf("image/") != -1;
-  },
-
-  /**
-   *
-   * @returns boolean
-   *          Returns true if the server responded that the request is already
-   *          in the browser's cache, false otherwise.
-   */
-  get _isResponseCached()
-  {
-    return this.httpActivity.response.status.indexOf("304") != -1;
-  },
-
-  /**
-   *
-   * @returns boolean
-   *          Returns true if the posted body contains form data.
-   */
-  get _isRequestBodyFormData()
-  {
-    let requestBody = this.httpActivity.request.body;
-    return this._fromDataRegExp.test(requestBody);
-  },
-
-  /**
-   * Appends the node with id=aId by the text aValue.
-   *
-   * @param string aId
-   * @param string aValue
-   * @returns void
-   */
-  _appendTextNode: function NP_appendTextNode(aId, aValue)
-  {
-    let textNode = this.document.createTextNode(aValue);
-    this.document.getElementById(aId).appendChild(textNode);
-  },
-
-  /**
-   * Generates some HTML to display the key-value pair of the aList data. The
-   * generated HTML is added to node with id=aParentId.
-   *
-   * @param string aParentId
-   *        Id of the parent node to append the list to.
-   * @oaram object aList
-   *        Object that holds the key-value information to display in aParentId.
-   * @param boolean aIgnoreCookie
-   *        If true, the key-value named "Cookie" is not added to the list.
-   * @returns void
-   */
-  _appendList: function NP_appendList(aParentId, aList, aIgnoreCookie)
-  {
-    let parent = this.document.getElementById(aParentId);
-    let doc = this.document;
-
-    let sortedList = {};
-    Object.keys(aList).sort().forEach(function(aKey) {
-      sortedList[aKey] = aList[aKey];
-    });
-
-    for (let key in sortedList) {
-      if (aIgnoreCookie && key == "Cookie") {
-        continue;
-      }
-
-      /**
-       * The following code creates the HTML:
-       *
-       * <span class="property-name">${line}:</span>
-       * <span class="property-value">${aList[line]}</span><br>
-       *
-       * and adds it to parent.
-       */
-      let textNode = doc.createTextNode(key + ":");
-      let span = doc.createElement("span");
-      span.setAttribute("class", "property-name");
-      span.appendChild(textNode);
-      parent.appendChild(span);
-
-      textNode = doc.createTextNode(sortedList[key]);
-      span = doc.createElement("span");
-      span.setAttribute("class", "property-value");
-      span.appendChild(textNode);
-      parent.appendChild(span);
-
-      parent.appendChild(doc.createElement("br"));
-    }
-  },
-
-  /**
-   * Displays the node with id=aId.
-   *
-   * @param string aId
-   * @returns void
-   */
-  _displayNode: function NP_displayNode(aId)
-  {
-    this.document.getElementById(aId).style.display = "block";
-  },
-
-  /**
-   * Sets the request URL, request method, the timing information when the
-   * request started and the request header content on the NetworkPanel.
-   * If the request header contains cookie data, a list of sent cookies is
-   * generated and a special sent cookie section is displayed + the cookie list
-   * added to it.
-   *
-   * @returns void
-   */
-  _displayRequestHeader: function NP_displayRequestHeader()
-  {
-    let timing = this.httpActivity.timing;
-    let request = this.httpActivity.request;
-
-    this._appendTextNode("headUrl", this.httpActivity.url);
-    this._appendTextNode("headMethod", this.httpActivity.method);
-
-    this._appendTextNode("requestHeadersInfo",
-      ConsoleUtils.timestampString(timing.REQUEST_HEADER/1000));
-
-    this._appendList("requestHeadersContent", request.header, true);
-
-    if ("Cookie" in request.header) {
-      this._displayNode("requestCookie");
-
-      let cookies = request.header.Cookie.split(";");
-      let cookieList = {};
-      let cookieListSorted = {};
-      cookies.forEach(function(cookie) {
-        let name, value;
-        [name, value] = cookie.trim().split("=");
-        cookieList[name] = value;
-      });
-      this._appendList("requestCookieContent", cookieList);
-    }
-  },
-
-  /**
-   * Displays the request body section of the NetworkPanel and set the request
-   * body content on the NetworkPanel.
-   *
-   * @returns void
-   */
-  _displayRequestBody: function NP_displayRequestBody() {
-    this._displayNode("requestBody");
-    this._appendTextNode("requestBodyContent", this.httpActivity.request.body);
-  },
-
-  /*
-   * Displays the `sent form data` section. Parses the request header for the
-   * submitted form data displays it inside of the `sent form data` section.
-   *
-   * @returns void
-   */
-  _displayRequestForm: function NP_processRequestForm() {
-    let requestBodyLines = this.httpActivity.request.body.split("\n");
-    let formData = requestBodyLines[requestBodyLines.length - 1].
-                      replace(/\+/g, " ").split("&");
-
-    function unescapeText(aText)
-    {
-      try {
-        return decodeURIComponent(aText);
-      }
-      catch (ex) {
-        return decodeURIComponent(unescape(aText));
-      }
-    }
-
-    let formDataObj = {};
-    for (let i = 0; i < formData.length; i++) {
-      let data = formData[i];
-      let idx = data.indexOf("=");
-      let key = data.substring(0, idx);
-      let value = data.substring(idx + 1);
-      formDataObj[unescapeText(key)] = unescapeText(value);
-    }
-
-    this._appendList("requestFormDataContent", formDataObj);
-    this._displayNode("requestFormData");
-  },
-
-  /**
-   * Displays the response section of the NetworkPanel, sets the response status,
-   * the duration between the start of the request and the receiving of the
-   * response header as well as the response header content on the the NetworkPanel.
-   *
-   * @returns void
-   */
-  _displayResponseHeader: function NP_displayResponseHeader()
-  {
-    let timing = this.httpActivity.timing;
-    let response = this.httpActivity.response;
-
-    this._appendTextNode("headStatus", response.status);
-
-    let deltaDuration =
-      Math.round((timing.RESPONSE_HEADER - timing.REQUEST_HEADER) / 1000);
-    this._appendTextNode("responseHeadersInfo",
-      this._format("durationMS", [deltaDuration]));
-
-    this._displayNode("responseContainer");
-    this._appendList("responseHeadersContent", response.header);
-  },
-
-  /**
-   * Displays the respones image section, sets the source of the image displayed
-   * in the image response section to the request URL and the duration between
-   * the receiving of the response header and the end of the request. Once the
-   * image is loaded, the size of the requested image is set.
-   *
-   * @returns void
-   */
-  _displayResponseImage: function NP_displayResponseImage()
-  {
-    let self = this;
-    let timing = this.httpActivity.timing;
-    let response = this.httpActivity.response;
-    let cached = "";
-
-    if (this._isResponseCached) {
-      cached = "Cached";
-    }
-
-    let imageNode = this.document.getElementById("responseImage" + cached +"Node");
-    imageNode.setAttribute("src", this.httpActivity.url);
-
-    // This function is called to set the imageInfo.
-    function setImageInfo() {
-      let deltaDuration =
-        Math.round((timing.RESPONSE_COMPLETE - timing.RESPONSE_HEADER) / 1000);
-      self._appendTextNode("responseImage" + cached + "Info",
-        self._format("imageSizeDeltaDurationMS", [
-          imageNode.width, imageNode.height, deltaDuration
-        ]
-      ));
-    }
-
-    // Check if the image is already loaded.
-    if (imageNode.width != 0) {
-      setImageInfo();
-    }
-    else {
-      // Image is not loaded yet therefore add a load event.
-      imageNode.addEventListener("load", function imageNodeLoad() {
-        imageNode.removeEventListener("load", imageNodeLoad, false);
-        setImageInfo();
-      }, false);
-    }
-
-    this._displayNode("responseImage" + cached);
-  },
-
-  /**
-   * Displays the response body section, sets the the duration between
-   * the receiving of the response header and the end of the request as well as
-   * the content of the response body on the NetworkPanel.
-   *
-   * @param [optional] string aCachedContent
-   *        Cached content for this request. If this argument is set, the
-   *        responseBodyCached section is displayed.
-   * @returns void
-   */
-  _displayResponseBody: function NP_displayResponseBody(aCachedContent)
-  {
-    let timing = this.httpActivity.timing;
-    let response = this.httpActivity.response;
-    let cached =  "";
-    if (aCachedContent) {
-      cached = "Cached";
-    }
-
-    let deltaDuration =
-      Math.round((timing.RESPONSE_COMPLETE - timing.RESPONSE_HEADER) / 1000);
-    this._appendTextNode("responseBody" + cached + "Info",
-      this._format("durationMS", [deltaDuration]));
-
-    this._displayNode("responseBody" + cached);
-    this._appendTextNode("responseBody" + cached + "Content",
-                            aCachedContent || response.body);
-  },
-
-  /**
-   * Displays the `no response body` section and sets the the duration between
-   * the receiving of the response header and the end of the request.
-   *
-   * @returns void
-   */
-  _displayNoResponseBody: function NP_displayNoResponseBody()
-  {
-    let timing = this.httpActivity.timing;
-
-    this._displayNode("responseNoBody");
-    let deltaDuration =
-      Math.round((timing.RESPONSE_COMPLETE - timing.RESPONSE_HEADER) / 1000);
-    this._appendTextNode("responseNoBodyInfo",
-      this._format("durationMS", [deltaDuration]));
-  },
-
-  /*
-   * Calls the isDoneCallback function if one is specified.
-   */
-  _callIsDone: function() {
-    if (this.isDoneCallback) {
-      this.isDoneCallback();
-    }
-  },
-
-  /**
-   * Updates the content of the NetworkPanel's browser.
-   *
-   * @returns void
-   */
-  update: function NP_update()
-  {
-    /**
-     * After the browser contentWindow is ready, the document object is set.
-     * If the document object isn't set yet, then the page is loaded and nothing
-     * can be updated.
-     */
-    if (!this.document) {
-      return;
-    }
-
-    let timing = this.httpActivity.timing;
-    let request = this.httpActivity.request;
-    let response = this.httpActivity.response;
-
-    switch (this._state) {
-      case this._INIT:
-        this._displayRequestHeader();
-        this._state = this._DISPLAYED_REQUEST_HEADER;
-        // FALL THROUGH
-
-      case this._DISPLAYED_REQUEST_HEADER:
-        // Process the request body if there is one.
-        if (request.body) {
-          // Check if we send some form data. If so, display the form data special.
-          if (this._isRequestBodyFormData) {
-            this._displayRequestForm();
-          }
-          else {
-            this._displayRequestBody();
-          }
-          this._state = this._DISPLAYED_REQUEST_BODY;
-        }
-        // FALL THROUGH
-
-      case this._DISPLAYED_REQUEST_BODY:
-        // There is always a response header. Therefore we can skip here if
-        // we don't have a response header yet and don't have to try updating
-        // anything else in the NetworkPanel.
-        if (!response.header) {
-          break
-        }
-        this._displayResponseHeader();
-        this._state = this._DISPLAYED_RESPONSE_HEADER;
-        // FALL THROUGH
-
-      case this._DISPLAYED_RESPONSE_HEADER:
-        // Check if the transition is done.
-        if (timing.TRANSACTION_CLOSE && response.isDone) {
-          if (this._responseIsImage) {
-            this._displayResponseImage();
-            this._callIsDone();
-          }
-          else if (response.body) {
-            this._displayResponseBody();
-            this._callIsDone();
-          }
-          else if (this._isResponseCached) {
-            let self = this;
-            NetworkHelper.loadFromCache(this.httpActivity.url,
-                                        this.httpActivity.charset,
-                                        function(aContent) {
-              // If some content could be loaded from the cache, then display
-              // the body.
-              if (aContent) {
-                self._displayResponseBody(aContent);
-                self._callIsDone();
-              }
-              // Otherwise, show the "There is no response body" hint.
-              else {
-                self._displayNoResponseBody();
-                self._callIsDone();
-              }
-            });
-          }
-          else {
-            this._displayNoResponseBody();
-            this._callIsDone();
-          }
-          this._state = this._TRANSITION_CLOSED;
-        }
-        break;
-    }
-  }
-}
-
 function HUD_SERVICE()
 {
   // TODO: provide mixins for FENNEC: bug 568621
   if (appName() == "FIREFOX") {
     var mixins = new FirefoxApplicationHooks();
   }
   else {
     throw new Error("Unsupported Application");
@@ -1612,21 +757,16 @@ HUD_SERVICE.prototype =
   /**
    * When a display is being destroyed, unregister it first
    *
    * @param string aId
    * @returns void
    */
   unregisterDisplay: function HS_unregisterDisplay(aId)
   {
-    // Remove children from the output. If the output is not cleared, there can
-    // be leaks as some nodes has node.onclick = function; set and GC can't
-    // remove the nodes then.
-    HUDService.clearDisplay(aId);
-
     // remove HUD DOM node and
     // remove display references from local registries get the outputNode
     var outputNode = this.mixins.getOutputNodeById(aId);
     var parent = outputNode.parentNode;
     var splitters = parent.querySelectorAll("splitter");
     var len = splitters.length;
     for (var i = 0; i < len; i++) {
       if (splitters[i].getAttribute("class") == "hud-splitter") {
@@ -1965,276 +1105,90 @@ HUD_SERVICE.prototype =
       .rootTreeItem
       .QueryInterface(Ci.nsIInterfaceRequestor)
       .getInterface(Ci.nsIDOMWindow)
       .QueryInterface(Ci.nsIDOMChromeWindow);
     return win;
   },
 
   /**
-   * Requests that haven't finished yet.
-   */
-  openRequests: {},
-
-  /**
-   * Assign a function to this property to listen for finished httpRequests.
-   * Used by unit tests.
-   */
-  lastFinishedRequestCallback: null,
-
-  /**
-   * Opens a NetworkPanel.
-   *
-   * @param nsIDOMNode aNode
-   *        DOMNode to display the panel next to.
-   * @param object aHttpActivity
-   *        httpActivity object. The data of this object is displayed in the
-   *        NetworkPanel.
-   * @returns NetworkPanel
-   */
-  openNetworkPanel: function (aNode, aHttpActivity) {
-    let doc = aNode.ownerDocument;
-    let parent = doc.getElementById("mainPopupSet");
-    let netPanel = new NetworkPanel(parent, aHttpActivity);
-
-    let panel = netPanel.panel;
-    panel.openPopup(aNode, "after_pointer", 0, 0, false, false);
-    panel.sizeTo(350, 400);
-    aHttpActivity.panels.push(Cu.getWeakReference(netPanel));
-    return netPanel;
-  },
-
-  /**
    * Begin observing HTTP traffic that we care about,
    * namely traffic that originates inside any context that a Heads Up Display
    * is active for.
    */
   startHTTPObservation: function HS_httpObserverFactory()
   {
     // creates an observer for http traffic
     var self = this;
     var httpObserver = {
       observeActivity :
       function (aChannel, aActivityType, aActivitySubtype,
                 aTimestamp, aExtraSizeData, aExtraStringData)
       {
+        var loadGroup;
         if (aActivityType ==
-              activityDistributor.ACTIVITY_TYPE_HTTP_TRANSACTION ||
-            aActivityType ==
-              activityDistributor.ACTIVITY_TYPE_SOCKET_TRANSPORT) {
+            activityDistributor.ACTIVITY_TYPE_HTTP_TRANSACTION) {
 
           aChannel = aChannel.QueryInterface(Ci.nsIHttpChannel);
 
-          let transCodes = this.httpTransactionCodes;
-          let hudId;
+          var transCodes = this.httpTransactionCodes;
 
           if (aActivitySubtype ==
               activityDistributor.ACTIVITY_SUBTYPE_REQUEST_HEADER ) {
             // Try to get the source window of the request.
             let win = NetworkHelper.getWindowForRequest(aChannel);
             if (!win) {
               return;
             }
 
             // Try to get the hudId that is associated to the window.
-            hudId = self.getHudIdByWindow(win);
+            let hudId = self.getHudIdByWindow(win);
             if (!hudId) {
               return;
             }
 
-            // The httpActivity object will hold all information concerning
-            // this request and later response.
-            let httpActivity = {
-              id: self.sequenceId(),
-              hudId: hudId,
-              url: aChannel.URI.spec,
-              method: aChannel.requestMethod,
+            var httpActivity = {
               channel: aChannel,
-              charset: win.document.characterSet,
-
-              panels: [],
-              request: {
-                header: { }
-              },
-              response: {
-                header: null
-              },
-              timing: {
-                "REQUEST_HEADER": aTimestamp
-              }
+              type: aActivityType,
+              subType: aActivitySubtype,
+              timestamp: aTimestamp,
+              extraSizeData: aExtraSizeData,
+              extraStringData: aExtraStringData,
+              stage: transCodes[aActivitySubtype],
+              hudId: hudId
             };
 
-            // Add a new output entry.
+            // create a unique ID to track this transaction and be able to
+            // update the logged node with subsequent http transactions
+            httpActivity.httpId = self.sequenceId();
             let loggedNode =
               self.logActivity("network", aChannel.URI, httpActivity);
-
-            // In some cases loggedNode can be undefined (e.g. if an image was
-            // requested). Don't continue in such a case.
-            if (!loggedNode) {
-              return;
-            }
-
-            // Add listener for the response body.
-            let newListener = new ResponseListener(httpActivity);
-            aChannel.QueryInterface(Ci.nsITraceableChannel);
-            newListener.originalListener = aChannel.setNewListener(newListener);
-            httpActivity.response.listener = newListener;
-
-            // Copy the request header data.
-            aChannel.visitRequestHeaders({
-              visitHeader: function(aName, aValue) {
-                httpActivity.request.header[aName] = aValue;
-              }
-            });
-
-            // Store the loggedNode and the httpActivity object for later reuse.
-            httpActivity.messageObject = loggedNode;
-            self.openRequests[httpActivity.id] = httpActivity;
-
-            // Make the network span clickable.
-            let linkNode = loggedNode.messageNode;
-            linkNode.setAttribute("aria-haspopup", "true");
-            linkNode.onclick = function() {
-              self.openNetworkPanel(linkNode, httpActivity);
-            }
-          }
-          else {
-            // Iterate over all currently ongoing requests. If aChannel can't
-            // be found within them, then exit this function.
-            let httpActivity = null;
-            for each (var item in self.openRequests) {
-              if (item.channel !== aChannel) {
-                continue;
-              }
-              httpActivity = item;
-              break;
-            }
-
-            if (!httpActivity) {
-              return;
-            }
-
-            let msgObject, updatePanel = false;
-            let data, textNode;
-            // Store the time information for this activity subtype.
-            httpActivity.timing[transCodes[aActivitySubtype]] = aTimestamp;
-
-            switch (aActivitySubtype) {
-              case activityDistributor.ACTIVITY_SUBTYPE_REQUEST_BODY_SENT:
-                let gBrowser = HUDService.currentContext().gBrowser;
-
-                let sentBody = NetworkHelper.readPostTextFromRequest(
-                                aChannel, gBrowser);
-                if (!sentBody) {
-                  // If the request URL is the same as the current page url, then
-                  // we can try to get the posted text from the page directly.
-                  // This check is necessary as otherwise the
-                  //   NetworkHelper.readPostTextFromPage
-                  // function is called for image requests as well but these
-                  // are not web pages and as such don't store the posted text
-                  // in the cache of the webpage.
-                  if (httpActivity.url == gBrowser.contentWindow.location.href) {
-                    sentBody = NetworkHelper.readPostTextFromPage(gBrowser);
-                  }
-                  if (!sentBody) {
-                    sentBody = "";
-                  }
-                }
-                httpActivity.request.body = sentBody;
-                break;
-
-              case activityDistributor.ACTIVITY_SUBTYPE_RESPONSE_HEADER:
-                msgObject = httpActivity.messageObject;
-
-                // aExtraStringData contains the response header. The first line
-                // contains the response status (e.g. HTTP/1.1 200 OK).
-                //
-                // Note: The response header is not saved here. Calling the
-                //       aChannel.visitResponseHeaders at this point sometimes
-                //       causes an NS_ERROR_NOT_AVAILABLE exception. Therefore,
-                //       the response header and response body is stored on the
-                //       httpActivity object within the RL_onStopRequest function.
-                httpActivity.response.status =
-                  aExtraStringData.split(/\r\n|\n|\r/)[0];
-
-                // Remove the textNode from the messageNode and add a new one
-                // that contains the respond http status.
-                textNode = msgObject.messageNode.firstChild;
-                textNode.parentNode.removeChild(textNode);
-
-                data = [ httpActivity.url,
-                         httpActivity.response.status ];
-
-                msgObject.messageNode.appendChild(
-                  msgObject.textFactory(
-                    msgObject.prefix +
-                    self.getFormatStr("networkUrlWithStatus", data)));
-
-                break;
-
-              case activityDistributor.ACTIVITY_SUBTYPE_TRANSACTION_CLOSE:
-                msgObject = httpActivity.messageObject;
-
-
-                let timing = httpActivity.timing;
-                let requestDuration =
-                  Math.round((timing.RESPONSE_COMPLETE -
-                                timing.REQUEST_HEADER) / 1000);
-
-                // Remove the textNode from the messageNode and add a new one
-                // that contains the request duration.
-                textNode = msgObject.messageNode.firstChild;
-                textNode.parentNode.removeChild(textNode);
-
-                data = [ httpActivity.url,
-                         httpActivity.response.status,
-                         requestDuration ];
-
-                msgObject.messageNode.appendChild(
-                  msgObject.textFactory(
-                    msgObject.prefix +
-                    self.getFormatStr("networkUrlWithStatusAndDuration", data)));
-
-                delete self.openRequests[item.id];
-                updatePanel = true;
-                break;
-            }
-
-            if (updatePanel) {
-              httpActivity.panels.forEach(function(weakRef) {
-                let panel = weakRef.get();
-                if (panel) {
-                  panel.update();
-                }
-              });
-            }
+            self.httpTransactions[aChannel] =
+              new Number(httpActivity.httpId);
           }
         }
       },
 
       httpTransactionCodes: {
         0x5001: "REQUEST_HEADER",
         0x5002: "REQUEST_BODY_SENT",
         0x5003: "RESPONSE_START",
         0x5004: "RESPONSE_HEADER",
         0x5005: "RESPONSE_COMPLETE",
         0x5006: "TRANSACTION_CLOSE",
-
-        0x804b0003: "STATUS_RESOLVING",
-        0x804b0007: "STATUS_CONNECTING_TO",
-        0x804b0004: "STATUS_CONNECTED_TO",
-        0x804b0005: "STATUS_SENDING_TO",
-        0x804b000a: "STATUS_WAITING_FOR",
-        0x804b0006: "STATUS_RECEIVING_FROM"
       }
     };
 
     activityDistributor.addObserver(httpObserver);
   },
 
+  // keep tracked of trasactions where the request header was logged
+  // update logged transactions thereafter.
+  httpTransactions: {},
+
   /**
    * Logs network activity
    *
    * @param nsIURI aURI
    * @param object aActivityObject
    * @returns void
    */
   logNetActivity: function HS_logNetActivity(aType, aURI, aActivityObject)
@@ -2252,30 +1206,23 @@ HUD_SERVICE.prototype =
       var message = { logLevel: aType,
                       activityObj: aActivityObject,
                       hudId: hudId,
                       origin: "network",
                       domId: domId,
                     };
       var msgType = this.getStr("typeNetwork");
       var msg = msgType + " " +
-        aActivityObject.method +
+        aActivityObject.channel.requestMethod +
         " " +
-        aActivityObject.url;
+        aURI.spec;
       message.message = msg;
-
       var messageObject =
-        this.messageFactory(message, aType, outputNode, aActivityObject);
-
-      var timestampedMessage = messageObject.timestampedMessage;
-      var urlIdx = timestampedMessage.indexOf(aActivityObject.url);
-      messageObject.prefix = timestampedMessage.substring(0, urlIdx);
-
+      this.messageFactory(message, aType, outputNode, aActivityObject);
       this.logMessage(messageObject.messageObject, outputNode, messageObject.messageNode);
-      return messageObject;
     }
     catch (ex) {
       Cu.reportError(ex);
     }
   },
 
   /**
    * Logs console listener activity
@@ -2355,17 +1302,17 @@ HUD_SERVICE.prototype =
    * @param object (or nsIScriptError) aActivityObj
    * @returns void
    */
   logActivity: function HS_logActivity(aType, aURI, aActivityObject)
   {
     var displayNode, outputNode, hudId;
 
     if (aType == "network") {
-      return this.logNetActivity(aType, aURI, aActivityObject);
+      var result = this.logNetActivity(aType, aURI, aActivityObject);
     }
     else if (aType == "console-listener") {
       this.logConsoleActivity(aURI, aActivityObject);
     }
   },
 
   /**
    * Builds and appends a group to the console if enough time has passed since
@@ -4193,19 +3140,19 @@ LogMessage.prototype = {
    *
    * @returns nsIDOMNode
    */
   createLogNode: function LM_createLogNode()
   {
     this.messageNode = this.xulElementFactory("label");
 
     var ts = ConsoleUtils.timestamp();
-    this.timestampedMessage = ConsoleUtils.timestampString(ts) + ": " +
+    var timestampedMessage = ConsoleUtils.timestampString(ts) + ": " +
       this.message.message;
-    var messageTxtNode = this.textFactory(this.timestampedMessage);
+    var messageTxtNode = this.textFactory(timestampedMessage);
 
     this.messageNode.appendChild(messageTxtNode);
 
     var klass = "hud-msg-node hud-" + this.level;
     this.messageNode.setAttribute("class", klass);
 
     var self = this;
 
deleted file mode 100644
--- a/toolkit/components/console/hudservice/NetworkPanel.xhtml
+++ /dev/null
@@ -1,132 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
-  "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" [
-<!ENTITY % webConsoleDTD SYSTEM "chrome://global/locale/webConsole.dtd" >
-%webConsoleDTD;
-]>
-
-<!-- ***** BEGIN LICENSE BLOCK *****
-   - Version: MPL 1.1/GPL 2.0/LGPL 2.1
-   -
-   - The contents of this file are subject to the Mozilla Public License Version
-   - 1.1 (the "License"); you may not use this file except in compliance with
-   - the License. You may obtain a copy of the License at
-   - http://www.mozilla.org/MPL/
-   -
-   - Software distributed under the License is distributed on an "AS IS" basis,
-   - WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
-   - for the specific language governing rights and limitations under the
-   - License.
-   -
-   - The Original Code is DevTools WebConsole Code.
-   -
-   - The Initial Developer of the Original Code is
-   - Mozilla Foundation.
-   - Portions created by the Initial Developer are Copyright (C) 2010
-   - the Initial Developer. All Rights Reserved.
-   -
-   - Contributor(s):
-   -   Joe Walker <jwalker@mozilla.com>
-   -   Julian Viereck <jviereck@mozilla.com>
-   -
-   - Alternatively, the contents of this file may be used under the terms of
-   - either the GNU General Public License Version 2 or later (the "GPL"), or
-   - the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
-   - in which case the provisions of the GPL or the LGPL are applicable instead
-   - of those above. If you wish to allow use of your version of this file only
-   - under the terms of either the GPL or the LGPL, and not to allow others to
-   - use your version of this file under the terms of the MPL, indicate your
-   - decision by deleting the provisions above and replace them with the notice
-   - and other provisions required by the LGPL or the GPL. If you do not delete
-   - the provisions above, a recipient may use your version of this file under
-   - the terms of any one of the MPL, the GPL or the LGPL.
-   -
-   - ***** END LICENSE BLOCK ***** -->
-
-
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
-<head>
-  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-  <link rel="stylesheet" href="chrome://global/skin/webConsole_networkPanel.css" type="text/css"/>
-</head>
-<body role="application">
-<div id="header">
-  <span class="property-name">&networkPanel.requestURL;:</span>
-  <span class="property-value" id="headUrl"></span><br />
-  <span class="property-name">&networkPanel.requestMethod;:</span>
-  <span class="property-value" id="headMethod"></span><br />
-  <span class="property-name">&networkPanel.statusCode;:</span>
-  <span class="property-value" id="headStatus"></span>
-</div>
-
-<div class="group">
-  <h1>
-    &networkPanel.requestHeaders;
-    <span id="requestHeadersInfo" class="info"></span>
-  </h1>
-    <div class="property-header" id="requestHeadersContent"></div>
-
-  <div id="requestCookie" style="display:none">
-    <h1>&networkPanel.requestCookie;</h1>
-      <div class="property-header" id="requestCookieContent"></div>
-  </div>
-
-  <div id="requestBody" style="display:none">
-    <h1>&networkPanel.requestBody;</h1>
-      <div class="property-header" id="requestBodyContent"></div>
-  </div>
-  <div id="requestFormData" style="display:none">
-    <h1>&networkPanel.requestFormData;</h1>
-      <div class="property-header" id="requestFormDataContent"></div>
-  </div>
-</div>
-
-<div class="group" id="responseContainer" style="display:none">
-  <h1>
-    &networkPanel.responseHeaders;
-    <span id="responseHeadersInfo" class="info">&Delta;</span>
-  </h1>
-    <div class="property-header" id="responseHeadersContent"></div>
-
-  <div id="responseBody" style="display:none">
-    <h1>
-      &networkPanel.responseBody;
-      <span class="info" id="responseBodyInfo">&Delta;</span>
-    </h1>
-      <div class="property-header" id="responseBodyContent"></div>
-  </div>
-  <div id="responseBodyCached" style="display:none">
-    <h1>
-      &networkPanel.responseBodyCached;
-      <span class="info" id="responseBodyCachedInfo">&Delta;</span>
-    </h1>
-      <div class="property-header" id="responseBodyCachedContent"></div>
-  </div>
-  <div id="responseNoBody" style="display:none">
-    <h1>
-      &networkPanel.responseNoBody;
-      <span id="responseNoBodyInfo" class="info">&Delta;</span>
-    </h1>
-  </div>
-  <div id="responseImage" style="display:none">
-    <h1>
-      &networkPanel.responseImage;
-      <span id="responseImageInfo" class="info"></span>
-    </h1>
-    <div id="responseImageNodeDiv">
-      <img id="responseImageNode" />
-    </div>
-  </div>
-  <div id="responseImageCached" style="display:none">
-    <h1>
-      &networkPanel.responseImageCached;
-      <span id="responseImageCachedInfo" class="info"></span>
-    </h1>
-    <div id="responseImageNodeDiv">
-      <img id="responseImageCachedNode" />
-    </div>
-  </div>
-</div>
-</body>
-</html>
--- a/toolkit/components/console/hudservice/tests/browser/Makefile.in
+++ b/toolkit/components/console/hudservice/tests/browser/Makefile.in
@@ -40,32 +40,29 @@ srcdir		= @srcdir@
 VPATH			= @srcdir@
 relativesrcdir  = toolkit/components/console/hudservice/tests/browser
 
 include $(DEPTH)/config/autoconf.mk
 include $(topsrcdir)/config/rules.mk
 
 _BROWSER_TEST_FILES = \
 	browser_HUDServiceTestsAll.js \
-	browser_webconsole_netlogging.js \
 	$(NULL)
 
 _BROWSER_TEST_PAGES = \
 	test-console.html \
 	test-network.html \
-	test-network-request.html \
 	test-mutation.html \
 	testscript.js \
 	test-filter.html \
 	test-observe-http-ajax.html \
 	test-data.json \
 	test-property-provider.html \
 	test-error.html \
 	test-duplicate-error.html \
 	test-image.png \
-	test-encoding-ISO-8859-1.html \
 	$(NULL)
 
 libs:: $(_BROWSER_TEST_FILES)
 	$(INSTALL) $(foreach f,$^,"$f") $(DEPTH)/_tests/testing/mochitest/browser/$(relativesrcdir)
 
 libs:: $(_BROWSER_TEST_PAGES)
 	$(INSTALL) $(foreach f,$^,"$f") $(DEPTH)/_tests/testing/mochitest/browser/$(relativesrcdir)
--- a/toolkit/components/console/hudservice/tests/browser/browser_HUDServiceTestsAll.js
+++ b/toolkit/components/console/hudservice/tests/browser/browser_HUDServiceTestsAll.js
@@ -65,20 +65,16 @@ const TEST_HTTP_URI = "http://example.co
 const TEST_NETWORK_URI = "http://example.com/browser/toolkit/components/console/hudservice/tests/browser/test-network.html";
 
 const TEST_PROPERTY_PROVIDER_URI = "http://example.com/browser/toolkit/components/console/hudservice/tests/browser/test-property-provider.html";
 
 const TEST_ERROR_URI = "http://example.com/browser/toolkit/components/console/hudservice/tests/browser/test-error.html";
 
 const TEST_DUPLICATE_ERROR_URI = "http://example.com/browser/toolkit/components/console/hudservice/tests/browser/test-duplicate-error.html";
 
-const TEST_IMG = "http://example.com/browser/toolkit/components/console/hudservice/tests/browser/test-image.png";
-
-const TEST_ENCODING_ISO_8859_1 = "http://example.com/browser/toolkit/components/console/hudservice/tests/browser/test-encoding-ISO-8859-1.html";
-
 function noCacheUriSpec(aUriSpec) {
   return aUriSpec + "?_=" + Date.now();
 }
 
 content.location.href = TEST_URI;
 
 function testRegistries() {
   var displaysIdx = HUDService.displaysIndex();
@@ -568,358 +564,16 @@ function testConsoleHistory()
 
   is (input.value, "", "check input is still empty");
 
   let idxLast = executeList.length - 1;
   jsterm.historyPeruse(true);
   is (input.value, executeList[idxLast], "check history next idx:" + idxLast);
 }
 
-function testNetworkPanel()
-{
-  function checkIsVisible(aPanel, aList) {
-    for (let id in aList) {
-      let node = aPanel.document.getElementById(id);
-      let isVisible = aList[id];
-      is(node.style.display, (isVisible ? "block" : "none"), id + " isVisible=" + isVisible);
-    }
-  }
-
-  function checkNodeContent(aPanel, aId, aContent) {
-    let node = aPanel.document.getElementById(aId);
-    if (node == null) {
-      ok(false, "Tried to access node " + aId + " that doesn't exist!");
-    }
-    else if (node.textContent.indexOf(aContent) != -1) {
-      ok(true, "checking content of " + aId);
-    }
-    else {
-      ok(false, "Got false value for " + aId + ": " + node.textContent + " doesn't have " + aContent);
-    }
-  }
-
-  function checkNodeKeyValue(aPanel, aId, aKey, aValue) {
-    let node = aPanel.document.getElementById(aId);
-
-    let testHTML = '<span xmlns="http://www.w3.org/1999/xhtml" class="property-name">' + aKey + ':</span>';
-    testHTML += '<span xmlns="http://www.w3.org/1999/xhtml" class="property-value">' + aValue + '</span>';
-    isnot(node.innerHTML.indexOf(testHTML), -1, "checking content of " + aId);
-  }
-
-  let testDriver;
-  function testGen() {
-    var httpActivity = {
-      url: "http://www.testpage.com",
-      method: "GET",
-
-      panels: [],
-      request: {
-        header: {
-          foo: "bar"
-        }
-      },
-      response: { },
-      timing: {
-        "REQUEST_HEADER": 0
-      }
-    };
-
-    let networkPanel = HUDService.openNetworkPanel(filterBox, httpActivity);
-
-    is (networkPanel, httpActivity.panels[0].get(), "Network panel stored on httpActivity object");
-    networkPanel.panel.addEventListener("load", function onLoad() {
-      networkPanel.panel.removeEventListener("load", onLoad, true);
-      testDriver.next();
-    }, true);
-    yield;
-
-    checkIsVisible(networkPanel, {
-      requestCookie: false,
-      requestFormData: false,
-      requestBody: false,
-      responseContainer: false,
-      responseBody: false,
-      responseNoBody: false,
-      responseImage: false,
-      responseImageCached: false
-    });
-
-    checkNodeContent(networkPanel, "header", "http://www.testpage.com");
-    checkNodeContent(networkPanel, "header", "GET");
-    checkNodeKeyValue(networkPanel, "requestHeadersContent", "foo", "bar");
-
-    // Test request body.
-    httpActivity.request.body = "hello world";
-    networkPanel.update();
-    checkIsVisible(networkPanel, {
-      requestBody: true,
-      requestFormData: false,
-      requestCookie: false,
-      responseContainer: false,
-      responseBody: false,
-      responseNoBody: false,
-      responseImage: false,
-      responseImageCached: false
-    });
-    checkNodeContent(networkPanel, "requestBodyContent", "hello world");
-
-    // Test response header.
-    httpActivity.timing.RESPONSE_HEADER = 1000;
-    httpActivity.response.status = "999 earthquake win";
-    httpActivity.response.header = {
-      leaveHouses: "true"
-    }
-    networkPanel.update();
-    checkIsVisible(networkPanel, {
-      requestBody: true,
-      requestFormData: false,
-      requestCookie: false,
-      responseContainer: true,
-      responseBody: false,
-      responseNoBody: false,
-      responseImage: false,
-      responseImageCached: false
-    });
-
-    checkNodeContent(networkPanel, "header", "999 earthquake win");
-    checkNodeKeyValue(networkPanel, "responseHeadersContent", "leaveHouses", "true");
-    checkNodeContent(networkPanel, "responseHeadersInfo", "1ms");
-
-    httpActivity.timing.RESPONSE_COMPLETE = 2500;
-    // This is necessary to show that the request is done.
-    httpActivity.timing.TRANSACTION_CLOSE = 2500;
-    networkPanel.update();
-
-    checkIsVisible(networkPanel, {
-      requestBody: true,
-      requestCookie: false,
-      requestFormData: false,
-      responseContainer: true,
-      responseBody: false,
-      responseNoBody: false,
-      responseImage: false,
-      responseImageCached: false
-    });
-
-    httpActivity.response.isDone = true;
-    networkPanel.update();
-
-    checkNodeContent(networkPanel, "responseNoBodyInfo", "2ms");
-    checkIsVisible(networkPanel, {
-      requestBody: true,
-      requestCookie: false,
-      responseContainer: true,
-      responseBody: false,
-      responseNoBody: true,
-      responseImage: false,
-      responseImageCached: false
-    });
-
-    networkPanel.panel.hidePopup();
-
-    // Second run: Test for cookies and response body.
-    httpActivity.request.header.Cookie = "foo=bar;  hello=world";
-    httpActivity.response.body = "get out here";
-
-    networkPanel = HUDService.openNetworkPanel(filterBox, httpActivity);
-    is (networkPanel, httpActivity.panels[1].get(), "Network panel stored on httpActivity object");
-    networkPanel.panel.addEventListener("load", function onLoad() {
-      networkPanel.panel.removeEventListener("load", onLoad, true);
-      testDriver.next();
-    }, true);
-    yield;
-
-
-    checkIsVisible(networkPanel, {
-      requestBody: true,
-      requestFormData: false,
-      requestCookie: true,
-      responseContainer: true,
-      responseBody: true,
-      responseNoBody: false,
-      responseImage: false,
-      responseImageCached: false
-    });
-
-    checkNodeKeyValue(networkPanel, "requestCookieContent", "foo", "bar");
-    checkNodeKeyValue(networkPanel, "requestCookieContent", "hello", "world");
-    checkNodeContent(networkPanel, "responseBodyContent", "get out here");
-    checkNodeContent(networkPanel, "responseBodyInfo", "2ms");
-
-    networkPanel.panel.hidePopup();
-
-    // Check image request.
-    httpActivity.response.header["Content-Type"] = "image/png";
-    httpActivity.url =  TEST_IMG;
-
-    networkPanel = HUDService.openNetworkPanel(filterBox, httpActivity);
-    networkPanel.panel.addEventListener("load", function onLoad() {
-      networkPanel.panel.removeEventListener("load", onLoad, true);
-      testDriver.next();
-    }, true);
-    yield;
-
-    checkIsVisible(networkPanel, {
-      requestBody: true,
-      requestFormData: false,
-      requestCookie: true,
-      responseContainer: true,
-      responseBody: false,
-      responseNoBody: false,
-      responseImage: true,
-      responseImageCached: false
-    });
-
-    let imgNode = networkPanel.document.getElementById("responseImageNode");
-    is(imgNode.getAttribute("src"), TEST_IMG, "Displayed image is correct");
-
-    function checkImageResponseInfo() {
-      checkNodeContent(networkPanel, "responseImageInfo", "2ms");
-      checkNodeContent(networkPanel, "responseImageInfo", "16x16px");
-    }
-
-    // Check if the image is loaded already.
-    if (imgNode.width == 0) {
-      imgNode.addEventListener("load", function onLoad() {
-        imgNode.removeEventListener("load", onLoad, false);
-        checkImageResponseInfo();
-        networkPanel.panel.hidePopup();
-        testDriver.next();
-      }, false);
-      // Wait until the image is loaded.
-      yield;
-    }
-    else {
-      checkImageResponseInfo();
-      networkPanel.panel.hidePopup();
-    }
-
-    // Check cached image request.
-    httpActivity.response.status = "HTTP/1.1 304 Not Modified";
-
-    networkPanel = HUDService.openNetworkPanel(filterBox, httpActivity);
-    networkPanel.panel.addEventListener("load", function onLoad() {
-      networkPanel.panel.removeEventListener("load", onLoad, true);
-      testDriver.next();
-    }, true);
-    yield;
-
-    checkIsVisible(networkPanel, {
-      requestBody: true,
-      requestFormData: false,
-      requestCookie: true,
-      responseContainer: true,
-      responseBody: false,
-      responseNoBody: false,
-      responseImage: false,
-      responseImageCached: true
-    });
-
-    let imgNode = networkPanel.document.getElementById("responseImageCachedNode");
-    is(imgNode.getAttribute("src"), TEST_IMG, "Displayed image is correct");
-
-    networkPanel.panel.hidePopup();
-
-    // Test sent form data.
-    httpActivity.request.body = [
-      "Content-Type:      application/x-www-form-urlencoded\n" +
-      "Content-Length: 59\n" +
-      "name=rob&age=20"
-    ].join("");
-
-    networkPanel = HUDService.openNetworkPanel(filterBox, httpActivity);
-    networkPanel.panel.addEventListener("load", function onLoad() {
-      networkPanel.panel.removeEventListener("load", onLoad, true);
-      testDriver.next();
-    }, true);
-    yield;
-
-    checkIsVisible(networkPanel, {
-      requestBody: false,
-      requestFormData: true,
-      requestCookie: true,
-      responseContainer: true,
-      responseBody: false,
-      responseNoBody: false,
-      responseImage: false,
-      responseImageCached: true
-    });
-
-    checkNodeKeyValue(networkPanel, "requestFormDataContent", "name", "rob");
-    checkNodeKeyValue(networkPanel, "requestFormDataContent", "age", "20");
-    networkPanel.panel.hidePopup();
-
-    // Test no space after Content-Type:
-    httpActivity.request.body = "Content-Type:application/x-www-form-urlencoded\n";
-
-    networkPanel = HUDService.openNetworkPanel(filterBox, httpActivity);
-    networkPanel.panel.addEventListener("load", function onLoad() {
-      networkPanel.panel.removeEventListener("load", onLoad, true);
-      testDriver.next();
-    }, true);
-    yield;
-
-    checkIsVisible(networkPanel, {
-      requestBody: false,
-      requestFormData: true,
-      requestCookie: true,
-      responseContainer: true,
-      responseBody: false,
-      responseNoBody: false,
-      responseImage: false,
-      responseImageCached: true
-    });
-
-    networkPanel.panel.hidePopup();
-
-    // Test cached data.
-
-    // Load a Latein-1 encoded page.
-    browser.addEventListener("load", function onLoad () {
-      browser.removeEventListener("load", onLoad, true);
-      httpActivity.charset = content.document.characterSet;
-      testDriver.next();
-    }, true);
-    content.location = TEST_ENCODING_ISO_8859_1;
-
-    yield;
-
-    httpActivity.url = TEST_ENCODING_ISO_8859_1;
-    httpActivity.response.header["Content-Type"] = "application/json";
-    httpActivity.response.body = "";
-
-    networkPanel = HUDService.openNetworkPanel(filterBox, httpActivity);
-    networkPanel.isDoneCallback = function NP_doneCallback() {
-      networkPanel.isDoneCallback = null;
-
-      checkIsVisible(networkPanel, {
-        requestBody: false,
-        requestFormData: true,
-        requestCookie: true,
-        responseContainer: true,
-        responseBody: false,
-        responseBodyCached: true,
-        responseNoBody: false,
-        responseImage: false,
-        responseImageCached: false
-      });
-
-      checkNodeContent(networkPanel, "responseBodyCachedContent", "<body>\u00fc\u00f6\u00E4</body>");
-      networkPanel.panel.hidePopup();
-
-      // Run the next test.
-      testErrorOnPageReload();
-    }
-    yield;
-  };
-
-  testDriver = testGen();
-  testDriver.next();
-}
-
 // test property provider
 function testPropertyProvider()
 {
   var HUD = HUDService.hudWeakReferences[hudId].get();
   var jsterm = HUD.jsterm;
   var context = jsterm.sandbox.window;
   var completion;
 
@@ -1170,17 +824,17 @@ function testPageReload() {
 
     is(typeof console, "object", "window.console is an object, after page reload");
     is(typeof console.log, "function", "console.log is a function");
     is(typeof console.info, "function", "console.info is a function");
     is(typeof console.warn, "function", "console.warn is a function");
     is(typeof console.error, "function", "console.error is a function");
     is(typeof console.exception, "function", "console.exception is a function");
 
-    testNetworkPanel();
+    testErrorOnPageReload();
   }, false);
 
   content.location.reload();
 }
 
 function testErrorOnPageReload() {
   // see bug 580030: the error handler fails silently after page reload.
   // https://bugzilla.mozilla.org/show_bug.cgi?id=580030
deleted file mode 100644
--- a/toolkit/components/console/hudservice/tests/browser/browser_webconsole_netlogging.js
+++ /dev/null
@@ -1,185 +0,0 @@
-/* vim:set ts=2 sw=2 sts=2 et: */
-/* ***** BEGIN LICENSE BLOCK *****
- * Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/
- *
- * Contributor(s):
- *  Julian Viereck <jviereck@mozilla.com>
- *
- * ***** END LICENSE BLOCK ***** */
-
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cu = Components.utils;
-
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-Cu.import("resource://gre/modules/HUDService.jsm");
-
-const TEST_NETWORK_REQUEST_URI = "http://example.com/browser/toolkit/components/console/hudservice/tests/browser/test-network-request.html";
-
-const TEST_IMG = "http://example.com/browser/toolkit/components/console/hudservice/tests/browser/test-image.png";
-
-const TEST_DATA_JSON_CONTENT =
-  '{ id: "test JSON data", myArray: [ "foo", "bar", "baz", "biff" ] }';
-
-var hud;
-var hudId;
-
-function testOpenWebConsole()
-{
-  HUDService.activateHUDForContext(gBrowser.selectedTab);
-  is(HUDService.displaysIndex().length, 1, "WebConsole was opened");
-
-  hudId = HUDService.displaysIndex()[0];
-  hud = HUDService.getHeadsUpDisplay(hudId);
-
-  testNetworkLogging();
-}
-
-function finishTest() {
-  hud = null;
-  hudId = null;
-
-  let tab = gBrowser.selectedTab;
-  HUDService.deactivateHUDForContext(tab);
-  executeSoon(function() {
-    gBrowser.removeCurrentTab();
-    finish();
-  });
-}
-
-function testNetworkLogging()
-{
-  var lastFinishedRequest = null;
-  HUDService.lastFinishedRequestCallback =
-    function requestDoneCallback(aHttpRequest)
-    {
-      lastFinishedRequest = aHttpRequest;
-    }
-
-  let browser = gBrowser.selectedBrowser;
-  let loggingGen;
-  // This generator function is used to step through the individual, async tests.
-  function loggingGeneratorFunc() {
-    browser.addEventListener("load", function onLoad () {
-      browser.removeEventListener("load", onLoad, true);
-      loggingGen.next();
-    }, true);
-    content.location = TEST_NETWORK_REQUEST_URI;
-    yield;
-
-    // Check if page load was logged correctly.
-    let httpActivity = lastFinishedRequest;
-    isnot(httpActivity, null, "Page load was logged");
-    is(httpActivity.url, TEST_NETWORK_REQUEST_URI,
-      "Logged network entry is page load");
-    is(httpActivity.method, "GET", "Method is correct");
-    is(httpActivity.request.body, undefined, "No request body sent");
-
-    // TODO: Figure out why the following test is failing on linux (bug 588533).
-    //
-    // If not linux, then run the test. On Linux it always fails.
-    if (navigator.platform.indexOf("Linux") != 0) {
-      ok(httpActivity.response.body.indexOf("<!DOCTYPE HTML>") == 0,
-        "Response body's beginning is okay");
-    }
-
-    // Start xhr-get test.
-    browser.contentWindow.wrappedJSObject.testXhrGet(loggingGen);
-    yield;
-
-    // Use executeSoon here as the xhr callback calls loggingGen.next() before
-    // the network observer detected that the request is completly done and the
-    // HUDService.lastFinishedRequest is set. executeSoon solves that problem.
-    executeSoon(function() {
-      // Check if xhr-get test was successful.
-      httpActivity = lastFinishedRequest;
-      isnot(httpActivity, null, "testXhrGet() was logged");
-      is(httpActivity.method, "GET", "Method is correct");
-      is(httpActivity.request.body, undefined, "No request body was sent");
-      is(httpActivity.response.body, TEST_DATA_JSON_CONTENT,
-        "Response is correct");
-      lastFinishedRequest = null;
-      loggingGen.next();
-    });
-    yield;
-
-    // Start xhr-post test.
-    browser.contentWindow.wrappedJSObject.testXhrPost(loggingGen);
-    yield;
-
-    executeSoon(function() {
-      // Check if xhr-post test was successful.
-      httpActivity = lastFinishedRequest;
-      isnot(httpActivity, null, "testXhrPost() was logged");
-      is(httpActivity.method, "POST", "Method is correct");
-      is(httpActivity.request.body, "Hello world!",
-        "Request body was logged");
-      is(httpActivity.response.body, TEST_DATA_JSON_CONTENT,
-        "Response is correct");
-      lastFinishedRequest = null
-      loggingGen.next();
-    });
-    yield;
-
-    // Start submit-form test. As the form is submitted, the page is loaded
-    // again. Bind to the DOMContentLoaded event to catch when this is done.
-    browser.addEventListener("load", function onLoad () {
-      browser.removeEventListener("load", onLoad, true);
-      loggingGen.next();
-    }, true);
-    browser.contentWindow.wrappedJSObject.testSubmitForm();
-    yield;
-
-    // Check if submitting the form was logged successful.
-    httpActivity = lastFinishedRequest;
-    isnot(httpActivity, null, "testSubmitForm() was logged");
-    is(httpActivity.method, "POST", "Method is correct");
-    isnot(httpActivity.request.body.indexOf(
-      "Content-Type: application/x-www-form-urlencoded"), -1,
-      "Content-Type is correct");
-    isnot(httpActivity.request.body.indexOf(
-      "Content-Length: 20"), -1, "Content-length is correct");
-    isnot(httpActivity.request.body.indexOf(
-      "name=foo+bar&age=144"), -1, "Form data is correct");
-    ok(httpActivity.response.body.indexOf("<!DOCTYPE HTML>") == 0,
-      "Response body's beginning is okay");
-
-    lastFinishedRequest = null
-
-    // Open the NetworkPanel. The functionality of the NetworkPanel is tested
-    // within the testNetworkPanel() function.
-    let filterBox = hud.querySelectorAll(".hud-filter-box")[0];
-    let networkPanel = HUDService.openNetworkPanel(filterBox, httpActivity);
-    is (networkPanel, httpActivity.panels[0].get(), "Network panel stored on httpActivity object");
-    networkPanel.panel.addEventListener("load", function onLoad() {
-      networkPanel.panel.removeEventListener("load", onLoad, true);
-
-      ok(true, "NetworkPanel was opened");
-      networkPanel.panel.hidePopup();
-
-      // All tests are done. Shutdown.
-      browser = null;
-      lastFinishedRequest = null;
-      HUDService.lastFinishedRequestCallback = null;
-
-      finishTest();
-    }, true);
-  }
-
-  loggingGen = loggingGeneratorFunc();
-  loggingGen.next();
-}
-
-function test()
-{
-  waitForExplicitFinish();
-  gBrowser.selectedTab = gBrowser.addTab();
-
-  gBrowser.selectedBrowser.addEventListener("load", function() {
-    gBrowser.selectedBrowser.removeEventListener("load", arguments.callee, true);
-    waitForFocus(testOpenWebConsole, content);
-  }, true);
-
-  content.location = "data:text/html,WebConsole network logging tests";
-}
--- a/toolkit/components/console/hudservice/tests/browser/test-data.json
+++ b/toolkit/components/console/hudservice/tests/browser/test-data.json
@@ -1,1 +1,1 @@
-{ id: "test JSON data", myArray: [ "foo", "bar", "baz", "biff" ] }
\ No newline at end of file
+{ id: "test JSON data", myArray: [ "foo", "bar", "baz", "biff" ] }
deleted file mode 100644
--- a/toolkit/components/console/hudservice/tests/browser/test-encoding-ISO-8859-1.html
+++ /dev/null
@@ -1,7 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
-  <meta charset="ISO-8859-1">
-</head>
-<body></body>
-</html>
\ No newline at end of file
deleted file mode 100644
--- a/toolkit/components/console/hudservice/tests/browser/test-network-request.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!DOCTYPE HTML>
-<html dir="ltr" xml:lang="en-US" lang="en-US"><head>
-    <title>Console HTTP test page</title>
-    <script type="text/javascript">
-      function makeXhr(aMethod, aUrl, aRequestBody, aTestGenerator) {
-        var xmlhttp = new XMLHttpRequest();
-        xmlhttp.open(aMethod, aUrl, true);
-        xmlhttp.onreadystatechange = function (aEvt) {
-          if (xmlhttp.readyState == 4) {
-            aTestGenerator.next();
-          }
-        };
-        xmlhttp.send(aRequestBody);
-      }
-
-      function testXhrGet(aTestGenerator) {
-        makeXhr('get', 'test-data.json', null, aTestGenerator);
-      }
-
-      function testXhrPost(aTestGenerator) {
-        makeXhr('post', 'test-data.json', "Hello world!", aTestGenerator);
-      }
-
-      function testSubmitForm() {
-        document.getElementsByTagName("form")[0].submit();
-      }
-    </script>
-  </head>
-  <body>
-    <h1>Heads Up Display HTTP Logging Testpage</h1>
-    <h2>This page is used to test the HTTP logging.</h2>
-
-    <form action="http://example.com/browser/toolkit/components/console/hudservice/tests/browser/test-network-request.html" method="post">
-      <input name="name" type="text" value="foo bar"><br>
-      <input name="age" type="text" value="144"><br>
-    </form>
-  </body>
-</html>
--- a/toolkit/components/console/jar.mn
+++ b/toolkit/components/console/jar.mn
@@ -1,6 +1,5 @@
 toolkit.jar:
 *+ content/global/console.js                            (content/console.js)
 *+ content/global/console.xul                           (content/console.xul)
-+  content/global/NetworkPanel.xhtml                    (hudservice/NetworkPanel.xhtml)
 +  content/global/console.css                           (content/console.css)
 +  content/global/consoleBindings.xml                   (content/consoleBindings.xml)
--- a/toolkit/locales/en-US/chrome/global/headsUpDisplay.properties
+++ b/toolkit/locales/en-US/chrome/global/headsUpDisplay.properties
@@ -58,44 +58,8 @@ jsPropertyTitle=Object Inspector
 # Example: The user executed `window.document` in the WebConsole. The `document`
 # object is written to the output. If the user clicks on the `document` output
 # in the console, a PropertyPanel will show up. The title of the PropertyPanel
 # is set to `Inspect: window.document` because the clicked `document` object was
 # evaluated based on the `window.document` string.
 jsPropertyInspectTitle=Inspect: %S
 copyCmd.label=Copy
 copyCmd.accesskey=C
-# LOCALIZATION NOTE (networkUrlWithStatus):
-#
-# When the HTTP request is started only the URL of the request is printed to the
-# WebConsole. As the response status of the HTTP request arrives, the URL string
-# is replaced by this string (the response status can look like `HTTP/1.1 200 OK`).
-# The bracket is not closed to mark that this request is not done by now. As the
-# request is finished (the HTTP connection is closed) this string is replaced
-# by `networkUrlWithStatusAndDuration` which has a closing the braket.
-#
-# %1$S = URL of network request
-# %2$S = response status code from the server (e.g. `HTTP/1.1 200 OK`)
-networkUrlWithStatus=%1$S [%2$S
-# LOCALIZATION NOTE (networkUrlWithStatusAndDuration):
-#
-# When the HTTP request is finished (the HTTP connection is closed) this string
-# replaces the former `networkUrlWithStatus` string in the WebConsole.
-#
-# %1$S = URL of network request
-# %2$S = response status code from the server (e.g. `HTTP/1.1 200 OK`)
-# %3$S = duration for the complete network request in milliseconds
-networkUrlWithStatusAndDuration=%1$S [%2$S %3$Sms]
-NetworkPanel.label=Inspect Network Request
-# LOCALIZATION NOTE (NetworkPanel.deltaDurationMS):
-#
-# This string is used to show the duration between two network events (e.g
-# request and respones header or response header and response body).
-NetworkPanel.durationMS=%Sms
-# LOCALIZATION NOTE (NetworkPanel.imageSizeDeltaDurationMS):
-# This string is used to show the duration between the response header and the
-# response body event. It also shows the size of the received or cached image.
-#
-# The first %S is replace by the width of the inspected image.
-# The second %S is replaced by the height of the inspected image.
-# The third %S is replaced by the duration between the response header and the
-# response body event.
-NetworkPanel.imageSizeDeltaDurationMS=%Sx%Spx, Δ%Sms
deleted file mode 100644
--- a/toolkit/locales/en-US/chrome/global/webConsole.dtd
+++ /dev/null
@@ -1,15 +0,0 @@
-<!ENTITY networkPanel.requestURL                  "Request URL">
-<!ENTITY networkPanel.requestMethod               "Request Method">
-<!ENTITY networkPanel.statusCode                  "Status Code">
-
-<!ENTITY networkPanel.requestHeaders              "Request Headers">
-<!ENTITY networkPanel.requestCookie               "Sent Cookie">
-<!ENTITY networkPanel.requestBody                 "Request Body">
-<!ENTITY networkPanel.requestFormData             "Sent Form Data">
-
-<!ENTITY networkPanel.responseHeaders             "Response Headers">
-<!ENTITY networkPanel.responseBody                "Response Body">
-<!ENTITY networkPanel.responseBodyCached          "Cached Data">
-<!ENTITY networkPanel.responseNoBody              "No Response Body">
-<!ENTITY networkPanel.responseImage               "Received Image">
-<!ENTITY networkPanel.responseImageCached         "Cached Image">
--- a/toolkit/locales/jar.mn
+++ b/toolkit/locales/jar.mn
@@ -32,17 +32,16 @@
   locale/@AB_CD@/global/filepicker.dtd                  (%chrome/global/filepicker.dtd)
   locale/@AB_CD@/global/filepicker.properties           (%chrome/global/filepicker.properties)
   locale/@AB_CD@/global/findbar.dtd                     (%chrome/global/findbar.dtd)
   locale/@AB_CD@/global/findbar.properties              (%chrome/global/findbar.properties)
 + locale/@AB_CD@/global/finddialog.dtd                  (%chrome/global/finddialog.dtd)
 + locale/@AB_CD@/global/finddialog.properties           (%chrome/global/finddialog.properties)
   locale/@AB_CD@/global/globalKeys.dtd                  (%chrome/global/globalKeys.dtd)
 + locale/@AB_CD@/global/headsUpDisplay.properties       (%chrome/global/headsUpDisplay.properties)
-+ locale/@AB_CD@/global/webConsole.dtd                  (%chrome/global/webConsole.dtd)
 + locale/@AB_CD@/global/intl.css                        (%chrome/global/intl.css)
 + locale/@AB_CD@/global/intl.properties                 (%chrome/global/intl.properties)
 + locale/@AB_CD@/global/keys.properties                 (%chrome/global/keys.properties)
 + locale/@AB_CD@/global/languageNames.properties        (%chrome/global/languageNames.properties)
   locale/@AB_CD@/global/mozilla.dtd                     (%chrome/global/mozilla.dtd)
   locale/@AB_CD@/global/notification.dtd                (%chrome/global/notification.dtd)
   locale/@AB_CD@/global/preferences.dtd                 (%chrome/global/preferences.dtd)
 + locale/@AB_CD@/global/printdialog.dtd                 (%chrome/global/printdialog.dtd)
--- a/toolkit/themes/gnomestripe/global/jar.mn
+++ b/toolkit/themes/gnomestripe/global/jar.mn
@@ -23,17 +23,16 @@ toolkit.jar:
 +  skin/classic/global/scrollbox.css
 +  skin/classic/global/splitter.css
 +  skin/classic/global/tabbox.css
 +  skin/classic/global/textbox.css
 +  skin/classic/global/toolbar.css
 +  skin/classic/global/toolbarbutton.css
 +  skin/classic/global/tree.css
 +  skin/classic/global/webConsole.css
-+  skin/classic/global/webConsole_networkPanel.css
 +  skin/classic/global/alerts/alert.css                        (alerts/alert.css)
 +  skin/classic/global/console/console.css                     (console/console.css)
 +  skin/classic/global/console/console.png                     (console/console.png)
 +  skin/classic/global/console/console-toolbar.png             (console/console-toolbar.png)
 +  skin/classic/global/dirListing/remote.png                   (dirListing/remote.png)
 +  skin/classic/global/icons/Authentication.png                (icons/Authentication.png)
 +  skin/classic/global/icons/autoscroll.png                    (icons/autoscroll.png)
 +  skin/classic/global/icons/blacklist_favicon.png             (icons/blacklist_favicon.png)
deleted file mode 100644
--- a/toolkit/themes/gnomestripe/global/webConsole_networkPanel.css
+++ /dev/null
@@ -1,108 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is DevTools code
- *
- * The Initial Developer of the Original Code is
- *   Mozilla Corporation
- * Portions created by the Initial Developer are Copyright (C) 2010
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *   Joe Walker <jwalker@mozilla.com>
- *   Julian Viereck <jviereck@mozilla.com>
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 2 or later (the "GPL"), or
- * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
-body {
-  font-family: Lucida Grande, sans-serif;
-  font-size: 11px;
-  background: #EEE;
-}
-
-div#header {
-  padding: 5px;
-  overflow-x:auto;
-}
-
-h1 {
-  font-size: 13px;
-  padding: 2px 10px;
-  margin: 0px;
-  background: -moz-linear-gradient(top, #BBB, #999);
-  -moz-border-radius: 2px;
-  text-shadow: #FFF 0px 1px 0px;
-}
-
-h1 .info {
-  font-size: 11px;
-  float: right;
-  color: #333;
-  padding-right: 3px;
-}
-
-div.property-header {
-  padding: 2px 5px;
-  background: -moz-linear-gradient(top, #FFF, #F8F8F8);
-  color: #333;
-  max-height: 330px;
-  overflow-y: auto;
-  overflow-x: auto;
-  white-space: pre-wrap;
-}
-
-span.property-name {
-  font-size: 11px;
-  font-weight: bold;
-  padding-right: 4px;
-  color: #000;
-}
-
-span.property-value {
-  padding-right: 5px;
-  font-size: 11px;
-}
-
-div.group {
-  margin-top: 10px;
-}
-
-div.group, div#header {
-  background: #FFF;
-  border-color: #E1E1E1;
-  border-style: solid;
-  border-width: 1px;
-  -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
-  -moz-border-radius: 4px 4px 4px 4px;
-}
-
-img#responseImageNode {
-  -moz-box-shadow: rgba(0,0,0,0.2) 0px 3px 5px;
-  max-width: 100%;
-}
-
-#responseImageNodeDiv {
-  padding: 5px;
-}
--- a/toolkit/themes/pinstripe/global/jar.mn
+++ b/toolkit/themes/pinstripe/global/jar.mn
@@ -45,17 +45,16 @@ toolkit.jar:
   skin/classic/global/tabbox.css
   skin/classic/global/textbox.css
   skin/classic/global/datetimepicker.css
   skin/classic/global/toolbar.css
   skin/classic/global/toolbarbutton.css
   skin/classic/global/tree.css
 * skin/classic/global/viewbuttons.css
 * skin/classic/global/webConsole.css
-* skin/classic/global/webConsole_networkPanel.css
   skin/classic/global/wizard.css
   skin/classic/global/arrow/arrow-dn-dis.gif                         (arrow/arrow-dn-dis.gif)
   skin/classic/global/arrow/arrow-dn-dis.png                         (arrow/arrow-dn-dis.png)
   skin/classic/global/arrow/arrow-dn-sharp.gif                       (arrow/arrow-dn-sharp.gif)
   skin/classic/global/arrow/arrow-dn.gif                             (arrow/arrow-dn.gif)
   skin/classic/global/arrow/arrow-dn.png                             (arrow/arrow-dn.png)
   skin/classic/global/arrow/arrow-lft-dis.gif                        (arrow/arrow-lft-dis.gif)
   skin/classic/global/arrow/arrow-lft-hov.gif                        (arrow/arrow-lft-hov.gif)
deleted file mode 100644
--- a/toolkit/themes/pinstripe/global/webConsole_networkPanel.css
+++ /dev/null
@@ -1,108 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is DevTools code
- *
- * The Initial Developer of the Original Code is
- *   Mozilla Corporation
- * Portions created by the Initial Developer are Copyright (C) 2010
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *   Joe Walker <jwalker@mozilla.com>
- *   Julian Viereck <jviereck@mozilla.com>
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 2 or later (the "GPL"), or
- * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
-body {
-  font-family: Lucida Grande, sans-serif;
-  font-size: 11px;
-  background: #EEE;
-}
-
-div#header {
-  padding: 5px;
-  overflow-x:auto;
-}
-
-h1 {
-  font-size: 13px;
-  padding: 2px 10px;
-  margin: 0px;
-  background: -moz-linear-gradient(top, #BBB, #999);
-  -moz-border-radius: 2px;
-  text-shadow: #FFF 0px 1px 0px;
-}
-
-h1 .info {
-  font-size: 11px;
-  float: right;
-  color: #333;
-  padding-right: 3px;
-}
-
-div.property-header {
-  padding: 2px 5px;
-  background: -moz-linear-gradient(top, #FFF, #F8F8F8);
-  color: #333;
-  max-height: 330px;
-  overflow-y: auto;
-  overflow-x: auto;
-  white-space: pre-wrap;
-}
-
-span.property-name {
-  font-size: 11px;
-  font-weight: bold;
-  padding-right: 4px;
-  color: #000;
-}
-
-span.property-value {
-  padding-right: 5px;
-  font-size: 11px;
-}
-
-div.group {
-  margin-top: 10px;
-}
-
-div.group, div#header {
-  background: #FFF;
-  border-color: #E1E1E1;
-  border-style: solid;
-  border-width: 1px;
-  -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
-  -moz-border-radius: 4px 4px 4px 4px;
-}
-
-img#responseImageNode {
-  -moz-box-shadow: rgba(0,0,0,0.2) 0px 3px 5px;
-  max-width: 100%;
-}
-
-#responseImageNodeDiv {
-  padding: 5px;
-}
--- a/toolkit/themes/winstripe/global/jar.mn
+++ b/toolkit/themes/winstripe/global/jar.mn
@@ -49,17 +49,16 @@ toolkit.jar:
         skin/classic/global/spinbuttons.css
         skin/classic/global/splitter.css
         skin/classic/global/tabbox.css
         skin/classic/global/textbox.css
 *       skin/classic/global/toolbar.css
         skin/classic/global/toolbarbutton.css
         skin/classic/global/tree.css
 *       skin/classic/global/webConsole.css
-*       skin/classic/global/webConsole_networkPanel.css
         skin/classic/global/wizard.css
         skin/classic/global/alerts/alert.css                     (alerts/alert.css)
         skin/classic/global/arrow/arrow-dn.gif                   (arrow/arrow-dn.gif)
         skin/classic/global/arrow/arrow-dn-dis.gif               (arrow/arrow-dn-dis.gif)
         skin/classic/global/arrow/arrow-dn-hov.gif               (arrow/arrow-dn-hov.gif)
         skin/classic/global/arrow/arrow-dn-sharp.gif             (arrow/arrow-dn-sharp.gif)
         skin/classic/global/arrow/arrow-down.png                 (arrow/arrow-down.png)
         skin/classic/global/arrow/arrow-lft.gif                  (arrow/arrow-lft.gif)
@@ -218,17 +217,16 @@ toolkit.jar:
         skin/classic/aero/global/spinbuttons.css
         skin/classic/aero/global/splitter.css
         skin/classic/aero/global/tabbox.css
 *       skin/classic/aero/global/textbox.css                             (textbox-aero.css)
 *       skin/classic/aero/global/toolbar.css
 *       skin/classic/aero/global/toolbarbutton.css                       (toolbarbutton-aero.css)
 *       skin/classic/aero/global/tree.css                                (tree-aero.css)
 *       skin/classic/aero/global/webConsole.css
-*       skin/classic/global/webConsole_networkPanel.css
         skin/classic/aero/global/wizard.css
         skin/classic/aero/global/alerts/alert.css                        (alerts/alert.css)
         skin/classic/aero/global/arrow/arrow-dn.gif                      (arrow/arrow-dn.gif)
         skin/classic/aero/global/arrow/arrow-dn-dis.gif                  (arrow/arrow-dn-dis.gif)
         skin/classic/aero/global/arrow/arrow-dn-hov.gif                  (arrow/arrow-dn-hov.gif)
         skin/classic/aero/global/arrow/arrow-dn-sharp.gif                (arrow/arrow-dn-sharp.gif)
         skin/classic/aero/global/arrow/arrow-down.png                    (arrow/arrow-down.png)
         skin/classic/aero/global/arrow/arrow-lft.gif                     (arrow/arrow-lft.gif)
deleted file mode 100644
--- a/toolkit/themes/winstripe/global/webConsole_networkPanel.css
+++ /dev/null
@@ -1,108 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is DevTools code
- *
- * The Initial Developer of the Original Code is
- *   Mozilla Corporation
- * Portions created by the Initial Developer are Copyright (C) 2010
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *   Joe Walker <jwalker@mozilla.com>
- *   Julian Viereck <jviereck@mozilla.com>
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 2 or later (the "GPL"), or
- * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
-body {
-  font-family: Lucida Grande, sans-serif;
-  font-size: 11px;
-  background: #EEE;
-}
-
-div#header {
-  padding: 5px;
-  overflow-x:auto;
-}
-
-h1 {
-  font-size: 13px;
-  padding: 2px 10px;
-  margin: 0px;
-  background: -moz-linear-gradient(top, #BBB, #999);
-  -moz-border-radius: 2px;
-  text-shadow: #FFF 0px 1px 0px;
-}
-
-h1 .info {
-  font-size: 11px;
-  float: right;
-  color: #333;
-  padding-right: 3px;
-}
-
-div.property-header {
-  padding: 2px 5px;
-  background: -moz-linear-gradient(top, #FFF, #F8F8F8);
-  color: #333;
-  max-height: 330px;
-  overflow-y: auto;
-  overflow-x: auto;
-  white-space: pre-wrap;
-}
-
-span.property-name {
-  font-size: 11px;
-  font-weight: bold;
-  padding-right: 4px;
-  color: #000;
-}
-
-span.property-value {
-  padding-right: 5px;
-  font-size: 11px;
-}
-
-div.group {
-  margin-top: 10px;
-}
-
-div.group, div#header {
-  background: #FFF;
-  border-color: #E1E1E1;
-  border-style: solid;
-  border-width: 1px;
-  -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
-  -moz-border-radius: 4px 4px 4px 4px;
-}
-
-img#responseImageNode {
-  -moz-box-shadow: rgba(0,0,0,0.2) 0px 3px 5px;
-  max-width: 100%;
-}
-
-#responseImageNodeDiv {
-  padding: 5px;
-}