Embed Service Manager in //ios/web
This CL adds an embedding of the Service Manager in //ios/web, such that
it is now possible to host and connect to services in //ios/{web, chrome}.
The infrastructure is based on that for //content but simplified and
adapted to the context of //ios, where:
- Multiprocess does not exist.
- Connection filters are not relevant, as Chrome IPC is not relevant.
- There is no short-term plan to migrate to using ServiceManager's main
function.
Concretely, this CL does the following things:
(1) Adds ServiceManagerConnection as an //ios/web public interface. This
is the gateway for connecting to services from //ios.
(2) Adds ServiceManagerContext, which embeds an in-process ServiceManager.
(3) Adds ServiceManagerConnectionImpl, which gets a connection to the
ServiceManager.
(4) Adds the ability for //ios/web and its clients to register global
services.
(5) Adds an Earl Grey test in //ios/web/shell that hosts the echo service
and tests the ability to connect to that service. This test also serves
as an example usage of the infrastructure added in this CL.
(6) Adds shell grit resources in order to allow the shell to package
overlays of service manifests.
Support for per-user services will be added in a followup CL.
NOTE: This is an unchanged reland of the initial CL; in the meantime,
I've landed CLs that bundle web resources in all //ios/web embedders,
ensuring that the addition of this CL doesn't cause those embedders to
crash.
[email protected]
Bug: 731588
Change-Id: Ie3c69fbce710c3ef0683297cd5d073228a49c9c9
Reviewed-on: https://chromium-review.googlesource.com/558977
Reviewed-by: Colin Blundell <[email protected]>
Commit-Queue: Colin Blundell <[email protected]>
Cr-Commit-Position: refs/heads/master@{#484073}
34 files changed