| Index: net/proxy/proxy_resolver_v8_tracing.h
|
| diff --git a/net/proxy/proxy_resolver_v8_tracing.h b/net/proxy/proxy_resolver_v8_tracing.h
|
| index d1666638fb08b0387cae2bbf4c6f1a33337e587f..c2a9de57ad0e93b1602b62f5cf117dbb9bd06834 100644
|
| --- a/net/proxy/proxy_resolver_v8_tracing.h
|
| +++ b/net/proxy/proxy_resolver_v8_tracing.h
|
| @@ -5,93 +5,62 @@
|
| #ifndef NET_PROXY_PROXY_RESOLVER_V8_TRACING_H_
|
| #define NET_PROXY_PROXY_RESOLVER_V8_TRACING_H_
|
|
|
| +#include <set>
|
| +
|
| #include "base/basictypes.h"
|
| #include "base/memory/ref_counted.h"
|
| #include "base/memory/scoped_ptr.h"
|
| -#include "base/threading/non_thread_safe.h"
|
| #include "net/base/net_export.h"
|
| #include "net/proxy/proxy_resolver.h"
|
| -
|
| -namespace base {
|
| -class Thread;
|
| -class MessageLoopProxy;
|
| -} // namespace base
|
| +#include "net/proxy/proxy_resolver_factory.h"
|
|
|
| namespace net {
|
|
|
| class HostResolver;
|
| class NetLog;
|
| class ProxyResolverErrorObserver;
|
| -class ProxyResolverV8;
|
|
|
| -// ProxyResolverV8Tracing is a non-blocking ProxyResolver. It executes
|
| +// ProxyResolverFactoryV8Tracing is a ProxyResolverFactory that returns
|
| +// non-blocking ProxyResolver instances. Each ProxyResolver instance executes
|
| // ProxyResolverV8 on a single helper thread, and does some magic to avoid
|
| // blocking in DNS. For more details see the design document:
|
| // https://docs.google.com/a/google.com/document/d/16Ij5OcVnR3s0MH4Z5XkhI9VTPoMJdaBn9rKreAmGOdE/edit?pli=1
|
| -class NET_EXPORT_PRIVATE ProxyResolverV8Tracing
|
| - : public ProxyResolver,
|
| - NON_EXPORTED_BASE(public base::NonThreadSafe) {
|
| +class NET_EXPORT ProxyResolverFactoryV8Tracing : public ProxyResolverFactory {
|
| public:
|
| - // Constructs a ProxyResolver that will issue DNS requests through
|
| - // |host_resolver|, forward Javascript errors through |error_observer|, and
|
| - // log Javascript errors and alerts to |net_log|.
|
| - //
|
| - // Note that the constructor takes ownership of |error_observer|, whereas
|
| - // |host_resolver| and |net_log| are expected to outlive |this|.
|
| - ProxyResolverV8Tracing(HostResolver* host_resolver,
|
| - ProxyResolverErrorObserver* error_observer,
|
| - NetLog* net_log);
|
| -
|
| - // Constructs a ProxyResolver that will issue DNS requests through
|
| - // |host_resolver|, forward Javascript errors through |error_observer|, and
|
| - // log Javascript errors and alerts to |net_log|. When the LoadState for a
|
| - // request changes, |on_load_state_changed| will be invoked with the
|
| - // RequestHandle for that request with the new LoadState.
|
| - //
|
| - // Note that the constructor takes ownership of |error_observer|, whereas
|
| - // |host_resolver| and |net_log| are expected to outlive |this|.
|
| - ProxyResolverV8Tracing(HostResolver* host_resolver,
|
| - ProxyResolverErrorObserver* error_observer,
|
| - NetLog* net_log,
|
| - const LoadStateChangedCallback& on_load_state_changed);
|
| -
|
| - ~ProxyResolverV8Tracing() override;
|
| -
|
| - // ProxyResolver implementation:
|
| - int GetProxyForURL(const GURL& url,
|
| - ProxyInfo* results,
|
| - const CompletionCallback& callback,
|
| - RequestHandle* request,
|
| - const BoundNetLog& net_log) override;
|
| - void CancelRequest(RequestHandle request) override;
|
| - LoadState GetLoadState(RequestHandle request) const override;
|
| - void CancelSetPacScript() override;
|
| - int SetPacScript(const scoped_refptr<ProxyResolverScriptData>& script_data,
|
| - const CompletionCallback& callback) override;
|
| + // Note that |host_resolver| and |net_log| are expected to outlive |this| and
|
| + // any ProxyResolver instances created using |this|. |error_observer_factory|
|
| + // will be invoked once per CreateProxyResolver() call to create a
|
| + // ProxyResolverErrorObserver to be used by the ProxyResolver instance
|
| + // returned by that call.
|
| + ProxyResolverFactoryV8Tracing(
|
| + HostResolver* host_resolver,
|
| + NetLog* net_log,
|
| + const ProxyResolver::LoadStateChangedCallback& callback,
|
| + const base::Callback<scoped_ptr<ProxyResolverErrorObserver>()>&
|
| + error_observer_factory);
|
| + ~ProxyResolverFactoryV8Tracing() override;
|
| +
|
| + // ProxyResolverFactory override.
|
| + int CreateProxyResolver(
|
| + const scoped_refptr<ProxyResolverScriptData>& pac_script,
|
| + scoped_ptr<ProxyResolver>* resolver,
|
| + const CompletionCallback& callback,
|
| + scoped_ptr<Request>* request) override;
|
|
|
| private:
|
| - class Job;
|
| -
|
| - // The worker thread on which the ProxyResolverV8 will be run.
|
| - scoped_ptr<base::Thread> thread_;
|
| - scoped_ptr<ProxyResolverV8> v8_resolver_;
|
| -
|
| - // Non-owned host resolver, which is to be operated on the origin thread.
|
| - HostResolver* host_resolver_;
|
| -
|
| - scoped_ptr<ProxyResolverErrorObserver> error_observer_;
|
| - NetLog* net_log_;
|
| + class CreateJob;
|
|
|
| - // The outstanding SetPacScript operation, or NULL.
|
| - scoped_refptr<Job> set_pac_script_job_;
|
| + void RemoveJob(CreateJob* job);
|
|
|
| - // The number of outstanding (non-cancelled) jobs.
|
| - int num_outstanding_callbacks_;
|
| + HostResolver* const host_resolver_;
|
| + NetLog* const net_log_;
|
| + const ProxyResolver::LoadStateChangedCallback load_state_changed_callback_;
|
| + const base::Callback<scoped_ptr<ProxyResolverErrorObserver>()>
|
| + error_observer_factory_;
|
|
|
| - // Invoked when the load state for a request changes.
|
| - const LoadStateChangedCallback on_load_state_changed_;
|
| + std::set<CreateJob*> jobs_;
|
|
|
| - DISALLOW_COPY_AND_ASSIGN(ProxyResolverV8Tracing);
|
| + DISALLOW_COPY_AND_ASSIGN(ProxyResolverFactoryV8Tracing);
|
| };
|
|
|
| } // namespace net
|
|
|