blob: 32fc82030a70eb4bff6470a500af5f3d43340eb6 [file] [view]
Chrome Platform Services
====
### Overview
This directory contains Chrome Platform Services. If you think of Chrome as a
"portable OS," Chrome Platform Services can be thought of as that OS' "system
services".
Roughly each subdirectory here corresponds to a service that:
* is a client of `//services/shell` with its own unique Identity.
* could logically run a standalone process for security/performance isolation
benefits depending on the constraints of the host OS.
### Service Directory Structure
Individual services are structured like so:
//services/foo/ <-- Implementation code, may have subdirs.
/public/
/cpp/ <-- C++ client libraries (optional)
/interfaces/ <-- Mojom interfaces
### Dependencies
Code within `//services` may only depend on each other via each other's
`/public/` directories, i.e. implementation code cannot be shared directly.
Service code should also take care to tightly limit the dependencies on static
libraries from outside of `//services`. Dependencies to large platform
layers like `//content`, `//chrome` or `//third_party/WebKit` must be avoided.
### Physical Packaging
Note that while it may be possible to build a discrete physical package (DSO)
for each service, products consuming these services may package them
differently, e.g. by combining them into a single package.