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

Unified Diff: net/proxy/proxy_service.h

Issue 15070: Split ProxyResolver into two interfaces:... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 12 years 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
« no previous file with comments | « net/proxy/proxy_resolver_winhttp.cc ('k') | net/proxy/proxy_service.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/proxy/proxy_service.h
===================================================================
--- net/proxy/proxy_service.h (revision 7227)
+++ net/proxy/proxy_service.h (working copy)
@@ -24,6 +24,7 @@
namespace net {
+class ProxyConfigService;
class ProxyInfo;
class ProxyResolver;
@@ -85,8 +86,9 @@
// resolution. See ProxyResolverWinHttp for example.
class ProxyService {
public:
- // The instance takes ownership of |resolver|.
- explicit ProxyService(ProxyResolver* resolver);
+ // The instance takes ownership of |config_service| and |resolver|.
+ ProxyService(ProxyConfigService* config_service,
+ ProxyResolver* resolver);
// Used internally to handle PAC queries.
class PacRequest;
@@ -138,6 +140,10 @@
// use IE's settings).
static ProxyService* Create(const ProxyInfo* pi);
+ // Create a proxy service that always fails to fetch the proxy configuration,
+ // so it falls back to direct connect.
+ static ProxyService* CreateNull();
+
// TODO(eroman): remove once WinHTTP is gone.
// Get the ProxyInfo used to create this proxy service (only used by WinHTTP).
const ProxyInfo* proxy_info() const {
@@ -169,6 +175,7 @@
// 2. The URL matches one of the entities in the proxy bypass list.
bool ShouldBypassProxyForURL(const GURL& url);
+ scoped_ptr<ProxyConfigService> config_service_;
scoped_ptr<ProxyResolver> resolver_;
scoped_ptr<base::Thread> pac_thread_;
@@ -288,20 +295,27 @@
bool config_was_tried_;
};
-// This interface provides the low-level functions to access the proxy
-// configuration and resolve proxies for given URLs synchronously.
-class ProxyResolver {
+// Synchronously fetch the system's proxy configuration settings. Called on
+// the IO Thread.
+class ProxyConfigService {
public:
- virtual ~ProxyResolver() {}
+ virtual ~ProxyConfigService() {}
// Get the proxy configuration. Returns OK if successful or an error code if
// otherwise. |config| should be in its initial state when this method is
// called.
virtual int GetProxyConfig(ProxyConfig* config) = 0;
+};
+// Synchronously resolve the proxy for a URL, using a PAC script. Called on the
+// PAC Thread.
+class ProxyResolver {
+ public:
+ virtual ~ProxyResolver() {}
+
// Query the proxy auto-config file (specified by |pac_url|) for the proxy to
// use to load the given |query_url|. Returns OK if successful or an error
- // code if otherwise.
+ // code otherwise.
virtual int GetProxyForURL(const GURL& query_url,
const GURL& pac_url,
ProxyInfo* results) = 0;
« no previous file with comments | « net/proxy/proxy_resolver_winhttp.cc ('k') | net/proxy/proxy_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698