Index: services/service_manager/public/cpp/lib/interface_registry.cc |
diff --git a/services/service_manager/public/cpp/lib/interface_registry.cc b/services/service_manager/public/cpp/lib/interface_registry.cc |
index 25e537c876ce93264b7084f66f30b260df8a5f92..81ad88e057977e8c4688cd1c613f564bb88e00e6 100644 |
--- a/services/service_manager/public/cpp/lib/interface_registry.cc |
+++ b/services/service_manager/public/cpp/lib/interface_registry.cc |
@@ -60,21 +60,21 @@ InterfaceSet GetAllowedInterfaces( |
} // namespace |
-InterfaceRegistry::InterfaceRegistry( |
- const Identity& identity, |
- const InterfaceProviderSpec& interface_provider_spec) |
+InterfaceRegistry::InterfaceRegistry(const std::string& name) |
: binding_(this), |
- identity_(identity), |
- interface_provider_spec_(interface_provider_spec), |
+ name_(name), |
weak_factory_(this) {} |
- |
InterfaceRegistry::~InterfaceRegistry() {} |
void InterfaceRegistry::Bind( |
mojom::InterfaceProviderRequest local_interfaces_request, |
+ const Identity& local_identity, |
+ const InterfaceProviderSpec& local_interface_provider_spec, |
const Identity& remote_identity, |
const InterfaceProviderSpec& remote_interface_provider_spec) { |
DCHECK(!binding_.is_bound()); |
+ identity_ = local_identity; |
+ interface_provider_spec_ = local_interface_provider_spec; |
remote_identity_ = remote_identity; |
allowed_interfaces_ = GetAllowedInterfaces(remote_interface_provider_spec, |
identity_, |
@@ -82,9 +82,11 @@ void InterfaceRegistry::Bind( |
allow_all_interfaces_ = |
allowed_interfaces_.size() == 1 && allowed_interfaces_.count("*") == 1; |
if (!allow_all_interfaces_) { |
- for (auto it = name_to_binder_.begin(); it != name_to_binder_.end(); ++it) { |
+ for (auto it = name_to_binder_.begin(); it != name_to_binder_.end();) { |
if (allowed_interfaces_.count(it->first) == 0) |
- name_to_binder_.erase(it); |
+ it = name_to_binder_.erase(it); |
+ else |
+ ++it; |
} |
} |
binding_.Bind(std::move(local_interfaces_request)); |
@@ -152,9 +154,9 @@ void InterfaceRegistry::GetInterface(const std::string& interface_name, |
std::move(handle)); |
} else if (!CanBindRequestForInterface(interface_name)) { |
std::stringstream ss; |
- ss << "Capability spec prevented service " << remote_identity_.name() |
- << " from binding interface: " << interface_name |
- << " exposed by: " << identity_.name(); |
+ ss << "InterfaceProviderSpec \"" << name_ << "\" prevented service: " |
+ << remote_identity_.name() << " from binding interface: " |
+ << interface_name << " exposed by: " << identity_.name(); |
LOG(ERROR) << ss.str(); |
mojo::ReportBadMessage(ss.str()); |
} else if (!default_binder_.is_null()) { |