Index: chrome/browser/net/spdyproxy/data_reduction_proxy_settings.h |
diff --git a/chrome/browser/net/spdyproxy/data_reduction_proxy_settings.h b/chrome/browser/net/spdyproxy/data_reduction_proxy_settings.h |
index f066d661713d4b39fbef8b3e680667d43f6546dc..6480378cc1d4fb0ba2fca20a3fa9bc5f51f77435 100644 |
--- a/chrome/browser/net/spdyproxy/data_reduction_proxy_settings.h |
+++ b/chrome/browser/net/spdyproxy/data_reduction_proxy_settings.h |
@@ -18,6 +18,9 @@ |
class PrefService; |
namespace net { |
+class AuthChallengeInfo; |
+class HostPortPair; |
+class HttpNetworkSession; |
class URLFetcher; |
} |
@@ -42,12 +45,17 @@ class DataReductionProxySettings |
public net::NetworkChangeNotifier::IPAddressObserver { |
public: |
typedef std::vector<long long> ContentLengthList; |
+ typedef std::vector<net::HostPortPair> DataReductionProxyList; |
DataReductionProxySettings(); |
virtual ~DataReductionProxySettings(); |
void InitDataReductionProxySettings(); |
+ // If proxy authentication is compiled in, pre-cache authentication |
+ // keys for all configured proxies in |session|. |
+ void InitDataReductionProxySession(net::HttpNetworkSession* session); |
+ |
// Add a host pattern to bypass. This should follow the same syntax used |
// in net::ProxyBypassRules; that is, a hostname pattern, a hostname suffix |
// pattern, an IP literal, a CIDR block, or the magic string '<local>'. |
@@ -75,8 +83,20 @@ class DataReductionProxySettings |
// Returns the URL of the data reduction proxy. |
std::string GetDataReductionProxyOrigin(); |
- // Returns a configuration string for the proxy. |
- std::string GetDataReductionProxyAuth(); |
+ // Returns the URL of the fallback data reduction proxy. |
+ std::string GetDataReductionProxyFallback(); |
+ |
+ // Returns a vector of HostPortPairs for all configured proxies. |
bengr
2013/10/22 17:49:30
It seems a little strange to return a vector when
marq (ping after 24h)
2013/10/22 21:18:01
It's somewhat cleaner (to my mind) to write generi
|
+ DataReductionProxyList GetDataReductionProxies(); |
+ |
+ // Returns true if |auth_info| represents an authentication challenge from |
+ // a compatible, configured proxy. |
+ bool IsAcceptableAuthChallenge(net::AuthChallengeInfo* auth_info); |
+ |
+ // Returns a UTF16 string suitable for use as an authentication token in |
+ // response to the challenge represented by |auth_info|. If the token can't |
+ // be correctly generated for |auth_info|, returns an empty UTF16 string. |
+ base::string16 GetTokenForAuthChallenge(net::AuthChallengeInfo* auth_info); |
// Returns true if the proxy is enabled. |
bool IsDataReductionProxyEnabled(); |
@@ -113,8 +133,6 @@ class DataReductionProxySettings |
virtual PrefService* GetOriginalProfilePrefs(); |
virtual PrefService* GetLocalStatePrefs(); |
- std::string GetDataReductionProxyOriginHostPort(); |
- |
bool IsProxyOriginSetOnCommandLine(); |
void GetContentLengths(unsigned int days, |
int64* original_content_length, |
@@ -146,10 +164,18 @@ class DataReductionProxySettings |
// Accessor for unit tests. |
std::vector<std::string> BypassRules() { return bypass_rules_;} |
+ // Accessors for default hostnames, virtual for testing. |
+ virtual std::string GetDefaultProxyHost(); |
+ virtual std::string GetDefaultFallbackProxyHost(); |
+ |
private: |
friend class DataReductionProxySettingsTestBase; |
friend class DataReductionProxySettingsTest; |
FRIEND_TEST_ALL_PREFIXES(DataReductionProxySettingsTest, |
+ TestAuthHashGeneration); |
+ FRIEND_TEST_ALL_PREFIXES(DataReductionProxySettingsTest, |
+ TestAuthHashGenerationWithOriginSetViaSwitch); |
+ FRIEND_TEST_ALL_PREFIXES(DataReductionProxySettingsTest, |
TestResetDataReductionStatistics); |
FRIEND_TEST_ALL_PREFIXES(DataReductionProxySettingsTest, |
TestIsProxyEnabledOrManaged); |
@@ -185,6 +211,11 @@ class DataReductionProxySettings |
void ProbeWhetherDataReductionProxyIsAvailable(); |
std::string GetProxyCheckURL(); |
+ // Returns a UTF16 string that's the hash of the configured authentication |
+ // key and |salt|. Returns an empty UTF16 string if no key is configured or |
+ // the data reduction proxy feature isn't available. |
+ base::string16 AuthHashForSalt(int64 salt); |
+ |
std::vector<std::string> bypass_rules_; |
// Indicate whether a user has turned on the data reduction proxy previously |