| Index: components/data_reduction_proxy/browser/data_reduction_proxy_settings_unittest.cc
|
| diff --git a/components/data_reduction_proxy/browser/data_reduction_proxy_settings_unittest.cc b/components/data_reduction_proxy/browser/data_reduction_proxy_settings_unittest.cc
|
| index 56778a758c22600453e90a93b8a8134107fc1a13..fcb78fe51030bff5bb92975352ec8dd064c4eeec 100644
|
| --- a/components/data_reduction_proxy/browser/data_reduction_proxy_settings_unittest.cc
|
| +++ b/components/data_reduction_proxy/browser/data_reduction_proxy_settings_unittest.cc
|
| @@ -8,6 +8,7 @@
|
| #include "base/md5.h"
|
| #include "base/message_loop/message_loop.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| +#include "components/data_reduction_proxy/browser/data_reduction_proxy_params.h"
|
| #include "components/data_reduction_proxy/browser/data_reduction_proxy_settings_test_utils.h"
|
| #include "components/data_reduction_proxy/common/data_reduction_proxy_pref_names.h"
|
| #include "components/data_reduction_proxy/common/data_reduction_proxy_switches.h"
|
| @@ -23,6 +24,9 @@ const char kDataReductionProxy[] = "https://foo.com:443/";
|
| const char kDataReductionProxyDev[] = "http://foo-dev.com:80";
|
| const char kDataReductionProxyFallback[] = "http://bar.com:80";
|
| const char kDataReductionProxyKey[] = "12345";
|
| +const char kDataReductionProxyAlt[] = "https://alt.com:443/";
|
| +const char kDataReductionProxyAltFallback[] = "http://alt2.com:80";
|
| +const char kDataReductionProxySSL[] = "http://ssl.com:80";
|
|
|
| const char kProbeURLWithOKResponse[] = "http://ok.org/";
|
| const char kProbeURLWithBadResponse[] = "http://bad.org/";
|
| @@ -39,13 +43,17 @@ class DataReductionProxySettingsTest
|
|
|
|
|
| TEST_F(DataReductionProxySettingsTest, TestAuthenticationInit) {
|
| - AddProxyToCommandLine();
|
| net::HttpAuthCache cache;
|
| + DataReductionProxyParams drp_params(
|
| + DataReductionProxyParams::kAllowed |
|
| + DataReductionProxyParams::kFallbackAllowed |
|
| + DataReductionProxyParams::kPromoAllowed);
|
| + drp_params.set_key(kDataReductionProxyKey);
|
| DataReductionProxySettings::InitDataReductionAuthentication(
|
| - &cache, kDataReductionProxyKey);
|
| - DataReductionProxySettings::DataReductionProxyList proxies =
|
| - DataReductionProxySettings::GetDataReductionProxies();
|
| - for (DataReductionProxySettings::DataReductionProxyList::iterator it =
|
| + &cache, &drp_params);
|
| + DataReductionProxyParams::DataReductionProxyList proxies =
|
| + drp_params.GetAllowedProxies();
|
| + for (DataReductionProxyParams::DataReductionProxyList::iterator it =
|
| proxies.begin(); it != proxies.end(); ++it) {
|
| net::HttpAuthCache::Entry* entry = cache.LookupByPath(*it,
|
| std::string("/"));
|
| @@ -60,53 +68,33 @@ TEST_F(DataReductionProxySettingsTest, TestAuthenticationInit) {
|
| }
|
|
|
| TEST_F(DataReductionProxySettingsTest, TestGetDataReductionProxyOrigin) {
|
| - AddProxyToCommandLine();
|
| // SetUp() adds the origin to the command line, which should be returned here.
|
| std::string result =
|
| - DataReductionProxySettings::GetDataReductionProxyOrigin();
|
| - EXPECT_EQ(kDataReductionProxy, result);
|
| + settings_->params()->origin().spec();
|
| + EXPECT_EQ(GURL(kDataReductionProxy), GURL(result));
|
| }
|
|
|
| TEST_F(DataReductionProxySettingsTest, TestGetDataReductionProxyDevOrigin) {
|
| - AddProxyToCommandLine();
|
| CommandLine::ForCurrentProcess()->AppendSwitchASCII(
|
| switches::kDataReductionProxyDev, kDataReductionProxyDev);
|
| + ResetSettings(true, true, false, true);
|
| std::string result =
|
| - DataReductionProxySettings::GetDataReductionProxyOrigin();
|
| - EXPECT_EQ(kDataReductionProxyDev, result);
|
| + settings_->params()->origin().spec();
|
| + EXPECT_EQ(GURL(kDataReductionProxyDev), GURL(result));
|
| }
|
|
|
| -TEST_F(DataReductionProxySettingsTest, TestGetDataReductionProxies) {
|
| - DataReductionProxySettings::DataReductionProxyList proxies =
|
| - DataReductionProxySettings::GetDataReductionProxies();
|
| -
|
| - unsigned int expected_proxy_size = 0u;
|
| -#if defined(SPDY_PROXY_AUTH_ORIGIN)
|
| - ++expected_proxy_size;
|
| -#endif
|
| -#if defined(DATA_REDUCTION_FALLBACK_HOST)
|
| - ++expected_proxy_size;
|
| -#endif
|
| -
|
| - EXPECT_EQ(expected_proxy_size, proxies.size());
|
| -
|
| - // Adding just the fallback on the command line shouldn't add a proxy unless
|
| - // there was already one compiled in.
|
| - CommandLine::ForCurrentProcess()->AppendSwitchASCII(
|
| - switches::kDataReductionProxyFallback, kDataReductionProxyFallback);
|
| - proxies = DataReductionProxySettings::GetDataReductionProxies();
|
| -
|
| - // So: if there weren't any proxies before, there still won't be.
|
| - // If there were one or two, there will be two now.
|
| - expected_proxy_size = expected_proxy_size == 0u ? 0u : 2u;
|
|
|
| +TEST_F(DataReductionProxySettingsTest, TestGetDataReductionProxies) {
|
| + DataReductionProxyParams drp_params(
|
| + DataReductionProxyParams::kAllowed |
|
| + DataReductionProxyParams::kFallbackAllowed |
|
| + DataReductionProxyParams::kPromoAllowed);
|
| + DataReductionProxyParams::DataReductionProxyList proxies =
|
| + drp_params.GetAllowedProxies();
|
| +
|
| + unsigned int expected_proxy_size = 2u;
|
| EXPECT_EQ(expected_proxy_size, proxies.size());
|
|
|
| - CommandLine::ForCurrentProcess()->AppendSwitchASCII(
|
| - switches::kDataReductionProxy, kDataReductionProxy);
|
| - proxies = DataReductionProxySettings::GetDataReductionProxies();
|
| - EXPECT_EQ(2u, proxies.size());
|
| -
|
| // Command line proxies have precedence, so even if there were other values
|
| // compiled in, these should be the ones in the list.
|
| EXPECT_EQ("foo.com", proxies[0].host());
|
| @@ -116,7 +104,6 @@ TEST_F(DataReductionProxySettingsTest, TestGetDataReductionProxies) {
|
| }
|
|
|
| TEST_F(DataReductionProxySettingsTest, TestAuthHashGeneration) {
|
| - AddProxyToCommandLine();
|
| std::string salt = "8675309"; // Jenny's number to test the hash generator.
|
| std::string salted_key = salt + kDataReductionProxyKey + salt;
|
| base::string16 expected_hash = base::UTF8ToUTF16(base::MD5String(salted_key));
|
| @@ -125,25 +112,55 @@ TEST_F(DataReductionProxySettingsTest, TestAuthHashGeneration) {
|
| 8675309, kDataReductionProxyKey));
|
| }
|
|
|
| -// Test that the auth key set by preprocessor directive is not used
|
| -// when an origin is set via a switch. This test only does anything useful in
|
| -// Chrome builds.
|
| -TEST_F(DataReductionProxySettingsTest,
|
| - TestAuthHashGenerationWithOriginSetViaSwitch) {
|
| +TEST_F(DataReductionProxySettingsTest, TestSetProxyConfigs) {
|
| CommandLine::ForCurrentProcess()->AppendSwitchASCII(
|
| - switches::kDataReductionProxy, kDataReductionProxy);
|
| - EXPECT_EQ(base::string16(),
|
| - DataReductionProxySettings::AuthHashForSalt(
|
| - 8675309, kDataReductionProxyKey));
|
| + switches::kDataReductionProxyAlt, kDataReductionProxyAlt);
|
| + CommandLine::ForCurrentProcess()->AppendSwitchASCII(
|
| + switches::kDataReductionProxyAltFallback, kDataReductionProxyAltFallback);
|
| + CommandLine::ForCurrentProcess()->AppendSwitchASCII(
|
| + switches::kDataReductionSSLProxy, kDataReductionProxySSL);
|
| + ResetSettings(true, true, true, true);
|
| + TestDataReductionProxyConfig* config =
|
| + static_cast<TestDataReductionProxyConfig*>(
|
| + settings_->configurator());
|
| +
|
| + settings_->SetProxyConfigs(true, true, false, false);
|
| + EXPECT_TRUE(config->enabled_);
|
| + EXPECT_TRUE(net::HostPortPair::FromString(kDataReductionProxyAlt).Equals(
|
| + net::HostPortPair::FromString(config->origin_)));
|
| + EXPECT_TRUE(
|
| + net::HostPortPair::FromString(kDataReductionProxyAltFallback).Equals(
|
| + net::HostPortPair::FromString(config->fallback_origin_)));
|
| + EXPECT_TRUE(net::HostPortPair::FromString(kDataReductionProxySSL).Equals(
|
| + net::HostPortPair::FromString(config->ssl_origin_)));
|
| +
|
| + settings_->SetProxyConfigs(true, false, false, false);
|
| + EXPECT_TRUE(config->enabled_);
|
| + EXPECT_TRUE(net::HostPortPair::FromString(kDataReductionProxy).Equals(
|
| + net::HostPortPair::FromString(config->origin_)));
|
| + EXPECT_TRUE(net::HostPortPair::FromString(kDataReductionProxyFallback).Equals(
|
| + net::HostPortPair::FromString(config->fallback_origin_)));
|
| + EXPECT_EQ("", config->ssl_origin_);
|
| +
|
| + settings_->SetProxyConfigs(false, true, false, false);
|
| + EXPECT_FALSE(config->enabled_);
|
| + EXPECT_EQ("", config->origin_);
|
| + EXPECT_EQ("", config->fallback_origin_);
|
| + EXPECT_EQ("", config->ssl_origin_);
|
| +
|
| + settings_->SetProxyConfigs(false, false, false, false);
|
| + EXPECT_FALSE(config->enabled_);
|
| + EXPECT_EQ("", config->origin_);
|
| + EXPECT_EQ("", config->fallback_origin_);
|
| + EXPECT_EQ("", config->ssl_origin_);
|
| }
|
|
|
| TEST_F(DataReductionProxySettingsTest, TestIsProxyEnabledOrManaged) {
|
| - AddProxyToCommandLine();
|
| settings_->InitPrefMembers();
|
| base::MessageLoopForUI loop;
|
| // The proxy is disabled initially.
|
| settings_->enabled_by_user_ = false;
|
| - settings_->SetProxyConfigs(false, false, false);
|
| + settings_->SetProxyConfigs(false, false, false, false);
|
|
|
| EXPECT_FALSE(settings_->IsDataReductionProxyEnabled());
|
| EXPECT_FALSE(settings_->IsDataReductionProxyManaged());
|
| @@ -158,7 +175,6 @@ TEST_F(DataReductionProxySettingsTest, TestIsProxyEnabledOrManaged) {
|
| }
|
|
|
| TEST_F(DataReductionProxySettingsTest, TestAcceptableChallenges) {
|
| - AddProxyToCommandLine();
|
| typedef struct {
|
| std::string host;
|
| std::string realm;
|
| @@ -185,13 +201,11 @@ TEST_F(DataReductionProxySettingsTest, TestAcceptableChallenges) {
|
| auth_info->challenger = net::HostPortPair::FromString(tests[i].host);
|
| auth_info->realm = tests[i].realm;
|
| EXPECT_EQ(tests[i].expected_to_succeed,
|
| - DataReductionProxySettings::IsAcceptableAuthChallenge(
|
| - auth_info.get()));
|
| + settings_->IsAcceptableAuthChallenge(auth_info.get()));
|
| }
|
| }
|
|
|
| TEST_F(DataReductionProxySettingsTest, TestChallengeTokens) {
|
| - AddProxyToCommandLine();
|
| typedef struct {
|
| std::string realm;
|
| bool expected_empty_token;
|
| @@ -281,14 +295,15 @@ TEST_F(DataReductionProxySettingsTest, TestContentLengths) {
|
| // TODO(marq): Add a test to verify that MaybeActivateDataReductionProxy
|
| // is called when the pref in |settings_| is enabled.
|
| TEST_F(DataReductionProxySettingsTest, TestMaybeActivateDataReductionProxy) {
|
| - AddProxyToCommandLine();
|
| -
|
| // Initialize the pref member in |settings_| without the usual callback
|
| // so it won't trigger MaybeActivateDataReductionProxy when the pref value
|
| // is set.
|
| settings_->spdy_proxy_auth_enabled_.Init(
|
| prefs::kDataReductionProxyEnabled,
|
| settings_->GetOriginalProfilePrefs());
|
| + settings_->data_reduction_proxy_alternative_enabled_.Init(
|
| + prefs::kDataReductionProxyAltEnabled,
|
| + settings_->GetOriginalProfilePrefs());
|
|
|
| // TODO(bengr): Test enabling/disabling while a probe is outstanding.
|
| base::MessageLoopForUI loop;
|
| @@ -305,16 +320,18 @@ TEST_F(DataReductionProxySettingsTest, TestMaybeActivateDataReductionProxy) {
|
| }
|
|
|
| TEST_F(DataReductionProxySettingsTest, TestOnIPAddressChanged) {
|
| - AddProxyToCommandLine();
|
| base::MessageLoopForUI loop;
|
| // The proxy is enabled initially.
|
| pref_service_.SetBoolean(prefs::kDataReductionProxyEnabled, true);
|
| settings_->spdy_proxy_auth_enabled_.Init(
|
| prefs::kDataReductionProxyEnabled,
|
| settings_->GetOriginalProfilePrefs());
|
| + settings_->data_reduction_proxy_alternative_enabled_.Init(
|
| + prefs::kDataReductionProxyAltEnabled,
|
| + settings_->GetOriginalProfilePrefs());
|
| settings_->enabled_by_user_ = true;
|
| settings_->restricted_by_carrier_ = false;
|
| - settings_->SetProxyConfigs(true, false, true);
|
| + settings_->SetProxyConfigs(true, false, false, true);
|
| // IP address change triggers a probe that succeeds. Proxy remains
|
| // unrestricted.
|
| CheckProbeOnIPChange(kProbeURLWithOKResponse, "OK", true, false, false);
|
| @@ -327,12 +344,11 @@ TEST_F(DataReductionProxySettingsTest, TestOnIPAddressChanged) {
|
| }
|
|
|
| TEST_F(DataReductionProxySettingsTest, TestOnProxyEnabledPrefChange) {
|
| - AddProxyToCommandLine();
|
| settings_->InitPrefMembers();
|
| base::MessageLoopForUI loop;
|
| // The proxy is enabled initially.
|
| settings_->enabled_by_user_ = true;
|
| - settings_->SetProxyConfigs(true, false, true);
|
| + settings_->SetProxyConfigs(true, false, false, true);
|
| // The pref is disabled, so correspondingly should be the proxy.
|
| CheckOnPrefChange(false, false, false);
|
| // The pref is enabled, so correspondingly should be the proxy.
|
| @@ -384,9 +400,12 @@ TEST_F(DataReductionProxySettingsTest, CheckInitMetricsWhenNotAllowed) {
|
| // No call to |AddProxyToCommandLine()| was made, so the proxy feature
|
| // should be unavailable.
|
| base::MessageLoopForUI loop;
|
| - DataReductionProxySettings::SetAllowed(false);
|
| - EXPECT_FALSE(DataReductionProxySettings::IsDataReductionProxyAllowed());
|
| + // Clear the command line. Setting flags can force the proxy to be allowed.
|
| + CommandLine::ForCurrentProcess()->InitFromArgv(0, NULL);
|
| +
|
| + ResetSettings(false, false, false, false);
|
| MockSettings* settings = static_cast<MockSettings*>(settings_.get());
|
| + EXPECT_FALSE(settings->params()->allowed());
|
| EXPECT_CALL(*settings, RecordStartupState(PROXY_NOT_AVAILABLE));
|
|
|
| scoped_ptr<DataReductionProxyConfigurator> configurator(
|
|
|