This removes the client relationship between the sky::InspectorFrontend
and sky::InspectorBackend mojo interfaces. Instead, the two are now
unrelated (in the mojom) and just happen to be often used together.
The inspector service provides the InspectorFrontend interface to
connecting applications and optimistically tries to connect to the
InspectorBackend interface of applications that connect, in case they
want to receive messages. The front and back end interfaces are both
broadcast APIs, so no attempt is made to keep track of which binding
is which. If they did need to be correlated this could be easily
accomplished by allocating a new object to keep a
mojo::Binding<sky::InspectorFrontend> and the corresponding
sky::InspectorBackendPtr.
R=abarth@chromium.org, eseidel@chromium.org
Review URL: https://codereview.chromium.org/835463003
Now when debugger is paused scope sections are properly populated with corresponding name:value pairs for all variables.
Eventually InjectedScript may become something like a regular Sky module but at the moment I don't see how to do this gracefully given that it is parametrised by InjectedScriptHost binding. So at the moment I just store it in "injectedScript" property on the global object,
BUG=435243
R=abarth@chromium.org
Review URL: https://codereview.chromium.org/766683005
Unfortunately we don't yet have a way to walk into
imports, so this only is the first-level of the
source tree, but this is a huge step forward.
You can now click to set breakpoints, however
setting breakpoints crashes sky.
I had to fix Console.log to flush stdout
so that I could actually debug my timing-out test.
Also had to fix Chai to dump differences for deepEqual.
R=esprehn@chromium.org, abarth@chromium.org, esprhen@chromium.org
Review URL: https://codereview.chromium.org/732413004
The debugger can now correctly break on exceptions
and show the corresponding line in the inspector.
It correctly understands which scripts are internal
to sky and does not pause during them.
There is still a ton to make work here
(including stacktraces which I have not tested),
but basic functionality seems to work.
The current implementation is not smart enough to
unpause the inspector when the frontend disconnects.
BUG=434510,434513
R=abarth@chromium.org
Review URL: https://codereview.chromium.org/727593004
This will make it possible to connect a c++
inspector backend in addition to the JS one.
We lose the feature of running multiple inspector
servers in this patch, but we weren't using that feature
and could easily add it back if we plan to use it.
This patch has a *ton* of boilerplate code due
to crbug.com/431911, hopefully that will be fixed
soon and we can delete all the Impl nonsense.
R=abarth@chromium.org
Review URL: https://codereview.chromium.org/710043004
I think longer-term we want to instead fork
InjectedScriptSource.js:
http://blink.lc/blink/tree/Source/core/inspector/InjectedScriptSource.js
since a ton of the "remote object" logic could be shared
between Blink and Sky here.
Since we're trying to talk exactly Chrome's inspector
protocol we should start from the Blink JS as much as possible.
That said, this is enough to get the Chrome devtools
inspector to talk to sky and have the console handle
basic commands!
R=abarth@chromium.org
Review URL: https://codereview.chromium.org/674823003