Net Panel Architecture Review
- 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-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 and so, it isn't necessary to do any rendering (need to be fixed in Firebug). This strategy safes CPU cycles. In case when the Net panel (or any other UI) is active all incoming events are processed and gathered information collected in set of objects that represent individual requests. 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. The output queue consist from object that represents individual HTTP requests. Presence of an object in the output queue ensures updating of the corresponding entry 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.