Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1084)

Unified Diff: net/proxy/mojo_proxy_resolver_factory_impl.cc

Issue 2326913003: Privatize StrongBinding lifetime management (Closed)
Patch Set: rebase Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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_);
« no previous file with comments | « net/proxy/mojo_proxy_resolver_factory_impl.h ('k') | net/proxy/mojo_proxy_resolver_factory_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698