Chromium Code Reviews| 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 3057899fe128804af57815293ed54283ee971b67..c207a6c5558ff2738f90ae73bc45a9cf1d0334fe 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 |
| @@ -8,14 +8,17 @@ |
| #include "base/memory/ref_counted.h" |
| #include "base/memory/scoped_ptr.h" |
| +#include "base/metrics/field_trial.h" |
| #include "base/run_loop.h" |
| #include "base/strings/stringprintf.h" |
| #include "components/data_reduction_proxy/browser/data_reduction_proxy_params_test_utils.h" |
| #include "net/base/completion_callback.h" |
| #include "net/base/host_port_pair.h" |
| +#include "net/base/load_flags.h" |
| #include "net/base/network_delegate.h" |
| #include "net/http/http_response_headers.h" |
| #include "net/http/http_transaction_test_util.h" |
| +#include "net/proxy/proxy_service.h" |
| #include "net/socket/socket_test_util.h" |
| #include "net/url_request/static_http_user_agent_settings.h" |
| #include "net/url_request/url_request.h" |
| @@ -611,4 +614,71 @@ TEST_F(DataReductionProxyProtocolTest, |
| TestBadProxies(0, -1, "", ""); |
| } |
| +class BadEntropyProvider : public base::FieldTrial::EntropyProvider { |
| + public: |
| + virtual ~BadEntropyProvider() {} |
| + |
| + virtual double GetEntropyForTrial(const std::string& trial_name, |
| + uint32 randomization_seed) const OVERRIDE { |
| + return 0.5; |
| + } |
| +}; |
| + |
| +TEST_F(DataReductionProxyProtocolTest, OnResolveProxyHandler) { |
| + int load_flags = net::LOAD_NORMAL; |
| + GURL url("http://www.google.com/"); |
| + |
| + // Data reduction proxy |
| + net::ProxyInfo info1; |
| + info1.UseNamedProxy("proxy.googlezip.net:443"); |
|
bengr
2014/07/02 18:46:43
It would be better if we didn't have to rely on us
rcs
2014/07/02 22:53:13
Done.
|
| + |
| + // Other proxy |
| + net::ProxyInfo info2; |
| + info2.UseNamedProxy("proxy.com"); |
| + |
| + // Without DataCompressionProxyCriticalBypass Finch trial set, should never |
| + // bypass. |
| + OnResolveProxyHandler(url, load_flags, &info1); |
| + EXPECT_FALSE(info1.is_direct()); |
| + |
| + OnResolveProxyHandler(url, load_flags, &info2); |
| + EXPECT_FALSE(info2.is_direct()); |
| + |
| + load_flags |= net::LOAD_BYPASS_DATA_REDUCTION_PROXY; |
| + |
| + OnResolveProxyHandler(url, load_flags, &info1); |
| + EXPECT_FALSE(info1.is_direct()); |
| + |
| + OnResolveProxyHandler(url, load_flags, &info2); |
| + EXPECT_FALSE(info2.is_direct()); |
| + |
| + // With Finch trial set, should only bypass if LOAD flag is set and the |
| + // effective proxy is the data compression proxy. |
| + base::FieldTrialList field_trial_list(new BadEntropyProvider()); |
| + base::FieldTrialList::CreateFieldTrial("DataCompressionProxyRollout", |
| + "Enabled"); |
| + base::FieldTrialList::CreateFieldTrial("DataCompressionProxyCriticalBypass", |
| + "Enabled"); |
| + EXPECT_TRUE( |
| + DataReductionProxyParams::IsIncludedInCriticalPathBypassFieldTrial()); |
| + |
| + load_flags = net::LOAD_NORMAL; |
| + |
| + OnResolveProxyHandler(url, load_flags, &info1); |
| + EXPECT_FALSE(info1.is_direct()); |
| + |
| + OnResolveProxyHandler(url, load_flags, &info2); |
| + EXPECT_FALSE(info2.is_direct()); |
| + |
| + load_flags |= net::LOAD_BYPASS_DATA_REDUCTION_PROXY; |
| + |
| + OnResolveProxyHandler(url, load_flags, &info2); |
| + EXPECT_FALSE(info2.is_direct()); |
| + |
| +#if defined(SPDY_PROXY_AUTH_ORIGIN) |
| + OnResolveProxyHandler(url, load_flags, &info1); |
| + EXPECT_TRUE(info1.is_direct()); |
| +#endif |
| +} |
| + |
| } // namespace data_reduction_proxy |