Index: components/data_reduction_proxy/core/browser/data_reduction_proxy_config.h |
diff --git a/components/data_reduction_proxy/core/browser/data_reduction_proxy_config.h b/components/data_reduction_proxy/core/browser/data_reduction_proxy_config.h |
index 85e8b6ec9676ee3304854a7ec2eee227226cca69..65733380aee04c848a4c18543391236ec8fbb598 100644 |
--- a/components/data_reduction_proxy/core/browser/data_reduction_proxy_config.h |
+++ b/components/data_reduction_proxy/core/browser/data_reduction_proxy_config.h |
@@ -31,9 +31,9 @@ class URLRequestStatus; |
namespace data_reduction_proxy { |
+class DataReductionProxyConfigValues; |
class DataReductionProxyConfigurator; |
class DataReductionProxyEventStore; |
-class DataReductionProxyParams; |
class DataReductionProxyService; |
struct DataReductionProxyTypeInfo; |
@@ -76,10 +76,9 @@ class DataReductionProxyConfig |
scoped_refptr<base::SingleThreadTaskRunner> io_task_runner, |
scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner, |
net::NetLog* net_log, |
- scoped_ptr<DataReductionProxyParams> params, |
+ scoped_ptr<DataReductionProxyConfigValues> config_values, |
DataReductionProxyConfigurator* configurator, |
- DataReductionProxyEventStore* event_store, |
- bool enable_quic); |
+ DataReductionProxyEventStore* event_store); |
~DataReductionProxyConfig() override; |
void SetDataReductionProxyService( |
@@ -118,7 +117,8 @@ class DataReductionProxyConfig |
// Returns true if this request would be bypassed by the Data Reduction Proxy |
// based on applying the |data_reduction_proxy_config| param rules to the |
// request URL. |
- bool IsBypassedByDataReductionProxyLocalRules( |
+ // Virtualized for mocking. |
+ virtual bool IsBypassedByDataReductionProxyLocalRules( |
const net::URLRequest& request, |
const net::ProxyConfig& data_reduction_proxy_config) const; |
@@ -129,7 +129,8 @@ class DataReductionProxyConfig |
// reduction proxies in min_retry_delay (if not NULL). If there are no |
// bypassed data reduction proxies for the request scheme, returns false and |
// does not assign min_retry_delay. |
- bool AreDataReductionProxiesBypassed( |
+ // Virtualized for mocking. |
+ virtual bool AreDataReductionProxiesBypassed( |
const net::URLRequest& request, |
const net::ProxyConfig& data_reduction_proxy_config, |
base::TimeDelta* min_retry_delay) const; |
@@ -143,24 +144,21 @@ class DataReductionProxyConfig |
// Check whether the |proxy_rules| contain any of the data reduction proxies. |
virtual bool ContainsDataReductionProxy( |
- const net::ProxyConfig::ProxyRules& proxy_rules); |
+ const net::ProxyConfig::ProxyRules& proxy_rules) const; |
// Returns true if the proxy was using the HTTP tunnel for a HTTPS origin. |
bool UsingHTTPTunnel(const net::HostPortPair& proxy_server) const; |
- // Returns the Data Reduction Proxy primary origin. |
- const net::ProxyServer& Origin(); |
- |
// Returns true if the Data Reduction Proxy configuration may be used. |
- bool allowed(); |
+ bool allowed() const; |
// Returns true if the alternative Data Reduction Proxy configuration may be |
// used. |
- bool alternative_allowed(); |
+ bool alternative_allowed() const; |
// Returns true if the Data Reduction Proxy promo may be shown. This is not |
// tied to whether the Data Reduction Proxy is enabled. |
- bool promo_allowed(); |
+ bool promo_allowed() const; |
protected: |
// Sets the proxy configs, enabling or disabling the proxy according to |
@@ -196,6 +194,10 @@ class DataReductionProxyConfig |
TestOnIPAddressChanged); |
FRIEND_TEST_ALL_PREFIXES(DataReductionProxyConfigTest, |
TestSetProxyConfigsHoldback); |
+ FRIEND_TEST_ALL_PREFIXES(DataReductionProxyConfigTest, |
+ AreProxiesBypassed); |
+ FRIEND_TEST_ALL_PREFIXES(DataReductionProxyConfigTest, |
+ AreProxiesBypassedRetryDelay); |
// NetworkChangeNotifier::IPAddressObserver: |
void OnIPAddressChanged() override; |
@@ -227,6 +229,19 @@ class DataReductionProxyConfig |
// Data Reduction Proxy has been disabled. |
bool DisableIfVPN(); |
+ // Checks if all configured data reduction proxies are in the retry map. |
+ // Returns true if the request is bypassed by all configured data reduction |
+ // proxies that apply to the request scheme. If all possible data reduction |
+ // proxies are bypassed, returns the minimum retry delay of the bypassed data |
+ // reduction proxies in min_retry_delay (if not NULL). If there are no |
+ // bypassed data reduction proxies for the request scheme, returns false and |
+ // does not assign min_retry_delay. |
+ bool AreProxiesBypassed( |
+ const net::ProxyRetryInfoMap& retry_map, |
+ const net::ProxyConfig::ProxyRules& proxy_rules, |
+ bool is_https, |
+ base::TimeDelta* min_retry_delay) const; |
+ |
bool restricted_by_carrier_; |
bool disabled_on_vpn_; |
bool unreachable_; |
@@ -234,7 +249,7 @@ class DataReductionProxyConfig |
bool alternative_enabled_by_user_; |
// Contains the configuration data being used. |
- scoped_ptr<DataReductionProxyParams> params_; |
+ scoped_ptr<DataReductionProxyConfigValues> config_values_; |
// |io_task_runner_| should be the task runner for running operations on the |
// IO thread. |