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

Unified Diff: net/proxy/proxy_resolver_mojo.cc

Issue 1076083002: Shut down proxy resolver utility processes when no longer needed. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@proxy-service-with-factory-restart
Patch Set: Created 5 years, 8 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/proxy_resolver_mojo.cc
diff --git a/net/proxy/proxy_resolver_mojo.cc b/net/proxy/proxy_resolver_mojo.cc
index 6e12a43d317d21629e435673100ad4a1887e81be..5432acfdfc8ec4e47e34ebabd7b74c796154dce7 100644
--- a/net/proxy/proxy_resolver_mojo.cc
+++ b/net/proxy/proxy_resolver_mojo.cc
@@ -111,12 +111,13 @@ void ProxyResolverMojo::Job::LoadStateChanged(int32_t load_state) {
}
ProxyResolverMojo::ProxyResolverMojo(
- MojoProxyResolverFactory* mojo_proxy_resolver_factory,
- HostResolver* host_resolver)
+ interfaces::ProxyResolverPtr mojo_proxy_resolver,
+ scoped_ptr<base::ScopedClosureRunner> runner)
: ProxyResolver(true /* |expects_pac_bytes| */),
- mojo_proxy_resolver_factory_(mojo_proxy_resolver_factory),
- host_resolver_(host_resolver),
+ mojo_proxy_resolver_ptr_(mojo_proxy_resolver.Pass()),
+ runner_(runner.Pass()),
weak_factory_(this) {
+ mojo_proxy_resolver_ptr_.set_error_handler(this);
}
ProxyResolverMojo::~ProxyResolverMojo() {
@@ -148,7 +149,7 @@ int ProxyResolverMojo::SetPacScript(
pac_script, callback));
if (!mojo_proxy_resolver_ptr_)
- SetUpServices();
+ return ERR_PAC_SCRIPT_TERMINATED;
mojo_proxy_resolver_ptr_->SetPacScript(
mojo::String::From(pac_script->utf16()),
@@ -172,21 +173,6 @@ void ProxyResolverMojo::OnSetPacScriptDone(
callback_copy.Run(result);
}
-void ProxyResolverMojo::SetUpServices() {
- DCHECK(thread_checker_.CalledOnValidThread());
- // A Mojo service implementation must outlive its binding.
- mojo_host_resolver_binding_.reset();
-
- interfaces::HostResolverPtr mojo_host_resolver_ptr;
- mojo_host_resolver_.reset(new MojoHostResolverImpl(host_resolver_));
- mojo_host_resolver_binding_.reset(new mojo::Binding<interfaces::HostResolver>(
- mojo_host_resolver_.get(), mojo::GetProxy(&mojo_host_resolver_ptr)));
- mojo_proxy_resolver_ptr_.reset();
- mojo_proxy_resolver_factory_->Create(
- mojo::GetProxy(&mojo_proxy_resolver_ptr_), mojo_host_resolver_ptr.Pass());
- mojo_proxy_resolver_ptr_.set_error_handler(this);
-}
-
void ProxyResolverMojo::AbortPendingRequests() {
DCHECK(thread_checker_.CalledOnValidThread());
// |this| could be deleted as a result of one of these callbacks so use
@@ -236,14 +222,8 @@ int ProxyResolverMojo::GetProxyForURL(const GURL& url,
const BoundNetLog& net_log) {
DCHECK(thread_checker_.CalledOnValidThread());
- // If the Mojo service is not connected, fail. The Mojo service is connected
- // when the script is set, which must be done after construction and after a
- // previous request returns ERR_PAC_SCRIPT_TERMINATED due to the Mojo proxy
- // resolver process crashing.
- if (!mojo_proxy_resolver_ptr_) {
- DVLOG(1) << "ProxyResolverMojo::GetProxyForURL: Mojo not connected";
+ if (!mojo_proxy_resolver_ptr_)
return ERR_PAC_SCRIPT_TERMINATED;
- }
Job* job = new Job(this, url, results, callback);
bool inserted = pending_jobs_.insert(job).second;

Powered by Google App Engine
This is Rietveld 408576698