Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef NET_PROXY_PROXY_RESOLVER_V8_TRACING_H_ | 5 #ifndef NET_PROXY_PROXY_RESOLVER_V8_TRACING_H_ |
| 6 #define NET_PROXY_PROXY_RESOLVER_V8_TRACING_H_ | 6 #define NET_PROXY_PROXY_RESOLVER_V8_TRACING_H_ |
| 7 | 7 |
| 8 #include <set> | |
| 9 | |
| 10 #include "base/basictypes.h" | 8 #include "base/basictypes.h" |
| 11 #include "base/memory/ref_counted.h" | 9 #include "base/memory/ref_counted.h" |
| 12 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| 13 #include "net/base/net_export.h" | 11 #include "net/base/net_export.h" |
| 14 #include "net/proxy/proxy_resolver.h" | 12 #include "net/proxy/proxy_resolver.h" |
| 15 #include "net/proxy/proxy_resolver_factory.h" | 13 #include "net/proxy/proxy_resolver_factory.h" |
| 16 | 14 |
| 17 namespace net { | 15 namespace net { |
| 18 | 16 |
| 19 class HostResolver; | 17 class HostResolver; |
| 20 class NetLog; | |
| 21 class ProxyResolverErrorObserver; | |
| 22 | 18 |
| 23 // ProxyResolverFactoryV8Tracing is a ProxyResolverFactory that returns | 19 // ProxyResolverV8Tracing is a non-blocking ProxyResolver. It executes |
|
eroman
2015/06/05 01:11:47
ProxyResolver --> proxy resolver (no longer implem
Sam McNally
2015/06/23 00:32:46
Done.
| |
| 24 // non-blocking ProxyResolver instances. Each ProxyResolver instance executes | |
| 25 // ProxyResolverV8 on a single helper thread, and does some magic to avoid | 20 // ProxyResolverV8 on a single helper thread, and does some magic to avoid |
|
eroman
2015/06/05 01:11:47
This comment reads strangely now, since this is no
Sam McNally
2015/06/23 00:32:46
Done.
| |
| 26 // blocking in DNS. For more details see the design document: | 21 // blocking in DNS. For more details see the design document: |
| 27 // https://docs.google.com/a/google.com/document/d/16Ij5OcVnR3s0MH4Z5XkhI9VTPoMJ daBn9rKreAmGOdE/edit?pli=1 | 22 // https://docs.google.com/a/google.com/document/d/16Ij5OcVnR3s0MH4Z5XkhI9VTPoMJ daBn9rKreAmGOdE/edit?pli=1 |
| 28 class NET_EXPORT ProxyResolverFactoryV8Tracing : public ProxyResolverFactory { | 23 class NET_EXPORT ProxyResolverV8Tracing { |
| 29 public: | 24 public: |
| 30 // Note that |host_resolver| and |net_log| are expected to outlive |this| and | 25 class Bindings { |
| 31 // any ProxyResolver instances created using |this|. |error_observer_factory| | 26 public: |
| 32 // will be invoked once per CreateProxyResolver() call to create a | 27 Bindings() {} |
| 33 // ProxyResolverErrorObserver to be used by the ProxyResolver instance | 28 virtual ~Bindings() {} |
|
eroman
2015/06/05 01:11:47
It would also be useful to give some comments on w
Sam McNally
2015/06/23 00:32:46
Done.
| |
| 34 // returned by that call. | |
| 35 ProxyResolverFactoryV8Tracing( | |
| 36 HostResolver* host_resolver, | |
| 37 NetLog* net_log, | |
| 38 const ProxyResolver::LoadStateChangedCallback& callback, | |
| 39 const base::Callback<scoped_ptr<ProxyResolverErrorObserver>()>& | |
| 40 error_observer_factory); | |
| 41 ~ProxyResolverFactoryV8Tracing() override; | |
| 42 | 29 |
| 43 // ProxyResolverFactory override. | 30 // Invoked in response to an alert() call by the PAC script. This may be |
| 44 int CreateProxyResolver( | 31 // called after cancellation and from any thread. |
| 32 virtual void Alert(const base::string16& message) = 0; | |
| 33 | |
| 34 // Invoked in response to an error in the PAC script. This may be | |
| 35 // called after cancellation and from any thread. | |
| 36 virtual void OnError(int line_number, const base::string16& message) = 0; | |
| 37 | |
| 38 // Returns a HostResolver to use for DNS resolution. This will only be | |
| 39 // called from the origin thread and will never be called after | |
| 40 // cancellation. | |
| 41 virtual HostResolver* GetHostResolver() = 0; | |
| 42 | |
| 43 // Returns a BoundNetLog to be passed to the HostResolver returned by | |
| 44 // GetHostResolver(). This will only be called from the origin thread and | |
| 45 // will never be called after cancellation. | |
| 46 virtual BoundNetLog GetBoundNetLog() = 0; | |
| 47 | |
| 48 private: | |
| 49 DISALLOW_COPY_AND_ASSIGN(Bindings); | |
| 50 }; | |
| 51 | |
| 52 virtual ~ProxyResolverV8Tracing() {} | |
| 53 | |
| 54 // Gets a list of proxy servers to use for |url|. This request always | |
| 55 // runs asynchronously and notifies the result by running |callback|. If the | |
| 56 // result code is OK then the request was successful and |results| contains | |
| 57 // the proxy resolution information. If |request| is non-null, |*request| is | |
| 58 // written to, and can be passed to CancelRequest(). | |
| 59 virtual void GetProxyForURL(const GURL& url, | |
| 60 ProxyInfo* results, | |
| 61 const CompletionCallback& callback, | |
| 62 ProxyResolver::RequestHandle* request, | |
| 63 scoped_ptr<Bindings> bindings) = 0; | |
| 64 | |
| 65 // Cancels |request|. | |
| 66 virtual void CancelRequest(ProxyResolver::RequestHandle request) = 0; | |
| 67 | |
| 68 // Gets the LoadState for |request|. | |
| 69 virtual LoadState GetLoadState( | |
| 70 ProxyResolver::RequestHandle request) const = 0; | |
| 71 }; | |
| 72 | |
| 73 // A factory for ProxyResolverV8Tracing instances. | |
| 74 class NET_EXPORT ProxyResolverV8TracingFactory { | |
| 75 public: | |
| 76 ProxyResolverV8TracingFactory() {} | |
| 77 virtual ~ProxyResolverV8TracingFactory() = default; | |
| 78 | |
| 79 virtual void CreateProxyResolverV8Tracing( | |
| 45 const scoped_refptr<ProxyResolverScriptData>& pac_script, | 80 const scoped_refptr<ProxyResolverScriptData>& pac_script, |
| 46 scoped_ptr<ProxyResolver>* resolver, | 81 scoped_ptr<ProxyResolverV8Tracing::Bindings> bindings, |
| 82 scoped_ptr<ProxyResolverV8Tracing>* resolver, | |
| 47 const CompletionCallback& callback, | 83 const CompletionCallback& callback, |
| 48 scoped_ptr<Request>* request) override; | 84 scoped_ptr<ProxyResolverFactory::Request>* request) = 0; |
| 85 | |
| 86 static scoped_ptr<ProxyResolverV8TracingFactory> Create(); | |
| 49 | 87 |
| 50 private: | 88 private: |
| 51 class CreateJob; | 89 DISALLOW_COPY_AND_ASSIGN(ProxyResolverV8TracingFactory); |
| 52 | |
| 53 void RemoveJob(CreateJob* job); | |
| 54 | |
| 55 HostResolver* const host_resolver_; | |
| 56 NetLog* const net_log_; | |
| 57 const ProxyResolver::LoadStateChangedCallback load_state_changed_callback_; | |
| 58 const base::Callback<scoped_ptr<ProxyResolverErrorObserver>()> | |
| 59 error_observer_factory_; | |
| 60 | |
| 61 std::set<CreateJob*> jobs_; | |
| 62 | |
| 63 DISALLOW_COPY_AND_ASSIGN(ProxyResolverFactoryV8Tracing); | |
| 64 }; | 90 }; |
| 65 | 91 |
| 66 } // namespace net | 92 } // namespace net |
| 67 | 93 |
| 68 #endif // NET_PROXY_PROXY_RESOLVER_V8_TRACING_H_ | 94 #endif // NET_PROXY_PROXY_RESOLVER_V8_TRACING_H_ |
| OLD | NEW |