Index: services/service_manager/README.md |
diff --git a/services/service_manager/README.md b/services/service_manager/README.md |
index 40d3209f7df6a351908a92bc60467e31e26133b8..bd2f227ccffb21be8de3d3f31aafeb03e87d4822 100644 |
--- a/services/service_manager/README.md |
+++ b/services/service_manager/README.md |
@@ -61,14 +61,14 @@ used to allow multiple instances of a service to exist for the same Name,UserId |
pair. In Chrome an example of this would be multiple instances of the renderer |
or the same profile. |
-A Service implements the Mojo interface shell.mojom.Service, which is the |
+A Service implements the Mojo interface service_manager.mojom.Service, which is the |
primary means the Service Manager has of communicating with its service. Service |
has two methods: OnStart(), called once at when the Service Manager first learns |
about the service, and OnConnect(), which the Service Manager calls every time |
some other service tries to connect to this one. |
Services have a link back to the Service Manager too, primarily in the form of |
-the shell.mojom.Connector interface. The Connector allows services to open |
+the service_manager.mojom.Connector interface. The Connector allows services to open |
connections to other services. |
A unique connection from the Service Manager to a service is called an |
@@ -96,21 +96,21 @@ Consider this simple application that implements the Service interface: |
#include "services/service_manager/public/cpp/identity.h" |
#include "services/service_manager/public/cpp/service.h" |
- class Service : public shell::Service { |
+ class Service : public service_manager::Service { |
public: |
Service() {} |
~Service() override {} |
- // Overridden from shell::Service: |
- void OnStart(const shell::Identity& identity) override { |
+ // Overridden from service_manager::Service: |
+ void OnStart(const service_manager::Identity& identity) override { |
} |
- bool OnConnect(shell::Connection* connection) override { |
+ bool OnConnect(service_manager::Connection* connection) override { |
return true; |
} |
}; |
MojoResult ServiceMain(MojoHandle service_request_handle) { |
- return shell::ServiceRunner(new Service).Run(service_request_handle); |
+ return service_manager::ServiceRunner(new Service).Run(service_request_handle); |
} |
app_manifest.json: |
@@ -128,7 +128,7 @@ Consider this simple application that implements the Service interface: |
service("app") { |
sources = [ "app.cc" ] |
- deps = [ "//base", "//mojo/shell/public/cpp" ] |
+ deps = [ "//base", "//services/service_manager/public/cpp" ] |
data_deps = [ ":manifest" ] |
} |
@@ -150,18 +150,18 @@ important as we begin to do more in our service. |
##### OnStart Parameters |
-###### const shell::Identity& identity |
+###### const service_manager::Identity& identity |
This is the identity this service is known to the Service Manager as. It |
includes the services Name, User ID and Instance Name. |
##### OnConnect Parameters |
-###### shell::Connection* connection |
+###### service_manager::Connection* connection |
This is a pointer to an object that encapsulates the connection with a remote |
service. The service uses this object to learn about the service at the remote |
end, to bind interfaces from it, and to expose interfaces to it. The |
Connection concept is implemented under the hood by a pair of |
-shell.mojom.InterfaceProviders - this is the physical link between the service |
+service_manager.mojom.InterfaceProviders - this is the physical link between the service |
that give the Connection its utility. The Connection object is owned by the |
caller of OnConnect, and will outlive the underlying pipes. |
@@ -178,8 +178,8 @@ it. This will lay the groundwork to understanding how to export an interface. |
Once we have a Connector, we can connect to other services and bind interfaces |
from them. In the trivial app above we can do this directly in OnStart: |
- void OnStart(const shell::Identity& identity) override { |
- scoped_ptr<shell::Connection> connection = |
+ void OnStart(const service_manager::Identity& identity) override { |
+ scoped_ptr<service_manager::Connection> connection = |
connector()->Connect("mojo:service"); |
mojom::SomeInterfacePtr some_interface; |
connection->GetInterface(&some_interface); |
@@ -192,7 +192,7 @@ exported by another Mojo client identified by the name mojo:service. |
What is happening here? Lets look line-by-line |
- scoped_ptr<shell::Connection> connection = |
+ scoped_ptr<service_manager::Connection> connection = |
connector->Connect("mojo:service"); |
This asks the Service Manager to open a connection to the service named |
@@ -254,20 +254,20 @@ implements it. Lets look at a snippet of a class that does all of this: |
**service.cc:** |
- class Service : public shell::Service, |
- public shell::InterfaceFactory<mojom::SomeInterface>, |
+ class Service : public service_manager::Service, |
+ public service_manager::InterfaceFactory<mojom::SomeInterface>, |
public mojom::SomeInterface { |
public: |
.. |
- // Overridden from shell::Service: |
- bool OnConnect(shell::Connection* connection) override { |
+ // Overridden from service_manager::Service: |
+ bool OnConnect(service_manager::Connection* connection) override { |
connection->AddInterface<mojom::SomeInterface>(this); |
return true; |
} |
- // Overridden from shell::InterfaceFactory<mojom::SomeInterface>: |
- void Create(shell::Connection* connection, |
+ // Overridden from service_manager::InterfaceFactory<mojom::SomeInterface>: |
+ void Create(service_manager::Connection* connection, |
mojom::SomeInterfaceRequest request) override { |
bindings_.AddBinding(this, std::move(request)); |
} |
@@ -410,21 +410,21 @@ Connecting services like mojo:app just need to state that interface.) |
Now that weve built a simple application and service, its time to write a test |
for them. The Shell client library provides a gtest base class |
-**shell::test::ServiceTest** that makes writing integration tests of services |
+**service_manager::test::ServiceTest** that makes writing integration tests of services |
straightforward. Lets look at a simple test of our service: |
#include "base/bind.h" |
#include "base/run_loop.h" |
- #include "mojo/shell/public/cpp/service_test.h" |
+ #include "services/service_manager/public/cpp/service_test.h" |
#include "path/to/some_interface.mojom.h" |
void QuitLoop(base::RunLoop* loop) { |
loop->Quit(); |
} |
- class Test : public shell::test::ServiceTest { |
+ class Test : public service_manager::test::ServiceTest { |
public: |
- Test() : shell::test::ServiceTest(exe:service_unittest) {} |
+ Test() : service_manager::test::ServiceTest(exe:service_unittest) {} |
~Test() override {} |
} |
@@ -437,7 +437,8 @@ straightforward. Lets look at a simple test of our service: |
} |
The BUILD.gn for this test file looks like any other using the test() template. |
-It must also depend on //services/service_manager/public/cpp:shell_test_support. |
+It must also depend on |
+//services/service_manager/public/cpp:service_test_support. |
ServiceTest does a few things, but most importantly it register the test itself |
as a Service, with the name you pass it via its constructor. In the example |
@@ -465,7 +466,7 @@ Service Managers own suite of tests, under //services/service_manager/tests. |
By default a .library statically links its dependencies, so having many of them |
will yield an installed product many times larger than Chrome today. For this |
reason its desirable to package several Services together in a single binary. |
-The Service Manager provides an interface **shell.mojom.ServiceFactory**: |
+The Service Manager provides an interface **service_manager.mojom.ServiceFactory**: |
interface ServiceFactory { |
CreateService(Service& service, string name); |
@@ -479,11 +480,11 @@ mojo:service1 and mojo:service2, and then a Service implementation for |
mojo:services - the latter implements ServiceFactory and instantiates the other |
two: |
- using shell::mojom::ServiceFactory; |
- using shell::mojom::ServiceRequest; |
+ using service_manager::mojom::ServiceFactory; |
+ using service_manager::mojom::ServiceRequest; |
- class Services : public shell::Service, |
- public shell::InterfaceFactory<ServiceFactory>, |
+ class Services : public service_manager::Service, |
+ public service_manager::InterfaceFactory<ServiceFactory>, |
public ServiceFactory { |
// Expose ServiceFactory to inbound connections and implement |
@@ -540,7 +541,7 @@ can study the resulting manifest to see what gets generated. |
At startup, the Service Manager will scan the package directory and consume the |
manifests it finds, so it can learn about how to resolve aliases that it might |
-encounter subsequently. |
+encounter subsequently. |
### Executables |
@@ -561,16 +562,16 @@ connection with the Service Manager: |
#include "services/service_manager/public/cpp/service_context.h" |
#include "services/service_manager/runner/child/runner_connection.h" |
- class MyClient : public shell::Service { |
+ class MyClient : public service_manager::Service { |
.. |
}; |
- shell::mojom::ServiceRequest request; |
- scoped_ptr<shell::RunnerConnection> connection( |
- shell::RunnerConnection::ConnectToRunner( |
+ service_manager::mojom::ServiceRequest request; |
+ scoped_ptr<service_manager::RunnerConnection> connection( |
+ service_manager::RunnerConnection::ConnectToRunner( |
&request, ScopedMessagePipeHandle())); |
MyService service; |
- shell::ServiceContext context(&service, std::move(request)); |
+ service_manager::ServiceContext context(&service, std::move(request)); |
Whats happening here? The Service/ServiceContext usage should be familiar from |
our earlier examples. The interesting part here happens in |
@@ -615,23 +616,23 @@ referred to as the driver) works like this: |
pair.PrepareToPassClientHandleToChildProcess(&target_command_line, &info); |
std::string token = mojo::edk::GenerateRandomToken(); |
- target_command_line.AppendSwitchASCII(switches::kPrimordialPipeToken, |
+ target_command_line.AppendSwitchASCII(switches::kPrimordialPipeToken, |
token); |
mojo::ScopedMessagePipeHandle pipe = |
mojo::edk::CreateParentMessagePipe(token); |
- shell::mojom::ServiceFactoryPtr factory; |
+ service_manager::mojom::ServiceFactoryPtr factory; |
factory.Bind( |
- mojo::InterfacePtrInfo<shell::mojom::ServiceFactory>( |
+ mojo::InterfacePtrInfo<service_manager::mojom::ServiceFactory>( |
std::move(pipe), 0u)); |
- shell::mojom::PIDReceiverPtr receiver; |
+ service_manager::mojom::PIDReceiverPtr receiver; |
- shell::Identity target("exe:target",shell::mojom::kInheritUserID); |
- shell::Connector::ConnectParams params(target); |
- params.set_client_process_connection(std::move(factory), |
+ service_manager::Identity target("exe:target",service_manager::mojom::kInheritUserID); |
+ service_manager::Connector::ConnectParams params(target); |
+ params.set_client_process_connection(std::move(factory), |
GetProxy(&receiver)); |
- scoped_ptr<shell::Connection> connection = connector->Connect(¶ms); |
+ scoped_ptr<service_manager::Connection> connection = connector->Connect(¶ms); |
base::LaunchOptions options; |
options.handles_to_inherit = &info; |
@@ -649,11 +650,11 @@ the target process and passing both through Connector::Connect(). |
In this example the target executable could be the same as the previous example. |
-A word about process lifetimes. Processes created by the shell are managed by |
-the Service Manager. While a service-launched process may quit itself at any |
-point, when the Service Manager shuts down it will also shut down any process it |
-started. Processes created by services themselves are left to those services to |
-manage. |
+A word about process lifetimes. Processes created by the Service Manager are |
+also managed by the Service Manager. While a service-launched process may quit |
+itself at any point, when the Service Manager shuts down it will also shut down |
+any process it started. Processes created by services themselves are left to |
+those services to manage. |
*** |