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