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

Unified Diff: net/proxy/proxy_script_decider.h

Issue 8896019: Refactor: Extract "InitProxyResolver" to "ProxyScriptDecider". (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: do another sync since commitbot failed... Created 9 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/init_proxy_resolver_unittest.cc ('k') | net/proxy/proxy_script_decider.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/proxy/proxy_script_decider.h
===================================================================
--- net/proxy/proxy_script_decider.h (revision 113525)
+++ net/proxy/proxy_script_decider.h (working copy)
@@ -2,8 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifndef NET_PROXY_INIT_PROXY_RESOLVER_H_
-#define NET_PROXY_INIT_PROXY_RESOLVER_H_
+#ifndef NET_PROXY_SCRIPT_DECIDER_H
+#define NET_PROXY_SCRIPT_DECIDER_H
#pragma once
#include <vector>
@@ -16,57 +16,66 @@
#include "net/base/completion_callback.h"
#include "net/base/net_export.h"
#include "net/base/net_log.h"
+#include "net/proxy/proxy_config.h"
+#include "net/proxy/proxy_resolver.h"
namespace net {
class DhcpProxyScriptFetcher;
class NetLogParameter;
-class ProxyConfig;
class ProxyResolver;
class ProxyScriptFetcher;
-// InitProxyResolver is a helper class used by ProxyService to
-// initialize a ProxyResolver with the PAC script data specified
-// by a particular ProxyConfig.
+// ProxyScriptDecider is a helper class used by ProxyService to determine which
+// PAC script to use given our proxy configuration.
//
// This involves trying to use PAC scripts in this order:
//
-// (1) WPAD (DNS) if auto-detect is on.
-// (2) Custom PAC script if a URL was given.
+// (1) WPAD (DHCP) if auto-detect is on.
+// (2) WPAD (DNS) if auto-detect is on.
+// (3) Custom PAC script if a URL was given.
//
-// If no PAC script was successfully downloaded + parsed, then it fails with
-// a network error. Otherwise the proxy resolver is left initialized with
-// the PAC script.
+// If no PAC script was successfully selected, then it fails with either a
+// network error, or PAC_SCRIPT_FAILED (indicating it did not pass our
+// validation).
//
-// Deleting InitProxyResolver while Init() is in progress, will
+// On successful completion, the fetched PAC script data can be accessed using
+// script_data().
+//
+// Deleting ProxyScriptDecider while Init() is in progress, will
// cancel the request.
//
-class NET_EXPORT_PRIVATE InitProxyResolver {
+class NET_EXPORT_PRIVATE ProxyScriptDecider {
public:
- // |resolver|, |proxy_script_fetcher|, |dhcp_proxy_script_fetcher| and
- // |net_log| must remain valid for the lifespan of InitProxyResolver.
- InitProxyResolver(ProxyResolver* resolver,
- ProxyScriptFetcher* proxy_script_fetcher,
- DhcpProxyScriptFetcher* dhcp_proxy_script_fetcher,
- NetLog* net_log);
+ // |proxy_script_fetcher|, |dhcp_proxy_script_fetcher| and
+ // |net_log| must remain valid for the lifespan of ProxyScriptDecider.
+ ProxyScriptDecider(ProxyScriptFetcher* proxy_script_fetcher,
+ DhcpProxyScriptFetcher* dhcp_proxy_script_fetcher,
+ NetLog* net_log);
// Aborts any in-progress request.
- ~InitProxyResolver();
+ ~ProxyScriptDecider();
- // Applies the PAC settings of |config| to |resolver_|.
+ // Evaluates the effective proxy settings for |config|, and downloads the
+ // associated PAC script.
// If |wait_delay| is positive, the initialization will pause for this
// amount of time before getting started.
- // If |effective_config| is non-NULL, then on successful initialization of
- // |resolver_| the "effective" proxy settings we ended up using will be
- // written out to |*effective_config|. Note that this may differ from
- // |config| since we will have stripped any manual settings, and decided
- // whether to use auto-detect or the custom PAC URL. Finally, if auto-detect
- // was used we may now have resolved that to a specific script URL.
- int Init(const ProxyConfig& config,
- const base::TimeDelta wait_delay,
- ProxyConfig* effective_config,
- OldCompletionCallback* callback);
+ // On successful completion, the "effective" proxy settings we ended up
+ // deciding on will be available vial the effective_settings() accessor.
+ // Note that this may differ from |config| since we will have stripped any
+ // manual settings, and decided whether to use auto-detect or the custom PAC
+ // URL. Finally, if auto-detect was used we may now have resolved that to a
+ // specific script URL.
+ int Start(const ProxyConfig& config,
+ const base::TimeDelta wait_delay,
+ bool fetch_pac_bytes,
+ OldCompletionCallback* callback);
+ const ProxyConfig& effective_config() const;
+
+ // TODO(eroman): Return a const-pointer.
+ ProxyResolverScriptData* script_data() const;
+
private:
// Represents the sources from which we can get PAC files; two types of
// auto-detect or a custom URL.
@@ -92,8 +101,8 @@
STATE_WAIT_COMPLETE,
STATE_FETCH_PAC_SCRIPT,
STATE_FETCH_PAC_SCRIPT_COMPLETE,
- STATE_SET_PAC_SCRIPT,
- STATE_SET_PAC_SCRIPT_COMPLETE,
+ STATE_VERIFY_PAC_SCRIPT,
+ STATE_VERIFY_PAC_SCRIPT_COMPLETE,
};
// Returns ordered list of PAC urls to try for |config|.
@@ -109,8 +118,8 @@
int DoFetchPacScript();
int DoFetchPacScriptComplete(int result);
- int DoSetPacScript();
- int DoSetPacScriptComplete(int result);
+ int DoVerifyPacScript();
+ int DoVerifyPacScriptComplete(int result);
// Tries restarting using the next fallback PAC URL:
// |pac_sources_[++current_pac_source_index]|.
@@ -129,14 +138,14 @@
const PacSource& current_pac_source() const;
void OnWaitTimerFired();
- void DidCompleteInit();
+ void DidComplete();
void Cancel();
ProxyResolver* resolver_;
ProxyScriptFetcher* proxy_script_fetcher_;
DhcpProxyScriptFetcher* dhcp_proxy_script_fetcher_;
- OldCompletionCallbackImpl<InitProxyResolver> io_callback_;
+ OldCompletionCallbackImpl<ProxyScriptDecider> io_callback_;
OldCompletionCallback* user_callback_;
size_t current_pac_source_index_;
@@ -153,14 +162,19 @@
BoundNetLog net_log_;
+ bool fetch_pac_bytes_;
+
base::TimeDelta wait_delay_;
- base::OneShotTimer<InitProxyResolver> wait_timer_;
+ base::OneShotTimer<ProxyScriptDecider> wait_timer_;
- ProxyConfig* effective_config_;
+ // Results.
+ ProxyConfig effective_config_;
+ scoped_refptr<ProxyResolverScriptData> script_data_;
- DISALLOW_COPY_AND_ASSIGN(InitProxyResolver);
+
+ DISALLOW_COPY_AND_ASSIGN(ProxyScriptDecider);
};
} // namespace net
-#endif // NET_PROXY_INIT_PROXY_RESOLVER_H_
+#endif // NET_PROXY_SCRIPT_DECIDER_H
« no previous file with comments | « net/proxy/init_proxy_resolver_unittest.cc ('k') | net/proxy/proxy_script_decider.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698