Index: mojo/application/public/cpp/lib/service_registry.cc |
diff --git a/mojo/application/public/cpp/lib/service_registry.cc b/mojo/application/public/cpp/lib/service_registry.cc |
index 4f8e6e6565c1b6494daaac7c2fd8f372437caf23..279209d393102afa9e8e066ce82555f7a3106644 100644 |
--- a/mojo/application/public/cpp/lib/service_registry.cc |
+++ b/mojo/application/public/cpp/lib/service_registry.cc |
@@ -4,36 +4,38 @@ |
#include "mojo/application/public/cpp/lib/service_registry.h" |
+#include "base/logging.h" |
#include "mojo/application/public/cpp/application_connection.h" |
-#include "mojo/application/public/cpp/application_impl.h" |
#include "mojo/application/public/cpp/service_connector.h" |
namespace mojo { |
namespace internal { |
ServiceRegistry::ServiceRegistry( |
- ApplicationImpl* application_impl, |
const std::string& connection_url, |
const std::string& remote_url, |
ServiceProviderPtr remote_services, |
InterfaceRequest<ServiceProvider> local_services, |
const std::set<std::string>& allowed_interfaces) |
- : application_impl_(application_impl), |
- connection_url_(connection_url), |
+ : connection_url_(connection_url), |
remote_url_(remote_url), |
local_binding_(this), |
remote_service_provider_(remote_services.Pass()), |
allowed_interfaces_(allowed_interfaces), |
allow_all_interfaces_(allowed_interfaces_.size() == 1 && |
- allowed_interfaces_.count("*") == 1) { |
+ allowed_interfaces_.count("*") == 1), |
+ weak_factory_(this) { |
if (local_services.is_pending()) |
local_binding_.Bind(local_services.Pass()); |
} |
ServiceRegistry::ServiceRegistry() |
- : application_impl_(nullptr), |
- local_binding_(this), |
- allow_all_interfaces_(true) { |
+ : local_binding_(this), |
+ allow_all_interfaces_(true), |
+ weak_factory_(this) { |
+} |
+ |
+ServiceRegistry::~ServiceRegistry() { |
} |
void ServiceRegistry::SetServiceConnector(ServiceConnector* connector) { |
@@ -63,6 +65,10 @@ void ServiceRegistry::SetRemoteServiceProviderConnectionErrorHandler( |
remote_service_provider_.set_connection_error_handler(handler); |
} |
+base::WeakPtr<ApplicationConnection> ServiceRegistry::GetWeakPtr() { |
+ return weak_factory_.GetWeakPtr(); |
+} |
+ |
void ServiceRegistry::RemoveServiceConnectorForName( |
const std::string& interface_name) { |
service_connector_registry_.RemoveServiceConnectorForName(interface_name); |
@@ -82,14 +88,6 @@ ServiceProvider* ServiceRegistry::GetServiceProvider() { |
return remote_service_provider_.get(); |
} |
-ServiceRegistry::~ServiceRegistry() { |
-} |
- |
-void ServiceRegistry::OnCloseConnection() { |
- if (application_impl_) |
- application_impl_->CloseConnection(this); |
-} |
- |
void ServiceRegistry::ConnectToService(const mojo::String& service_name, |
ScopedMessagePipeHandle client_handle) { |
service_connector_registry_.ConnectToService(this, service_name, |