Index: net/proxy/mojo_proxy_resolver_factory_impl.cc |
diff --git a/net/proxy/mojo_proxy_resolver_factory_impl.cc b/net/proxy/mojo_proxy_resolver_factory_impl.cc |
index 976501721ca7b0fcbda0265aa53a8fc5c9f8009c..1a701c3ca88ecda546ff11e1e2703980e2fed0e7 100644 |
--- a/net/proxy/mojo_proxy_resolver_factory_impl.cc |
+++ b/net/proxy/mojo_proxy_resolver_factory_impl.cc |
@@ -10,6 +10,7 @@ |
#include "base/macros.h" |
#include "base/memory/ptr_util.h" |
#include "base/stl_util.h" |
+#include "mojo/public/cpp/bindings/strong_binding.h" |
#include "net/base/net_errors.h" |
#include "net/proxy/mojo_proxy_resolver_impl.h" |
#include "net/proxy/mojo_proxy_resolver_v8_tracing_bindings.h" |
@@ -17,40 +18,6 @@ |
#include "net/proxy/proxy_resolver_v8_tracing.h" |
namespace net { |
-namespace { |
- |
-// A class to manage the lifetime of a MojoProxyResolverImpl. An instance will |
-// remain while the message pipe for the mojo connection remains open. |
-class MojoProxyResolverHolder { |
- public: |
- MojoProxyResolverHolder( |
- std::unique_ptr<ProxyResolverV8Tracing> proxy_resolver_impl, |
- mojo::InterfaceRequest<interfaces::ProxyResolver> request); |
- |
- private: |
- // Mojo error handler. |
- void OnConnectionError(); |
- |
- MojoProxyResolverImpl mojo_proxy_resolver_; |
- mojo::Binding<interfaces::ProxyResolver> binding_; |
- |
- DISALLOW_COPY_AND_ASSIGN(MojoProxyResolverHolder); |
-}; |
- |
-MojoProxyResolverHolder::MojoProxyResolverHolder( |
- std::unique_ptr<ProxyResolverV8Tracing> proxy_resolver_impl, |
- mojo::InterfaceRequest<interfaces::ProxyResolver> request) |
- : mojo_proxy_resolver_(std::move(proxy_resolver_impl)), |
- binding_(&mojo_proxy_resolver_, std::move(request)) { |
- binding_.set_connection_error_handler(base::Bind( |
- &MojoProxyResolverHolder::OnConnectionError, base::Unretained(this))); |
-} |
- |
-void MojoProxyResolverHolder::OnConnectionError() { |
- delete this; |
-} |
- |
-} // namespace |
class MojoProxyResolverFactoryImpl::Job { |
public: |
@@ -109,25 +76,20 @@ void MojoProxyResolverFactoryImpl::Job::OnConnectionError() { |
void MojoProxyResolverFactoryImpl::Job::OnProxyResolverCreated(int error) { |
if (error == OK) { |
- // The MojoProxyResolverHolder will delete itself if |proxy_request_| |
- // encounters a connection error. |
- new MojoProxyResolverHolder(std::move(proxy_resolver_impl_), |
- std::move(proxy_request_)); |
+ mojo::MakeStrongBinding(base::MakeUnique<MojoProxyResolverImpl>( |
+ std::move(proxy_resolver_impl_)), |
+ std::move(proxy_request_)); |
} |
client_ptr_->ReportResult(error); |
parent_->RemoveJob(this); |
} |
MojoProxyResolverFactoryImpl::MojoProxyResolverFactoryImpl( |
- std::unique_ptr<ProxyResolverV8TracingFactory> proxy_resolver_factory, |
- mojo::InterfaceRequest<interfaces::ProxyResolverFactory> request) |
- : proxy_resolver_impl_factory_(std::move(proxy_resolver_factory)), |
- binding_(this, std::move(request)) {} |
+ std::unique_ptr<ProxyResolverV8TracingFactory> proxy_resolver_factory) |
+ : proxy_resolver_impl_factory_(std::move(proxy_resolver_factory)) {} |
-MojoProxyResolverFactoryImpl::MojoProxyResolverFactoryImpl( |
- mojo::InterfaceRequest<interfaces::ProxyResolverFactory> request) |
- : MojoProxyResolverFactoryImpl(ProxyResolverV8TracingFactory::Create(), |
- std::move(request)) {} |
+MojoProxyResolverFactoryImpl::MojoProxyResolverFactoryImpl() |
+ : MojoProxyResolverFactoryImpl(ProxyResolverV8TracingFactory::Create()) {} |
MojoProxyResolverFactoryImpl::~MojoProxyResolverFactoryImpl() { |
base::STLDeleteElements(&jobs_); |