Confirmed users
673
edits
Line 4: | Line 4: | ||
== Debug Protocol == | == Debug Protocol == | ||
=== Introduction === | |||
The Remote Debugging Protocol is currently under development, as part | |||
of the Script Debugger. The debug protocol exposes a tree of named | |||
Actors, which communicate with the client using JSON packets. | |||
Debugger clients connect to a protocol implementation running in the | |||
chrome process (the client currently under development also runs in | |||
the chrome process). The client then asks the root actor running in | |||
this process for a list of actors for the currently open tabs, and | |||
then sends an "attach" request to the chrome-process protocol actor | |||
for the tab it's interested in. | |||
When the attached tab is running in a content process, the | |||
chrome-process actor will request a connection to the content's | |||
protocol implementation (which may require starting one up) over the | |||
messageManager and get a reference to a content-side tab actor for the | |||
given tab. | |||
Actor IDs will be prefixed with a unique identifier for each content | |||
process. The chrome process's protocol server will handle requests | |||
intended for chrome-process actors, and will dispatch requests to | |||
content actors over the connection to the content process. | |||
The chrome-side tab actor will exist before it is attached, and before | |||
we've connected to a protocol implementation on the content side. | |||
After attaching, that actor will need to manually forward requests to | |||
the content-side actor for the tab. | |||
=== Planning === | |||
==== Further Analysis ==== | |||
* Get the remote debugging protocol server running in content | |||
processes, and listing tabs hosted in that process. Should be able | |||
to manually connect a debugger to a specific content process (over | |||
TCP) and debug that without involvement from the chrome process. | |||
* Figure out and build the transport layer between the chrome and | |||
content protocol implementations (IPDL?). | |||
== Implementation == | |||
* Get tab attach to work over the chrome/content boundary. | |||
* Get cross-navigation debugging to work correctly when the new | |||
location is hosted in a new content process (in the meantime we will | |||
treat that as a tab close). | |||
== Web Console == | == Web Console == |