Index: components/data_reduction_proxy/browser/data_reduction_proxy_protocol_unittest.cc |
diff --git a/components/data_reduction_proxy/browser/data_reduction_proxy_protocol_unittest.cc b/components/data_reduction_proxy/browser/data_reduction_proxy_protocol_unittest.cc |
index c09ded79aa8fda0ac3d8e405ffb1d7e9e100c2e8..deb4b539a0c676e77566f6da9891a3384338148e 100644 |
--- a/components/data_reduction_proxy/browser/data_reduction_proxy_protocol_unittest.cc |
+++ b/components/data_reduction_proxy/browser/data_reduction_proxy_protocol_unittest.cc |
@@ -667,33 +667,95 @@ TEST_F(DataReductionProxyProtocolTest, OnResolveProxyHandler) { |
TestDataReductionProxyParams::HAS_EVERYTHING & |
~TestDataReductionProxyParams::HAS_DEV_ORIGIN); |
- // Data reduction proxy |
- net::ProxyInfo info1; |
+ // Data reduction proxy info |
+ net::ProxyInfo data_reduction_proxy_info; |
std::string data_reduction_proxy; |
base::TrimString(test_params.DefaultOrigin(), "/", &data_reduction_proxy); |
- info1.UseNamedProxy(data_reduction_proxy); |
- EXPECT_FALSE(info1.is_empty()); |
+ data_reduction_proxy_info.UseNamedProxy(data_reduction_proxy); |
+ EXPECT_FALSE(data_reduction_proxy_info.is_empty()); |
+ |
+ // Data reduction proxy config |
+ net::ProxyConfig data_reduction_proxy_config; |
+ data_reduction_proxy_config.proxy_rules().ParseFromString( |
+ "http=" + data_reduction_proxy + ",direct://;"); |
+ data_reduction_proxy_config.set_id(1); |
+ |
+ // Other proxy info |
+ net::ProxyInfo other_proxy_info; |
+ other_proxy_info.UseNamedProxy("proxy.com"); |
+ EXPECT_FALSE(other_proxy_info.is_empty()); |
+ |
+ // Direct |
+ net::ProxyInfo direct_proxy_info; |
+ direct_proxy_info.UseDirect(); |
+ EXPECT_TRUE(direct_proxy_info.is_direct()); |
+ |
+ // Empty retry info map |
+ net::ProxyRetryInfoMap empty_proxy_retry_info; |
+ |
+ // Retry info map with the data reduction proxy; |
+ net::ProxyRetryInfoMap data_reduction_proxy_retry_info; |
+ net::ProxyRetryInfo retry_info; |
+ retry_info.current_delay = base::TimeDelta::FromSeconds(1000); |
+ retry_info.bad_until = base::TimeTicks().Now() + retry_info.current_delay; |
+ retry_info.try_while_bad = false; |
+ data_reduction_proxy_retry_info[ |
+ data_reduction_proxy_info.proxy_server().ToURI()] = retry_info; |
+ |
+ net::ProxyInfo result; |
+ |
+ // The data reduction proxy is used. It should be used afterwards. |
+ result.Use(data_reduction_proxy_info); |
+ OnResolveProxyHandler(url, load_flags, data_reduction_proxy_config, |
+ empty_proxy_retry_info, &test_params, &result); |
+ EXPECT_EQ(data_reduction_proxy_info.proxy_server(), result.proxy_server()); |
+ |
+ // Another proxy is used. It should be used afterwards. |
+ result.Use(other_proxy_info); |
+ OnResolveProxyHandler(url, load_flags, data_reduction_proxy_config, |
+ empty_proxy_retry_info, &test_params, &result); |
+ EXPECT_EQ(other_proxy_info.proxy_server(), result.proxy_server()); |
+ |
+ // A direct connection is used. The data reduction proxy should be used |
+ // afterwards. |
+ // Another proxy is used. It should be used afterwards. |
+ result.Use(direct_proxy_info); |
+ OnResolveProxyHandler(url, load_flags, data_reduction_proxy_config, |
+ empty_proxy_retry_info, &test_params, &result); |
+ EXPECT_EQ(data_reduction_proxy_info.proxy_server(), result.proxy_server()); |
+ |
+ // A direct connection is used, but the data reduction proxy is on the retry |
+ // list. A direct connection should be used afterwards. |
+ result.Use(direct_proxy_info); |
+ OnResolveProxyHandler(url, load_flags, data_reduction_proxy_config, |
+ data_reduction_proxy_retry_info, &test_params, |
+ &result); |
+ EXPECT_TRUE(result.proxy_server().is_direct()); |
- // Other proxy |
- net::ProxyInfo info2; |
- info2.UseNamedProxy("proxy.com"); |
- EXPECT_FALSE(info2.is_empty()); |
// Without DataCompressionProxyCriticalBypass Finch trial set, should never |
// bypass. |
- OnResolveProxyHandler(url, load_flags, &test_params, &info1); |
- EXPECT_FALSE(info1.is_direct()); |
+ OnResolveProxyHandler(url, load_flags, data_reduction_proxy_config, |
+ empty_proxy_retry_info, &test_params, |
+ &data_reduction_proxy_info); |
+ EXPECT_FALSE(data_reduction_proxy_info.is_direct()); |
- OnResolveProxyHandler(url, load_flags, &test_params,&info2); |
- EXPECT_FALSE(info2.is_direct()); |
+ OnResolveProxyHandler(url, load_flags, data_reduction_proxy_config, |
+ empty_proxy_retry_info, &test_params, |
+ &other_proxy_info); |
+ EXPECT_FALSE(other_proxy_info.is_direct()); |
load_flags |= net::LOAD_BYPASS_DATA_REDUCTION_PROXY; |
- OnResolveProxyHandler(url, load_flags, &test_params, &info1); |
- EXPECT_FALSE(info1.is_direct()); |
+ OnResolveProxyHandler(url, load_flags, data_reduction_proxy_config, |
+ empty_proxy_retry_info, &test_params, |
+ &data_reduction_proxy_info); |
+ EXPECT_FALSE(data_reduction_proxy_info.is_direct()); |
- OnResolveProxyHandler(url, load_flags, &test_params, &info2); |
- EXPECT_FALSE(info2.is_direct()); |
+ OnResolveProxyHandler(url, load_flags, data_reduction_proxy_config, |
+ empty_proxy_retry_info, &test_params, |
+ &other_proxy_info); |
+ EXPECT_FALSE(other_proxy_info.is_direct()); |
// With Finch trial set, should only bypass if LOAD flag is set and the |
// effective proxy is the data compression proxy. |
@@ -707,19 +769,27 @@ TEST_F(DataReductionProxyProtocolTest, OnResolveProxyHandler) { |
load_flags = net::LOAD_NORMAL; |
- OnResolveProxyHandler(url, load_flags, &test_params, &info1); |
- EXPECT_FALSE(info1.is_direct()); |
+ OnResolveProxyHandler(url, load_flags, data_reduction_proxy_config, |
+ empty_proxy_retry_info, &test_params, |
+ &data_reduction_proxy_info); |
+ EXPECT_FALSE(data_reduction_proxy_info.is_direct()); |
- OnResolveProxyHandler(url, load_flags, &test_params, &info2); |
- EXPECT_FALSE(info2.is_direct()); |
+ OnResolveProxyHandler(url, load_flags, data_reduction_proxy_config, |
+ empty_proxy_retry_info, &test_params, |
+ &other_proxy_info); |
+ EXPECT_FALSE(other_proxy_info.is_direct()); |
load_flags |= net::LOAD_BYPASS_DATA_REDUCTION_PROXY; |
- OnResolveProxyHandler(url, load_flags, &test_params, &info2); |
- EXPECT_FALSE(info2.is_direct()); |
+ OnResolveProxyHandler(url, load_flags, data_reduction_proxy_config, |
+ empty_proxy_retry_info, &test_params, |
+ &other_proxy_info); |
+ EXPECT_FALSE(other_proxy_info.is_direct()); |
- OnResolveProxyHandler(url, load_flags, &test_params, &info1); |
- EXPECT_TRUE(info1.is_direct()); |
+ OnResolveProxyHandler(url, load_flags, data_reduction_proxy_config, |
+ empty_proxy_retry_info, &test_params, |
+ &data_reduction_proxy_info); |
+ EXPECT_TRUE(data_reduction_proxy_info.is_direct()); |
} |
} // namespace data_reduction_proxy |