Index: services/service_manager/public/cpp/lib/service_context.cc |
diff --git a/services/service_manager/public/cpp/lib/service_context.cc b/services/service_manager/public/cpp/lib/service_context.cc |
index 3b4c4220e457ae87101dd79b591cbca789bd3c60..c015df5c3cdabffff52dceb9975355587244a22f 100644 |
--- a/services/service_manager/public/cpp/lib/service_context.cc |
+++ b/services/service_manager/public/cpp/lib/service_context.cc |
@@ -51,7 +51,7 @@ void ServiceContext::SetConnectionLostClosure(const base::Closure& closure) { |
void ServiceContext::OnStart(const ServiceInfo& info, |
const OnStartCallback& callback) { |
- identity_ = info.identity; |
+ local_info_ = info; |
if (!initialize_handler_.is_null()) |
initialize_handler_.Run(); |
@@ -62,13 +62,21 @@ void ServiceContext::OnStart(const ServiceInfo& info, |
void ServiceContext::OnConnect( |
const ServiceInfo& source_info, |
- mojom::InterfaceProviderRequest interfaces, |
- const InterfaceSet& allowed_interfaces, |
- const CapabilitySet& allowed_capabilities) { |
- // TODO(beng): do something with |allowed_capabilities|. |
- auto registry = base::MakeUnique<InterfaceRegistry>( |
- identity_, source_info.identity, allowed_interfaces); |
- registry->Bind(std::move(interfaces)); |
+ mojom::InterfaceProviderRequest interfaces) { |
+ auto target_it = local_info_.interface_provider_specs.find( |
+ mojom::kServiceManager_ConnectorSpec); |
+ InterfaceProviderSpec target_spec; |
+ if (target_it != local_info_.interface_provider_specs.end()) |
+ target_spec = target_it->second; |
+ auto source_it = source_info.interface_provider_specs.find( |
+ mojom::kServiceManager_ConnectorSpec); |
+ InterfaceProviderSpec source_spec; |
+ if (source_it != source_info.interface_provider_specs.end()) |
+ source_spec = source_it->second; |
+ |
+ auto registry = base::MakeUnique<InterfaceRegistry>(local_info_.identity, |
+ target_spec); |
+ registry->Bind(std::move(interfaces), source_info.identity, source_spec); |
if (!service_->OnConnect(source_info, registry.get())) |
return; |