Index: services/service_manager/public/interfaces/service.mojom |
diff --git a/services/service_manager/public/interfaces/service.mojom b/services/service_manager/public/interfaces/service.mojom |
index a0f14f46a38d42f8d53d4efb2acebf1a68d1892f..f4109ba4511fd59429c0d783615fdf9e0e580e72 100644 |
--- a/services/service_manager/public/interfaces/service.mojom |
+++ b/services/service_manager/public/interfaces/service.mojom |
@@ -9,13 +9,15 @@ import "services/service_manager/public/interfaces/interface_provider.mojom"; |
import "services/service_manager/public/interfaces/interface_provider_spec.mojom"; |
import "services/service_manager/public/interfaces/service_control.mojom"; |
-// Metadata describing an instance of a service. |
-struct ServiceInfo { |
+// Metadata describing an instance of a service that originated a call to |
+// BindInterface(). |
+struct BindSourceInfo { |
// The service's identity. |
Identity identity; |
- // The service's interface provider specs, from its manifest. |
- map<string, InterfaceProviderSpec> interface_provider_specs; |
+ // An array of the capabilities exposed by the target that are required by the |
+ // source. |
+ CapabilitySet required_capabilities; |
}; |
// Implemented by any service which is known to the Service Manager, for which |
@@ -45,8 +47,8 @@ interface Service { |
// control_request |
// An optional associated ServiceControl request. |
// |
- OnStart(ServiceInfo info) => (Connector&? connector_request, |
- associated ServiceControl&? control_request); |
+ OnStart(Identity identity) => (Connector&? connector_request, |
+ associated ServiceControl&? control_request); |
// Called when a request to bind an interface is received from another |
// ("source") service. This is the result of that service calling |
@@ -58,8 +60,8 @@ interface Service { |
// |
// Parameters: |
// |
- // source_info |
- // Contains the source identity and interface provider specs. |
+ // source |
+ // Contains information about the source of the request. |
// |
// interface_name |
// The name of the interface to be bound. |
@@ -67,11 +69,7 @@ interface Service { |
// interface_pipe |
// The message pipe to bind the interface implementation to. |
// |
- // TODO(beng): It occurs to me that |source_info| leaks all metadata about |
- // the source's capability requirements to the target. This seems |
- // undesirable. The metadata supplied here should be germane to |
- // fulfilling this request and no more. |
- OnBindInterface(ServiceInfo source_info, |
+ OnBindInterface(BindSourceInfo source, |
string interface_name, |
handle<message_pipe> interface_pipe) => (); |
}; |