| 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,
|
|
|