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

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 c19b26d98e44016595048f3e93f7b307e27dd01e..ce8d3d098794a03973c0978ad3690c6babc4f05b 100644
--- a/net/proxy/proxy_resolver_mojo.cc
+++ b/net/proxy/proxy_resolver_mojo.cc
@@ -11,7 +11,6 @@
#include "mojo/common/url_type_converters.h"
#include "net/base/net_errors.h"
#include "net/dns/mojo_host_resolver_impl.h"
-#include "net/proxy/mojo_proxy_resolver_factory.h"
#include "net/proxy/mojo_proxy_type_converters.h"
#include "net/proxy/proxy_info.h"
#include "third_party/mojo/src/mojo/public/cpp/bindings/binding.h"
@@ -111,11 +110,16 @@ void ProxyResolverMojo::Job::LoadStateChanged(int32_t load_state) {
}
ProxyResolverMojo::ProxyResolverMojo(
- MojoProxyResolverFactory* mojo_proxy_resolver_factory,
- HostResolver* host_resolver)
+ interfaces::ProxyResolverPtr mojo_proxy_resolver,
+ HostResolver* host_resolver,
+ mojo::InterfaceRequest<interfaces::HostResolver> host_resolver_request,
+ 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()),
+ host_resolver_(host_resolver),
+ host_resolver_binding_(&host_resolver_, host_resolver_request.Pass()),
+ runner_(runner.Pass()) {
+ mojo_proxy_resolver_ptr_.set_error_handler(this);
}
ProxyResolverMojo::~ProxyResolverMojo() {
@@ -147,7 +151,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()),
@@ -171,21 +175,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::OnConnectionError() {
DCHECK(thread_checker_.CalledOnValidThread());
DVLOG(1) << "ProxyResolverMojo::OnConnectionError";
@@ -215,14 +204,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