Index: components/data_reduction_proxy/core/browser/data_reduction_proxy_config_unittest.cc |
diff --git a/components/data_reduction_proxy/core/browser/data_reduction_proxy_config_unittest.cc b/components/data_reduction_proxy/core/browser/data_reduction_proxy_config_unittest.cc |
index f6f522c1b7c1e2cc2e21014fc691cc11507761c6..6707d645ad6094088c5ea7c3602615ea4e8e0254 100644 |
--- a/components/data_reduction_proxy/core/browser/data_reduction_proxy_config_unittest.cc |
+++ b/components/data_reduction_proxy/core/browser/data_reduction_proxy_config_unittest.cc |
@@ -4,10 +4,13 @@ |
#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_config.h" |
+#include <vector> |
+ |
#include "base/command_line.h" |
#include "base/strings/string_util.h" |
#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_config_test_utils.h" |
#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_configurator_test_utils.h" |
+#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_mutable_config_values.h" |
#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_service.h" |
#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_test_utils.h" |
#include "components/data_reduction_proxy/core/common/data_reduction_proxy_event_creator.h" |
@@ -74,12 +77,8 @@ class DataReductionProxyConfigTest : public testing::Test { |
EXPECT_CALL(*config(), RecordSecureProxyCheckFetchResult(result)).Times(1); |
} |
- void CheckProxyConfigs(bool expected_enabled, |
- bool expected_restricted, |
- bool expected_fallback_restricted) { |
+ void CheckProxyConfigs(bool expected_enabled, bool expected_restricted) { |
ASSERT_EQ(expected_restricted, configurator()->restricted()); |
- ASSERT_EQ(expected_fallback_restricted, |
- configurator()->fallback_restricted()); |
ASSERT_EQ(expected_enabled, configurator()->enabled()); |
} |
@@ -110,7 +109,7 @@ class DataReductionProxyConfigTest : public testing::Test { |
testing::Invoke(&responder, &TestResponder::ExecuteCallback))); |
config()->OnIPAddressChanged(); |
test_context_->RunUntilIdle(); |
- CheckProxyConfigs(true, expected_restricted, expected_fallback_restricted); |
+ CheckProxyConfigs(true, expected_restricted); |
} |
void RunUntilIdle() { |
@@ -137,6 +136,12 @@ class DataReductionProxyConfigTest : public testing::Test { |
return expected_params_.get(); |
} |
+ DataReductionProxyEventCreator* event_creator() const { |
+ return test_context_->event_creator(); |
+ } |
+ |
+ net::NetLog* net_log() const { return test_context_->net_log(); } |
+ |
private: |
base::MessageLoopForIO message_loop_; |
scoped_ptr<DataReductionProxyTestContext> test_context_; |
@@ -156,42 +161,42 @@ TEST_F(DataReductionProxyConfigTest, TestUpdateConfigurator) { |
config()->UpdateConfigurator(true, true, false, false); |
EXPECT_TRUE(configurator()->enabled()); |
- EXPECT_EQ( |
- net::ProxyServer::FromURI( |
- params()->DefaultAltOrigin(), |
- net::ProxyServer::SCHEME_HTTP), |
- net::ProxyServer::FromURI(configurator()->origin(), |
- net::ProxyServer::SCHEME_HTTP)); |
- EXPECT_TRUE(net::ProxyServer::FromURI( |
- params()->DefaultAltFallbackOrigin(), |
- net::ProxyServer::SCHEME_HTTP).is_valid()); |
- EXPECT_TRUE(configurator()->fallback_origin().empty()); |
- EXPECT_EQ(net::ProxyServer::FromURI(params()->DefaultSSLOrigin(), |
- net::ProxyServer::SCHEME_HTTP), |
- net::ProxyServer::FromURI(configurator()->ssl_origin(), |
- net::ProxyServer::SCHEME_HTTP)); |
+ std::vector<net::ProxyServer> expected_http_proxies; |
+ expected_http_proxies.push_back(net::ProxyServer::FromURI( |
+ params()->DefaultAltOrigin(), net::ProxyServer::SCHEME_HTTP)); |
+ std::vector<net::ProxyServer> expected_https_proxies; |
+ expected_https_proxies.push_back(net::ProxyServer::FromURI( |
+ params()->DefaultSSLOrigin(), net::ProxyServer::SCHEME_HTTP)); |
+ EXPECT_TRUE( |
+ net::ProxyServer::FromURI(params()->DefaultAltFallbackOrigin(), |
+ net::ProxyServer::SCHEME_HTTP).is_valid()); |
+ EXPECT_THAT(expected_http_proxies, |
+ testing::ContainerEq(configurator()->proxies_for_http())); |
+ EXPECT_THAT(expected_https_proxies, |
+ testing::ContainerEq(configurator()->proxies_for_https())); |
config()->UpdateConfigurator(true, false, false, false); |
+ expected_http_proxies.clear(); |
+ expected_https_proxies.clear(); |
EXPECT_TRUE(configurator()->enabled()); |
- EXPECT_TRUE( |
- net::HostPortPair::FromString(params()->DefaultOrigin()) |
- .Equals(net::HostPortPair::FromString(configurator()->origin()))); |
- EXPECT_TRUE(net::HostPortPair::FromString(params()->DefaultFallbackOrigin()) |
- .Equals(net::HostPortPair::FromString( |
- configurator()->fallback_origin()))); |
- EXPECT_TRUE(configurator()->ssl_origin().empty()); |
+ expected_http_proxies.push_back(net::ProxyServer::FromURI( |
+ params()->DefaultOrigin(), net::ProxyServer::SCHEME_HTTP)); |
+ expected_http_proxies.push_back(net::ProxyServer::FromURI( |
+ params()->DefaultFallbackOrigin(), net::ProxyServer::SCHEME_HTTP)); |
+ EXPECT_THAT(expected_http_proxies, |
+ testing::ContainerEq(configurator()->proxies_for_http())); |
+ EXPECT_THAT(expected_https_proxies, |
+ testing::ContainerEq(configurator()->proxies_for_https())); |
config()->UpdateConfigurator(false, true, false, false); |
EXPECT_FALSE(configurator()->enabled()); |
- EXPECT_TRUE(configurator()->origin().empty()); |
- EXPECT_TRUE(configurator()->fallback_origin().empty()); |
- EXPECT_TRUE(configurator()->ssl_origin().empty()); |
+ EXPECT_TRUE(configurator()->proxies_for_http().empty()); |
+ EXPECT_TRUE(configurator()->proxies_for_https().empty()); |
config()->UpdateConfigurator(false, false, false, false); |
EXPECT_FALSE(configurator()->enabled()); |
- EXPECT_TRUE(configurator()->origin().empty()); |
- EXPECT_TRUE(configurator()->fallback_origin().empty()); |
- EXPECT_TRUE(configurator()->ssl_origin().empty()); |
+ EXPECT_TRUE(configurator()->proxies_for_http().empty()); |
+ EXPECT_TRUE(configurator()->proxies_for_https().empty()); |
} |
TEST_F(DataReductionProxyConfigTest, TestUpdateConfiguratorHoldback) { |
@@ -199,9 +204,8 @@ TEST_F(DataReductionProxyConfigTest, TestUpdateConfiguratorHoldback) { |
config()->UpdateConfigurator(true, true, false, false); |
EXPECT_FALSE(configurator()->enabled()); |
- EXPECT_EQ("", configurator()->origin()); |
- EXPECT_EQ("", configurator()->fallback_origin()); |
- EXPECT_EQ("", configurator()->ssl_origin()); |
+ EXPECT_TRUE(configurator()->proxies_for_http().empty()); |
+ EXPECT_TRUE(configurator()->proxies_for_https().empty()); |
} |
TEST_F(DataReductionProxyConfigTest, TestOnIPAddressChanged) { |
@@ -236,7 +240,7 @@ TEST_F(DataReductionProxyConfigTest, TestOnIPAddressChanged) { |
)); |
config()->OnIPAddressChanged(); |
RunUntilIdle(); |
- CheckProxyConfigs(false, false, false); |
+ CheckProxyConfigs(false, false); |
// Check that the proxy is re-enabled if a non-VPN connection is later used. |
config()->interfaces()->clear(); |
@@ -291,7 +295,7 @@ TEST_F(DataReductionProxyConfigTest, |
)); |
config()->OnIPAddressChanged(); |
RunUntilIdle(); |
- CheckProxyConfigs(false, false, false); |
+ CheckProxyConfigs(false, false); |
// Check that the proxy is re-enabled if a non-VPN connection is later used. |
config()->interfaces()->clear(); |
@@ -777,4 +781,308 @@ TEST_F(DataReductionProxyConfigTest, AreProxiesBypassedRetryDelay) { |
EXPECT_EQ(delay, min_retry_delay); |
} |
+TEST_F(DataReductionProxyConfigTest, IsDataReductionProxyWithParams) { |
+ const struct { |
+ net::HostPortPair host_port_pair; |
+ bool fallback_allowed; |
+ bool alt_fallback_allowed; |
+ bool set_dev_origin; |
+ bool expected_result; |
+ net::HostPortPair expected_first; |
+ net::HostPortPair expected_second; |
+ bool expected_is_fallback; |
+ bool expected_is_alternative; |
+ bool expected_is_ssl; |
+ } tests[] = { |
+ {net::ProxyServer::FromURI(TestDataReductionProxyParams::DefaultOrigin(), |
+ net::ProxyServer::SCHEME_HTTP) |
+ .host_port_pair(), |
+ true, |
+ true, |
+ false, |
+ true, |
+ net::ProxyServer::FromURI(TestDataReductionProxyParams::DefaultOrigin(), |
+ net::ProxyServer::SCHEME_HTTP) |
+ .host_port_pair(), |
+ net::ProxyServer::FromURI( |
+ TestDataReductionProxyParams::DefaultFallbackOrigin(), |
+ net::ProxyServer::SCHEME_HTTP).host_port_pair(), |
+ false, |
+ false, |
+ false}, |
+ {net::ProxyServer::FromURI(TestDataReductionProxyParams::DefaultOrigin(), |
+ net::ProxyServer::SCHEME_HTTP) |
+ .host_port_pair(), |
+ false, |
+ false, |
+ false, |
+ true, |
+ net::ProxyServer::FromURI(TestDataReductionProxyParams::DefaultOrigin(), |
+ net::ProxyServer::SCHEME_HTTP) |
+ .host_port_pair(), |
+ net::HostPortPair::FromURL(GURL()), |
+ false, |
+ false, |
+ false}, |
+ {net::ProxyServer::FromURI( |
+ TestDataReductionProxyParams::DefaultFallbackOrigin(), |
+ net::ProxyServer::SCHEME_HTTP).host_port_pair(), |
+ true, |
+ true, |
+ false, |
+ true, |
+ net::ProxyServer::FromURI( |
+ TestDataReductionProxyParams::DefaultFallbackOrigin(), |
+ net::ProxyServer::SCHEME_HTTP).host_port_pair(), |
+ net::HostPortPair::FromURL(GURL()), |
+ true, |
+ false, |
+ false}, |
+ {net::ProxyServer::FromURI( |
+ TestDataReductionProxyParams::DefaultFallbackOrigin(), |
+ net::ProxyServer::SCHEME_HTTP).host_port_pair(), |
+ false, |
+ false, |
+ false, |
+ false, |
+ net::HostPortPair::FromURL(GURL()), |
+ net::HostPortPair::FromURL(GURL()), |
+ false, |
+ false, |
+ false}, |
+ {net::ProxyServer::FromURI( |
+ TestDataReductionProxyParams::DefaultAltOrigin(), |
+ net::ProxyServer::SCHEME_HTTP).host_port_pair(), |
+ true, |
+ true, |
+ false, |
+ true, |
+ net::ProxyServer::FromURI( |
+ TestDataReductionProxyParams::DefaultAltOrigin(), |
+ net::ProxyServer::SCHEME_HTTP).host_port_pair(), |
+ net::ProxyServer::FromURI( |
+ TestDataReductionProxyParams::DefaultAltFallbackOrigin(), |
+ net::ProxyServer::SCHEME_HTTP).host_port_pair(), |
+ false, |
+ true, |
+ false}, |
+ {net::ProxyServer::FromURI( |
+ TestDataReductionProxyParams::DefaultAltOrigin(), |
+ net::ProxyServer::SCHEME_HTTP).host_port_pair(), |
+ false, |
+ false, |
+ false, |
+ true, |
+ net::ProxyServer::FromURI( |
+ TestDataReductionProxyParams::DefaultAltOrigin(), |
+ net::ProxyServer::SCHEME_HTTP).host_port_pair(), |
+ net::HostPortPair::FromURL(GURL()), |
+ false, |
+ true, |
+ false}, |
+ {net::ProxyServer::FromURI( |
+ TestDataReductionProxyParams::DefaultAltFallbackOrigin(), |
+ net::ProxyServer::SCHEME_HTTP).host_port_pair(), |
+ true, |
+ true, |
+ false, |
+ true, |
+ net::ProxyServer::FromURI( |
+ TestDataReductionProxyParams::DefaultAltFallbackOrigin(), |
+ net::ProxyServer::SCHEME_HTTP).host_port_pair(), |
+ net::HostPortPair::FromURL(GURL()), |
+ true, |
+ true, |
+ false}, |
+ {net::ProxyServer::FromURI( |
+ TestDataReductionProxyParams::DefaultAltFallbackOrigin(), |
+ net::ProxyServer::SCHEME_HTTP).host_port_pair(), |
+ false, |
+ false, |
+ false, |
+ false, |
+ net::HostPortPair::FromURL(GURL()), |
+ net::HostPortPair::FromURL(GURL()), |
+ false, |
+ false, |
+ false}, |
+ {net::ProxyServer::FromURI( |
+ TestDataReductionProxyParams::DefaultSSLOrigin(), |
+ net::ProxyServer::SCHEME_HTTP).host_port_pair(), |
+ true, |
+ true, |
+ false, |
+ true, |
+ net::ProxyServer::FromURI( |
+ TestDataReductionProxyParams::DefaultSSLOrigin(), |
+ net::ProxyServer::SCHEME_HTTP).host_port_pair(), |
+ net::HostPortPair::FromURL(GURL()), |
+ false, |
+ true, |
+ true}, |
+ {net::ProxyServer::FromURI( |
+ TestDataReductionProxyParams::DefaultDevOrigin(), |
+ net::ProxyServer::SCHEME_HTTP).host_port_pair(), |
+ true, |
+ true, |
+ true, |
+ true, |
+ net::ProxyServer::FromURI( |
+ TestDataReductionProxyParams::DefaultDevOrigin(), |
+ net::ProxyServer::SCHEME_HTTP).host_port_pair(), |
+ net::ProxyServer::FromURI( |
+ TestDataReductionProxyParams::DefaultDevFallbackOrigin(), |
+ net::ProxyServer::SCHEME_HTTP).host_port_pair(), |
+ false, |
+ false, |
+ false}, |
+ {net::ProxyServer::FromURI(TestDataReductionProxyParams::DefaultOrigin(), |
+ net::ProxyServer::SCHEME_HTTP) |
+ .host_port_pair(), |
+ true, |
+ true, |
+ true, |
+ false, |
+ net::HostPortPair::FromURL(GURL()), |
+ net::HostPortPair::FromURL(GURL()), |
+ false, |
+ false, |
+ false}, |
+ }; |
+ for (size_t i = 0; i < arraysize(tests); ++i) { |
+ int flags = DataReductionProxyParams::kAllowed | |
+ DataReductionProxyParams::kAlternativeAllowed; |
+ if (tests[i].fallback_allowed) |
+ flags |= DataReductionProxyParams::kFallbackAllowed; |
+ if (tests[i].alt_fallback_allowed) |
+ flags |= DataReductionProxyParams::kAlternativeFallbackAllowed; |
+ unsigned int has_definitions = TestDataReductionProxyParams::HAS_EVERYTHING; |
+ if (!tests[i].set_dev_origin) { |
+ has_definitions &= ~TestDataReductionProxyParams::HAS_DEV_ORIGIN; |
+ has_definitions &= ~TestDataReductionProxyParams::HAS_DEV_FALLBACK_ORIGIN; |
+ } |
+ scoped_ptr<TestDataReductionProxyParams> params( |
+ new TestDataReductionProxyParams(flags, has_definitions)); |
+ DataReductionProxyTypeInfo proxy_type_info; |
+ scoped_ptr<DataReductionProxyConfig> config(new DataReductionProxyConfig( |
+ net_log(), params.Pass(), configurator(), event_creator())); |
+ EXPECT_EQ( |
+ tests[i].expected_result, |
+ config->IsDataReductionProxy(tests[i].host_port_pair, &proxy_type_info)) |
+ << i; |
+ EXPECT_EQ( |
+ net::ProxyServer::FromURI(tests[i].expected_first.ToString(), |
+ net::ProxyServer::SCHEME_HTTP).is_valid(), |
+ proxy_type_info.proxy_servers.size() >= 1 && |
+ proxy_type_info.proxy_servers[0].is_valid()) |
+ << i; |
+ if (proxy_type_info.proxy_servers.size() >= 1 && |
+ proxy_type_info.proxy_servers[0].is_valid()) { |
+ EXPECT_TRUE(tests[i].expected_first.Equals( |
+ proxy_type_info.proxy_servers[0].host_port_pair())) |
+ << i; |
+ } |
+ EXPECT_EQ( |
+ net::ProxyServer::FromURI(tests[i].expected_second.ToString(), |
+ net::ProxyServer::SCHEME_HTTP).is_valid(), |
+ proxy_type_info.proxy_servers.size() >= 2 && |
+ proxy_type_info.proxy_servers[1].is_valid()) |
+ << i; |
+ if (proxy_type_info.proxy_servers.size() >= 2 && |
+ proxy_type_info.proxy_servers[1].is_valid()) { |
+ EXPECT_TRUE(tests[i].expected_second.Equals( |
+ proxy_type_info.proxy_servers[1].host_port_pair())) |
+ << i; |
+ } |
+ |
+ EXPECT_EQ(tests[i].expected_is_fallback, proxy_type_info.is_fallback) << i; |
+ EXPECT_EQ(tests[i].expected_is_alternative, proxy_type_info.is_alternative) |
+ << i; |
+ EXPECT_EQ(tests[i].expected_is_ssl, proxy_type_info.is_ssl) << i; |
+ } |
+} |
+ |
+TEST_F(DataReductionProxyConfigTest, IsDataReductionProxyWithMutableConfig) { |
+ std::vector<net::ProxyServer> proxies_for_http; |
+ proxies_for_http.push_back(net::ProxyServer::FromURI( |
+ "https://origin.net:443", net::ProxyServer::SCHEME_HTTP)); |
+ proxies_for_http.push_back(net::ProxyServer::FromURI( |
+ "http://origin.net:80", net::ProxyServer::SCHEME_HTTP)); |
+ proxies_for_http.push_back(net::ProxyServer::FromURI( |
+ "quic://anotherorigin.net:443", net::ProxyServer::SCHEME_HTTP)); |
+ const struct { |
+ net::HostPortPair host_port_pair; |
+ bool expected_result; |
+ net::ProxyServer expected_first; |
+ net::ProxyServer expected_second; |
+ net::ProxyServer expected_third; |
+ bool expected_is_fallback; |
+ } tests[] = { |
+ { |
+ proxies_for_http[0].host_port_pair(), |
+ true, |
+ proxies_for_http[0], |
+ proxies_for_http[1], |
+ proxies_for_http[2], |
+ false, |
+ }, |
+ { |
+ proxies_for_http[1].host_port_pair(), |
+ true, |
+ proxies_for_http[1], |
+ proxies_for_http[2], |
+ net::ProxyServer(), |
+ true, |
+ }, |
+ { |
+ proxies_for_http[2].host_port_pair(), |
+ true, |
+ proxies_for_http[2], |
+ net::ProxyServer(), |
+ net::ProxyServer(), |
+ true, |
+ }, |
+ { |
+ net::HostPortPair(), |
+ false, |
+ net::ProxyServer(), |
+ net::ProxyServer(), |
+ net::ProxyServer(), |
+ false, |
+ }, |
+ { |
+ net::HostPortPair::FromString("https://otherorigin.net:443"), |
+ false, |
+ net::ProxyServer(), |
+ net::ProxyServer(), |
+ net::ProxyServer(), |
+ false, |
+ }, |
+ }; |
+ |
+ scoped_ptr<DataReductionProxyMutableConfigValues> config_values = |
+ DataReductionProxyMutableConfigValues::CreateFromParams(params()); |
+ config_values->UpdateValues(proxies_for_http); |
+ scoped_ptr<DataReductionProxyConfig> config(new DataReductionProxyConfig( |
+ net_log(), config_values.Pass(), configurator(), event_creator())); |
+ for (size_t i = 0; i < arraysize(tests); ++i) { |
+ DataReductionProxyTypeInfo proxy_type_info; |
+ EXPECT_EQ(tests[i].expected_result, |
+ config->IsDataReductionProxy(tests[i].host_port_pair, |
+ &proxy_type_info)); |
+ std::vector<net::ProxyServer> expected_proxy_servers; |
+ if (tests[i].expected_first.is_valid()) |
+ expected_proxy_servers.push_back(tests[i].expected_first); |
+ if (tests[i].expected_second.is_valid()) |
+ expected_proxy_servers.push_back(tests[i].expected_second); |
+ if (tests[i].expected_third.is_valid()) |
+ expected_proxy_servers.push_back(tests[i].expected_third); |
+ EXPECT_THAT(proxy_type_info.proxy_servers, |
+ testing::ContainerEq(expected_proxy_servers)) |
+ << i; |
+ EXPECT_FALSE(proxy_type_info.is_alternative) << i; |
+ EXPECT_FALSE(proxy_type_info.is_ssl) << i; |
+ } |
+} |
+ |
} // namespace data_reduction_proxy |