| OLD | NEW | 
|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "chrome/browser/net/spdyproxy/data_reduction_proxy_settings_unittest.h" | 5 #include "chrome/browser/net/spdyproxy/data_reduction_proxy_settings_unittest.h" | 
| 6 | 6 | 
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" | 
|  | 8 #include "base/md5.h" | 
| 8 #include "base/metrics/field_trial.h" | 9 #include "base/metrics/field_trial.h" | 
| 9 #include "base/prefs/pref_registry_simple.h" | 10 #include "base/prefs/pref_registry_simple.h" | 
| 10 #include "base/prefs/pref_service.h" | 11 #include "base/prefs/pref_service.h" | 
| 11 #include "base/prefs/testing_pref_service.h" | 12 #include "base/prefs/testing_pref_service.h" | 
| 12 #include "base/strings/string_number_conversions.h" | 13 #include "base/strings/string_number_conversions.h" | 
|  | 14 #include "base/strings/utf_string_conversions.h" | 
| 13 #include "chrome/browser/net/spdyproxy/data_reduction_proxy_settings.h" | 15 #include "chrome/browser/net/spdyproxy/data_reduction_proxy_settings.h" | 
| 14 #include "chrome/browser/prefs/proxy_prefs.h" | 16 #include "chrome/browser/prefs/proxy_prefs.h" | 
| 15 #include "chrome/browser/prefs/scoped_user_pref_update.h" | 17 #include "chrome/browser/prefs/scoped_user_pref_update.h" | 
| 16 #include "chrome/common/chrome_switches.h" | 18 #include "chrome/common/chrome_switches.h" | 
| 17 #include "chrome/common/metrics/variations/variations_util.h" | 19 #include "chrome/common/metrics/variations/variations_util.h" | 
| 18 #include "chrome/common/pref_names.h" | 20 #include "chrome/common/pref_names.h" | 
| 19 #include "components/variations/entropy_provider.h" | 21 #include "components/variations/entropy_provider.h" | 
|  | 22 #include "net/base/auth.h" | 
|  | 23 #include "net/base/host_port_pair.h" | 
|  | 24 #include "net/http/http_auth.h" | 
|  | 25 #include "net/http/http_auth_cache.h" | 
| 20 #include "net/url_request/test_url_fetcher_factory.h" | 26 #include "net/url_request/test_url_fetcher_factory.h" | 
| 21 #include "testing/gtest/include/gtest/gtest.h" | 27 #include "testing/gtest/include/gtest/gtest.h" | 
| 22 #include "url/gurl.h" | 28 #include "url/gurl.h" | 
| 23 | 29 | 
| 24 const char kDataReductionProxyOrigin[] = "https://foo:443/"; | 30 const char kDataReductionProxyOrigin[] = "https://foo.com:443/"; | 
|  | 31 const char kDataReductionProxyFallback[] = "http://bar.com:80"; | 
| 25 const char kDataReductionProxyAuth[] = "12345"; | 32 const char kDataReductionProxyAuth[] = "12345"; | 
| 26 | 33 | 
| 27 const char kProbeURLWithOKResponse[] = "http://ok.org/"; | 34 const char kProbeURLWithOKResponse[] = "http://ok.org/"; | 
| 28 const char kProbeURLWithBadResponse[] = "http://bad.org/"; | 35 const char kProbeURLWithBadResponse[] = "http://bad.org/"; | 
| 29 const char kProbeURLWithNoResponse[] = "http://no.org/"; | 36 const char kProbeURLWithNoResponse[] = "http://no.org/"; | 
| 30 | 37 | 
| 31 class TestDataReductionProxySettings | 38 class TestDataReductionProxySettings | 
| 32     : public DataReductionProxySettings { | 39     : public DataReductionProxySettings { | 
| 33  public: | 40  public: | 
| 34   TestDataReductionProxySettings(PrefService* profile_prefs, | 41   TestDataReductionProxySettings(PrefService* profile_prefs, | 
| 35                                  PrefService* local_state_prefs) | 42                                  PrefService* local_state_prefs) | 
| 36       : DataReductionProxySettings(), | 43       : DataReductionProxySettings(), | 
| 37         success_(false), | 44         success_(false), | 
| 38         fake_fetcher_request_count_(0), | 45         fake_fetcher_request_count_(0), | 
| 39         profile_prefs_(profile_prefs), | 46         profile_prefs_(profile_prefs), | 
| 40         local_state_prefs_(local_state_prefs) { | 47         local_state_prefs_(local_state_prefs) { | 
| 41   } | 48   } | 
| 42 | 49 | 
|  | 50   // TODO(marq): Replace virtual methods with MOCKs. Also mock LogProxyState. | 
| 43   // DataReductionProxySettings implementation: | 51   // DataReductionProxySettings implementation: | 
| 44   virtual net::URLFetcher* GetURLFetcher() OVERRIDE { | 52   virtual net::URLFetcher* GetURLFetcher() OVERRIDE { | 
| 45     if (test_url_.empty()) | 53     if (test_url_.empty()) | 
| 46       return NULL; | 54       return NULL; | 
| 47     net::URLFetcher* fetcher = | 55     net::URLFetcher* fetcher = | 
| 48         new net::FakeURLFetcher(GURL(test_url_), this, response_, success_); | 56         new net::FakeURLFetcher(GURL(test_url_), this, response_, success_); | 
| 49     fake_fetcher_request_count_++; | 57     fake_fetcher_request_count_++; | 
| 50     return fetcher; | 58     return fetcher; | 
| 51   } | 59   } | 
| 52 | 60 | 
| (...skipping 29 matching lines...) Expand all  Loading... | 
| 82 DataReductionProxySettingsTestBase::DataReductionProxySettingsTestBase() | 90 DataReductionProxySettingsTestBase::DataReductionProxySettingsTestBase() | 
| 83     : testing::Test() { | 91     : testing::Test() { | 
| 84 } | 92 } | 
| 85 | 93 | 
| 86 DataReductionProxySettingsTestBase::~DataReductionProxySettingsTestBase() {} | 94 DataReductionProxySettingsTestBase::~DataReductionProxySettingsTestBase() {} | 
| 87 | 95 | 
| 88 void DataReductionProxySettingsTestBase::AddProxyToCommandLine() { | 96 void DataReductionProxySettingsTestBase::AddProxyToCommandLine() { | 
| 89   CommandLine::ForCurrentProcess()->AppendSwitchASCII( | 97   CommandLine::ForCurrentProcess()->AppendSwitchASCII( | 
| 90       switches::kSpdyProxyAuthOrigin, kDataReductionProxyOrigin); | 98       switches::kSpdyProxyAuthOrigin, kDataReductionProxyOrigin); | 
| 91   CommandLine::ForCurrentProcess()->AppendSwitchASCII( | 99   CommandLine::ForCurrentProcess()->AppendSwitchASCII( | 
|  | 100       switches::kSpdyProxyAuthFallback, kDataReductionProxyFallback); | 
|  | 101   CommandLine::ForCurrentProcess()->AppendSwitchASCII( | 
| 92       switches::kSpdyProxyAuthValue, kDataReductionProxyAuth); | 102       switches::kSpdyProxyAuthValue, kDataReductionProxyAuth); | 
| 93 } | 103 } | 
| 94 | 104 | 
| 95 // testing::Test implementation: | 105 // testing::Test implementation: | 
| 96 void DataReductionProxySettingsTestBase::SetUp() { | 106 void DataReductionProxySettingsTestBase::SetUp() { | 
| 97   PrefRegistrySimple* registry = pref_service_.registry(); | 107   PrefRegistrySimple* registry = pref_service_.registry(); | 
| 98   registry->RegisterListPref(prefs::kDailyHttpOriginalContentLength); | 108   registry->RegisterListPref(prefs::kDailyHttpOriginalContentLength); | 
| 99   registry->RegisterListPref(prefs::kDailyHttpReceivedContentLength); | 109   registry->RegisterListPref(prefs::kDailyHttpReceivedContentLength); | 
| 100   registry->RegisterInt64Pref( | 110   registry->RegisterInt64Pref( | 
| 101       prefs::kDailyHttpContentLengthLastUpdateDate, 0L); | 111       prefs::kDailyHttpContentLengthLastUpdateDate, 0L); | 
| (...skipping 24 matching lines...) Expand all  Loading... | 
| 126   std::string server; | 136   std::string server; | 
| 127   dict->GetString("mode", &mode); | 137   dict->GetString("mode", &mode); | 
| 128   ASSERT_EQ(expected_mode, mode); | 138   ASSERT_EQ(expected_mode, mode); | 
| 129   dict->GetString("server", &server); | 139   dict->GetString("server", &server); | 
| 130   ASSERT_EQ(expected_servers, server); | 140   ASSERT_EQ(expected_servers, server); | 
| 131 } | 141 } | 
| 132 | 142 | 
| 133 void DataReductionProxySettingsTestBase::CheckProxyConfigs( | 143 void DataReductionProxySettingsTestBase::CheckProxyConfigs( | 
| 134     bool expected_enabled) { | 144     bool expected_enabled) { | 
| 135   if (expected_enabled) { | 145   if (expected_enabled) { | 
|  | 146     std::string main_proxy = kDataReductionProxyOrigin; | 
|  | 147     std::string fallback_proxy = kDataReductionProxyFallback; | 
| 136     std::string servers = | 148     std::string servers = | 
| 137       "http=" + Settings()->GetDataReductionProxyOrigin() + ",direct://;"; | 149         "http=" + main_proxy + "," + fallback_proxy + ",direct://;"; | 
| 138     CheckProxyPref(servers, | 150     CheckProxyPref(servers, | 
| 139                    ProxyModeToString(ProxyPrefs::MODE_FIXED_SERVERS)); | 151                    ProxyModeToString(ProxyPrefs::MODE_FIXED_SERVERS)); | 
| 140   } else { | 152   } else { | 
| 141     CheckProxyPref(std::string(), ProxyModeToString(ProxyPrefs::MODE_SYSTEM)); | 153     CheckProxyPref(std::string(), ProxyModeToString(ProxyPrefs::MODE_SYSTEM)); | 
| 142   } | 154   } | 
| 143 } | 155 } | 
| 144 | 156 | 
| 145 void DataReductionProxySettingsTestBase::CheckProbe(bool initially_enabled, | 157 void DataReductionProxySettingsTestBase::CheckProbe(bool initially_enabled, | 
| 146                                                 const std::string& probe_url, | 158                                                 const std::string& probe_url, | 
| 147                                                 const std::string& response, | 159                                                 const std::string& response, | 
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 207 | 219 | 
| 208   virtual void SetProbeResult(const std::string& test_url, | 220   virtual void SetProbeResult(const std::string& test_url, | 
| 209                               const std::string& response, | 221                               const std::string& response, | 
| 210                               bool success) OVERRIDE { | 222                               bool success) OVERRIDE { | 
| 211     settings_->set_probe_result(test_url, response, success); | 223     settings_->set_probe_result(test_url, response, success); | 
| 212   } | 224   } | 
| 213 | 225 | 
| 214   scoped_ptr<TestDataReductionProxySettings> settings_; | 226   scoped_ptr<TestDataReductionProxySettings> settings_; | 
| 215 }; | 227 }; | 
| 216 | 228 | 
|  | 229 TEST_F(DataReductionProxySettingsTest, TestAuthenticationInit) { | 
|  | 230   AddProxyToCommandLine(); | 
|  | 231   net::HttpAuthCache cache; | 
|  | 232   DataReductionProxySettings::InitDataReductionAuthentication(&cache); | 
|  | 233   DataReductionProxySettings::DataReductionProxyList proxies = | 
|  | 234       DataReductionProxySettings::GetDataReductionProxies(); | 
|  | 235   for (DataReductionProxySettings::DataReductionProxyList::iterator it = | 
|  | 236           proxies.begin();  it != proxies.end(); ++it) { | 
|  | 237     //GURL server = (*it).GetOrigin(); | 
|  | 238     net::HttpAuthCache::Entry* entry = | 
|  | 239         cache.LookupByPath(*it, std::string()); | 
|  | 240     EXPECT_TRUE(entry != NULL); | 
|  | 241     EXPECT_EQ(net::HttpAuth::AUTH_SCHEME_SPDYPROXY, entry->scheme()); | 
|  | 242     EXPECT_EQ("SpdyProxy", entry->auth_challenge().substr(0,9)); | 
|  | 243   } | 
|  | 244   GURL bad_server = GURL("https://bad.proxy.com/"); | 
|  | 245     net::HttpAuthCache::Entry* entry = | 
|  | 246         cache.LookupByPath(bad_server, std::string()); | 
|  | 247     EXPECT_TRUE(entry == NULL); | 
|  | 248 } | 
|  | 249 | 
| 217 TEST_F(DataReductionProxySettingsTest, TestGetDataReductionProxyOrigin) { | 250 TEST_F(DataReductionProxySettingsTest, TestGetDataReductionProxyOrigin) { | 
| 218   AddProxyToCommandLine(); | 251   AddProxyToCommandLine(); | 
| 219   // SetUp() adds the origin to the command line, which should be returned here. | 252   // SetUp() adds the origin to the command line, which should be returned here. | 
| 220   std::string result = settings_->GetDataReductionProxyOrigin(); | 253   std::string result = | 
|  | 254       DataReductionProxySettings::GetDataReductionProxyOrigin(); | 
| 221   EXPECT_EQ(kDataReductionProxyOrigin, result); | 255   EXPECT_EQ(kDataReductionProxyOrigin, result); | 
| 222 } | 256 } | 
| 223 | 257 | 
| 224 TEST_F(DataReductionProxySettingsTest, TestGetDataReductionProxyAuth) { | 258 TEST_F(DataReductionProxySettingsTest, TestGetDataReductionProxies) { | 
| 225   AddProxyToCommandLine(); | 259   DataReductionProxySettings::DataReductionProxyList proxies = | 
| 226   // SetUp() adds the auth string to the command line, which should be returned | 260       DataReductionProxySettings::GetDataReductionProxies(); | 
| 227   // here. | 261 | 
| 228   std::string result = settings_->GetDataReductionProxyAuth(); | 262   unsigned int expected_proxy_size = 0u; | 
| 229   EXPECT_EQ(kDataReductionProxyAuth, result); | 263 #if defined(SPDY_PROXY_AUTH_ORIGIN) | 
|  | 264   ++expected_proxy_size; | 
|  | 265 #endif | 
|  | 266 #if defined(DATA_REDUCTION_FALLBACK_HOST) | 
|  | 267   ++expected_proxy_size; | 
|  | 268 #endif | 
|  | 269 | 
|  | 270   EXPECT_EQ(expected_proxy_size, proxies.size()); | 
|  | 271 | 
|  | 272   // Adding just the fallback on the command line shouldn't add a proxy unless | 
|  | 273   // there was already one compiled in. | 
|  | 274   CommandLine::ForCurrentProcess()->AppendSwitchASCII( | 
|  | 275       switches::kSpdyProxyAuthFallback, kDataReductionProxyFallback); | 
|  | 276   proxies = DataReductionProxySettings::GetDataReductionProxies(); | 
|  | 277 | 
|  | 278   // So: if there weren't any proxies before, there still won't be. | 
|  | 279   // If there were one or two, there will be two now. | 
|  | 280   expected_proxy_size = expected_proxy_size == 0u ? 0u : 2u; | 
|  | 281 | 
|  | 282   EXPECT_EQ(expected_proxy_size, proxies.size()); | 
|  | 283 | 
|  | 284   CommandLine::ForCurrentProcess()->AppendSwitchASCII( | 
|  | 285     switches::kSpdyProxyAuthOrigin, kDataReductionProxyOrigin); | 
|  | 286   proxies = DataReductionProxySettings::GetDataReductionProxies(); | 
|  | 287   EXPECT_EQ(2u, proxies.size()); | 
|  | 288 | 
|  | 289   // Command line proxies have precedence, so even if there were other values | 
|  | 290   // compiled in, these should be the ones in the list. | 
|  | 291   EXPECT_EQ("foo.com", proxies[0].host()); | 
|  | 292   EXPECT_EQ(443 ,proxies[0].EffectiveIntPort()); | 
|  | 293   EXPECT_EQ("bar.com", proxies[1].host()); | 
|  | 294   EXPECT_EQ(80, proxies[1].EffectiveIntPort()); | 
| 230 } | 295 } | 
| 231 | 296 | 
| 232 // Test that the auth value set by preprocessor directive is not returned | 297 TEST_F(DataReductionProxySettingsTest, TestAuthHashGeneration) { | 
|  | 298   AddProxyToCommandLine(); | 
|  | 299   std::string salt = "8675309";  // Jenny's number to test the hash generator. | 
|  | 300   std::string salted_key = salt + kDataReductionProxyAuth + salt; | 
|  | 301   base::string16 expected_hash = UTF8ToUTF16(base::MD5String(salted_key)); | 
|  | 302   EXPECT_EQ(expected_hash, | 
|  | 303             DataReductionProxySettings::AuthHashForSalt(8675309)); | 
|  | 304 } | 
|  | 305 | 
|  | 306 // Test that the auth key set by preprocessor directive is not used | 
| 233 // when an origin is set via a switch. This test only does anything useful in | 307 // when an origin is set via a switch. This test only does anything useful in | 
| 234 // Chrome builds. | 308 // Chrome builds. | 
| 235 TEST_F(DataReductionProxySettingsTest, | 309 TEST_F(DataReductionProxySettingsTest, | 
| 236        TestGetDataReductionProxyAuthWithOriginSetViaSwitch) { | 310        TestAuthHashGenerationWithOriginSetViaSwitch) { | 
| 237   CommandLine::ForCurrentProcess()->AppendSwitchASCII( | 311   CommandLine::ForCurrentProcess()->AppendSwitchASCII( | 
| 238       switches::kSpdyProxyAuthOrigin, kDataReductionProxyOrigin); | 312       switches::kSpdyProxyAuthOrigin, kDataReductionProxyOrigin); | 
| 239   std::string result = settings_->GetDataReductionProxyAuth(); | 313   EXPECT_EQ(base::string16(), | 
| 240   EXPECT_EQ("", result); | 314             DataReductionProxySettings::AuthHashForSalt(8675309)); | 
| 241 } | 315 } | 
| 242 | 316 | 
|  | 317 | 
| 243 TEST_F(DataReductionProxySettingsTest, TestIsProxyEnabledOrManaged) { | 318 TEST_F(DataReductionProxySettingsTest, TestIsProxyEnabledOrManaged) { | 
| 244   settings_->InitPrefMembers(); | 319   settings_->InitPrefMembers(); | 
| 245   EXPECT_FALSE(settings_->IsDataReductionProxyEnabled()); | 320   EXPECT_FALSE(settings_->IsDataReductionProxyEnabled()); | 
| 246   EXPECT_FALSE(settings_->IsDataReductionProxyManaged()); | 321   EXPECT_FALSE(settings_->IsDataReductionProxyManaged()); | 
| 247 | 322 | 
| 248   pref_service_.SetBoolean(prefs::kSpdyProxyAuthEnabled, true); | 323   pref_service_.SetBoolean(prefs::kSpdyProxyAuthEnabled, true); | 
| 249   EXPECT_TRUE(settings_->IsDataReductionProxyEnabled()); | 324   EXPECT_TRUE(settings_->IsDataReductionProxyEnabled()); | 
| 250   EXPECT_FALSE(settings_->IsDataReductionProxyManaged()); | 325   EXPECT_FALSE(settings_->IsDataReductionProxyManaged()); | 
| 251 | 326 | 
| 252   pref_service_.SetManagedPref(prefs::kSpdyProxyAuthEnabled, | 327   pref_service_.SetManagedPref(prefs::kSpdyProxyAuthEnabled, | 
| 253                                base::Value::CreateBooleanValue(true)); | 328                                base::Value::CreateBooleanValue(true)); | 
| 254   EXPECT_TRUE(settings_->IsDataReductionProxyEnabled()); | 329   EXPECT_TRUE(settings_->IsDataReductionProxyEnabled()); | 
| 255   EXPECT_TRUE(settings_->IsDataReductionProxyManaged()); | 330   EXPECT_TRUE(settings_->IsDataReductionProxyManaged()); | 
| 256 } | 331 } | 
| 257 | 332 | 
|  | 333 | 
|  | 334 TEST_F(DataReductionProxySettingsTest, TestAcceptableChallenges) { | 
|  | 335   AddProxyToCommandLine(); | 
|  | 336   typedef struct { | 
|  | 337     std::string host; | 
|  | 338     std::string realm; | 
|  | 339     bool expected_to_succeed; | 
|  | 340   } challenge_test; | 
|  | 341 | 
|  | 342   challenge_test tests[] = { | 
|  | 343     {"foo.com:443", "", false},                 // 0. No realm. | 
|  | 344     {"foo.com:443", "xxx", false},              // 1. Wrong realm. | 
|  | 345     {"foo.com:443", "spdyproxy", false},        // 2. Case matters. | 
|  | 346     {"foo.com:443", "SpdyProxy", true},         // 3. OK. | 
|  | 347     {"foo.com:443", "SpdyProxy1234567", true},  // 4. OK | 
|  | 348     {"bar.com:80", "SpdyProxy1234567", true},   // 5. OK. | 
|  | 349     {"foo.com:443", "SpdyProxyxxx", true},      // 6. OK | 
|  | 350     {"", "SpdyProxy1234567", false},            // 7. No challenger. | 
|  | 351     {"xxx.net:443", "SpdyProxy1234567", false}, // 8. Wrong host. | 
|  | 352     {"foo.com", "SpdyProxy1234567", false},     // 9. No port. | 
|  | 353     {"foo.com:80", "SpdyProxy1234567", false},  // 10.Wrong port. | 
|  | 354     {"bar.com:81", "SpdyProxy1234567", false},  // 11.Wrong port. | 
|  | 355   }; | 
|  | 356 | 
|  | 357   for (int i = 0; i <= 11; ++i) { | 
|  | 358     scoped_refptr<net::AuthChallengeInfo> auth_info(new net::AuthChallengeInfo); | 
|  | 359     auth_info->challenger = net::HostPortPair::FromString(tests[i].host); | 
|  | 360     auth_info->realm = tests[i].realm; | 
|  | 361     EXPECT_EQ(tests[i].expected_to_succeed, | 
|  | 362               settings_->IsAcceptableAuthChallenge(auth_info.get())); | 
|  | 363   } | 
|  | 364 } | 
|  | 365 | 
|  | 366 TEST_F(DataReductionProxySettingsTest, TestChallengeTokens) { | 
|  | 367   AddProxyToCommandLine(); | 
|  | 368   typedef struct { | 
|  | 369     std::string realm; | 
|  | 370     bool expected_empty_token; | 
|  | 371   } token_test; | 
|  | 372 | 
|  | 373   token_test tests[] = { | 
|  | 374     {"", true},                  // 0. No realm. | 
|  | 375     {"xxx", true},               // 1. realm too short. | 
|  | 376     {"spdyproxy", true},         // 2. no salt. | 
|  | 377     {"SpdyProxyxxx", true},      // 3. Salt not an int. | 
|  | 378     {"SpdyProxy1234567", false}, // 4. OK | 
|  | 379   }; | 
|  | 380 | 
|  | 381   for (int i = 0; i <= 4; ++i) { | 
|  | 382     scoped_refptr<net::AuthChallengeInfo> auth_info(new net::AuthChallengeInfo); | 
|  | 383     auth_info->challenger = | 
|  | 384         net::HostPortPair::FromString(kDataReductionProxyOrigin); | 
|  | 385     auth_info->realm = tests[i].realm; | 
|  | 386     base::string16 token = settings_->GetTokenForAuthChallenge(auth_info.get()); | 
|  | 387     EXPECT_EQ(tests[i].expected_empty_token, token.empty()); | 
|  | 388   } | 
|  | 389 } | 
|  | 390 | 
| 258 TEST_F(DataReductionProxySettingsTest, TestResetDataReductionStatistics) { | 391 TEST_F(DataReductionProxySettingsTest, TestResetDataReductionStatistics) { | 
| 259   int64 original_content_length; | 392   int64 original_content_length; | 
| 260   int64 received_content_length; | 393   int64 received_content_length; | 
| 261   int64 last_update_time; | 394   int64 last_update_time; | 
| 262   settings_->ResetDataReductionStatistics(); | 395   settings_->ResetDataReductionStatistics(); | 
| 263   settings_->GetContentLengths(spdyproxy::kNumDaysInHistory, | 396   settings_->GetContentLengths(spdyproxy::kNumDaysInHistory, | 
| 264                                &original_content_length, | 397                                &original_content_length, | 
| 265                                &received_content_length, | 398                                &received_content_length, | 
| 266                                &last_update_time); | 399                                &last_update_time); | 
| 267   EXPECT_EQ(0L, original_content_length); | 400   EXPECT_EQ(0L, original_content_length); | 
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 408     "http://*bat.com" | 541     "http://*bat.com" | 
| 409   }; | 542   }; | 
| 410 | 543 | 
| 411   ASSERT_EQ(settings_->bypass_rules_.size(), 6u); | 544   ASSERT_EQ(settings_->bypass_rules_.size(), 6u); | 
| 412   int i = 0; | 545   int i = 0; | 
| 413   for (std::vector<std::string>::iterator it = settings_->bypass_rules_.begin(); | 546   for (std::vector<std::string>::iterator it = settings_->bypass_rules_.begin(); | 
| 414        it != settings_->bypass_rules_.end(); ++it) { | 547        it != settings_->bypass_rules_.end(); ++it) { | 
| 415     EXPECT_EQ(expected[i++], *it); | 548     EXPECT_EQ(expected[i++], *it); | 
| 416   } | 549   } | 
| 417 } | 550 } | 
| 418 |  | 
| OLD | NEW | 
|---|