Net Panel Architecture Review

From FirebugWiki
Revision as of 10:50, 12 July 2011 by Honza (Talk | contribs) (Modules)

Jump to: navigation, search



  • HTTP Activity Observer Used to observer detailed HTTP traffic. Provides precise timing information about executed HTTP requests and post information to Net Progress context object.
  • HTTP Observer Used to observer HTTP following events http-on-modify-request, http-on-examine-response and http-on-examine-cached-response. Use mainly for catching also events coming from BFCache that are not observed by HTTP Activity Observer. Also posts information to Net Progress object.
  • Net Progress Context object responsible for collecting and processing all HTTP traffic information related to specific page/tab. All network events are stored in an Input Queue in case the Net panel (UI) is not selected (enabled but not selected) and so, it isn't necessary to do any rendering (need to be fixed in Firebug). This strategy safes CPU cycles since the entire processing is done as soon as the panel is actually selected by the user. In case when the Net panel (or any other UI) is selected all incoming events are processed and gathered information collected in set of objects that represent individual requests. These objects are consequently put into the Output Queue. Note that there can be many network events related to one request (e.g.: connecting, sending, waiting, receiving, receiving, etc.. Part of the processing task is to collect these events and put all information into the corresponding request related object.
  • Context This object is used by Firebug to collect all meta-data about specific page. Net Progress object is part of it (shares the same life-cycle).
  • Net Panel This object is responsible for reading Output Queue from the Net Progress object and generate UI. This is done upon a fixed timeout (300ms) so, heavy traffic doesn't generate to many unnecessary UI layout changes. The output queue consist from object that represents individual HTTP requests an so, presence of an object in the queue ensures update of the corresponding entry existing or just generated in the panel. Part of the update process is also generation of a Waterfall graph (aka Timeline).
  • UI Templates Set of Domplate based templates used by the Net panel to generate the entire panel UI (HTML/CSS).
  • Net Monitor Represents a module that is associated with Net Panel. There is one instance of this object per browser window. Note that there is one instance of Net Panel per page/tab. This object manage attaching/detaching of HTTP observers. Observers are attached only if there is at least one Net Panel that wants to actually display HTTP network traffic.
  • Client/Server Experimental separation of the diagram as preparation for Firebug remoting. It needs to be prototyped yet (the Net Progress should be partially cached on the server side and flushed on timeout in order to safe the HTTP traffic overhead).


  • firebug/net/httpActivityObserver HTTP Activity Observer (based on nsIActivityDistributor)
  • firebug/net/requestObserver Generic HTTP Observer (based on nsIObserver)
  • firebug/net/netProgress Net Progress
  • firebug/net/netPanel Net Panel
  • firebug/net/netReps UI Templates
  • firebug/net/netMonitor Net Monitor
  • firebug/net/httpLib HTTP related API shared across modules.
  • firebug/net/netUtils Utility functions (should be part of firebug/net/httpLib
  • firebug/net/responseObserver HTTP response body tracking (based on nsITraceableChannel)
  • firebug/net/netDebugger Support for XHR breakpoints.