This CL simplifies the sky_server to only map the build directory into /gen,
which will make the deploy script simpler. This CL updates all the imports to
use the /gen prefix when referring to generated files.
TBR=eseidel@chromium.org
Review URL: https://codereview.chromium.org/881093003
Instead of mojo.Shell and mojo.Application being clients of each other
they are now separate interfaces. An implementation of mojo.Application
receives a handle to the shell in its Initialize call, as described in
this doc:
https://docs.google.com/document/d/1xjt_TPjTu0elix8fNdBgWmnjJdJAtqSr1XDS_C-Ct8E/edit?usp=sharing
An analogous change is made to the content handler definition.
In C++, this is handled by the mojo::ApplicationImpl class which stores
shell handle in its implementation of Initialize. Thus the only change
for most C++ applications is the meaning of the handle in MojoMain is
different, although mains that use the ApplicationRunners do the same
thing with it. Connecting to other apps is largely the same although
instead of grabbing the ApplicationImpl's client() to talk to the shell
code must now use the ApplicationImpl::shell() getter.
In JavaScript, the initialization sequence is a bit different although
this is hidden mostly in the Application class which calls initialize()
on its subclass with the same set of parameters. Connecting to another
application looks different, especially for sky code using the shell
proxy handle exposed via internals. Hans has some ideas about how to
make this a bit nicer.
Python apps similarly need to change their startup sequence a bit. I
didn't find a common library to take care of this dance, although it's
possible I just missed it.
Other languages probably a bit of reworking - I fixed everything here
that is covered by mojob.py test but some might be missing.
This patch also uses typed handles (i.e. InterfacePtr<> or
InterfaceRequest<> or their type aliases) wherever possible instead of
ScopedMessagePipeHandle for clarity.
R=davemoore@chromium.org
Review URL: https://codereview.chromium.org/868463008
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