| 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/md5.h" |
| 9 #include "base/metrics/field_trial.h" | 9 #include "base/metrics/field_trial.h" |
| 10 #include "base/metrics/histogram_samples.h" |
| 11 #include "base/metrics/statistics_recorder.h" |
| 10 #include "base/prefs/pref_registry_simple.h" | 12 #include "base/prefs/pref_registry_simple.h" |
| 11 #include "base/prefs/pref_service.h" | 13 #include "base/prefs/pref_service.h" |
| 12 #include "base/prefs/scoped_user_pref_update.h" | 14 #include "base/prefs/scoped_user_pref_update.h" |
| 13 #include "base/prefs/testing_pref_service.h" | 15 #include "base/prefs/testing_pref_service.h" |
| 14 #include "base/strings/string_number_conversions.h" | 16 #include "base/strings/string_number_conversions.h" |
| 15 #include "base/strings/utf_string_conversions.h" | 17 #include "base/strings/utf_string_conversions.h" |
| 16 #include "chrome/browser/net/spdyproxy/data_reduction_proxy_settings.h" | 18 #include "chrome/browser/net/spdyproxy/data_reduction_proxy_settings.h" |
| 17 #include "chrome/browser/net/spdyproxy/data_reduction_proxy_settings_android.h" | 19 #include "chrome/browser/net/spdyproxy/data_reduction_proxy_settings_android.h" |
| 18 #include "chrome/browser/prefs/proxy_prefs.h" | 20 #include "chrome/browser/prefs/proxy_prefs.h" |
| 19 #include "chrome/common/chrome_switches.h" | 21 #include "chrome/common/chrome_switches.h" |
| (...skipping 24 matching lines...) Expand all Loading... |
| 44 const char kProbeURLWithNoResponse[] = "http://no.org/"; | 46 const char kProbeURLWithNoResponse[] = "http://no.org/"; |
| 45 | 47 |
| 46 // Transform "normal"-looking headers (\n-separated) to the appropriate | 48 // Transform "normal"-looking headers (\n-separated) to the appropriate |
| 47 // input format for ParseRawHeaders (\0-separated). | 49 // input format for ParseRawHeaders (\0-separated). |
| 48 void HeadersToRaw(std::string* headers) { | 50 void HeadersToRaw(std::string* headers) { |
| 49 std::replace(headers->begin(), headers->end(), '\n', '\0'); | 51 std::replace(headers->begin(), headers->end(), '\n', '\0'); |
| 50 if (!headers->empty()) | 52 if (!headers->empty()) |
| 51 *headers += '\0'; | 53 *headers += '\0'; |
| 52 } | 54 } |
| 53 | 55 |
| 56 ProbeURLFetchResult FetchResult(bool enabled, bool success) { |
| 57 if (enabled) { |
| 58 if (success) |
| 59 return spdyproxy::SUCCEEDED_PROXY_ALREADY_ENABLED; |
| 60 else |
| 61 return spdyproxy::FAILED_PROXY_DISABLED; |
| 62 } else { |
| 63 if (success) |
| 64 return spdyproxy::SUCCEEDED_PROXY_ENABLED; |
| 65 else |
| 66 return spdyproxy::FAILED_PROXY_ALREADY_DISABLED; |
| 67 } |
| 68 } |
| 69 |
| 54 DataReductionProxySettingsTestBase::DataReductionProxySettingsTestBase() | 70 DataReductionProxySettingsTestBase::DataReductionProxySettingsTestBase() |
| 55 : testing::Test() { | 71 : testing::Test() { |
| 56 } | 72 } |
| 57 | 73 |
| 58 DataReductionProxySettingsTestBase::~DataReductionProxySettingsTestBase() {} | 74 DataReductionProxySettingsTestBase::~DataReductionProxySettingsTestBase() {} |
| 59 | 75 |
| 60 void DataReductionProxySettingsTestBase::AddProxyToCommandLine() { | 76 void DataReductionProxySettingsTestBase::AddProxyToCommandLine() { |
| 61 CommandLine::ForCurrentProcess()->AppendSwitchASCII( | 77 CommandLine::ForCurrentProcess()->AppendSwitchASCII( |
| 62 switches::kSpdyProxyAuthOrigin, kDataReductionProxyOrigin); | 78 switches::kSpdyProxyAuthOrigin, kDataReductionProxyOrigin); |
| 63 CommandLine::ForCurrentProcess()->AppendSwitchASCII( | 79 CommandLine::ForCurrentProcess()->AppendSwitchASCII( |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 112 template void | 128 template void |
| 113 DataReductionProxySettingsTestBase::ResetSettings<DataReductionProxySettings>(); | 129 DataReductionProxySettingsTestBase::ResetSettings<DataReductionProxySettings>(); |
| 114 template void | 130 template void |
| 115 DataReductionProxySettingsTestBase::ResetSettings< | 131 DataReductionProxySettingsTestBase::ResetSettings< |
| 116 DataReductionProxySettingsAndroid>(); | 132 DataReductionProxySettingsAndroid>(); |
| 117 | 133 |
| 118 template <class C> | 134 template <class C> |
| 119 void DataReductionProxySettingsTestBase::SetProbeResult( | 135 void DataReductionProxySettingsTestBase::SetProbeResult( |
| 120 const std::string& test_url, | 136 const std::string& test_url, |
| 121 const std::string& response, | 137 const std::string& response, |
| 138 ProbeURLFetchResult result, |
| 122 bool success, | 139 bool success, |
| 123 int expected_calls) { | 140 int expected_calls) { |
| 124 MockDataReductionProxySettings<C>* settings = | 141 MockDataReductionProxySettings<C>* settings = |
| 125 static_cast<MockDataReductionProxySettings<C>*>(settings_.get()); | 142 static_cast<MockDataReductionProxySettings<C>*>(settings_.get()); |
| 126 if (0 == expected_calls) { | 143 if (0 == expected_calls) { |
| 127 EXPECT_CALL(*settings, GetURLFetcher()).Times(0); | 144 EXPECT_CALL(*settings, GetURLFetcher()).Times(0); |
| 145 EXPECT_CALL(*settings, RecordProbeURLFetchResult(_)).Times(0); |
| 128 } else { | 146 } else { |
| 147 EXPECT_CALL(*settings, RecordProbeURLFetchResult(result)).Times(1); |
| 129 EXPECT_CALL(*settings, GetURLFetcher()) | 148 EXPECT_CALL(*settings, GetURLFetcher()) |
| 130 .Times(expected_calls) | 149 .Times(expected_calls) |
| 131 .WillRepeatedly(Return(new net::FakeURLFetcher( | 150 .WillRepeatedly(Return(new net::FakeURLFetcher( |
| 132 GURL(test_url), | 151 GURL(test_url), |
| 133 settings, | 152 settings, |
| 134 response, | 153 response, |
| 135 success ? net::HTTP_OK : net::HTTP_INTERNAL_SERVER_ERROR, | 154 success ? net::HTTP_OK : net::HTTP_INTERNAL_SERVER_ERROR, |
| 136 success ? net::URLRequestStatus::SUCCESS : | 155 success ? net::URLRequestStatus::SUCCESS : |
| 137 net::URLRequestStatus::FAILED))); | 156 net::URLRequestStatus::FAILED))); |
| 138 } | 157 } |
| 139 } | 158 } |
| 140 | 159 |
| 141 // Explicitly generate required instantiations. | 160 // Explicitly generate required instantiations. |
| 142 template void | 161 template void |
| 143 DataReductionProxySettingsTestBase::SetProbeResult<DataReductionProxySettings>( | 162 DataReductionProxySettingsTestBase::SetProbeResult<DataReductionProxySettings>( |
| 144 const std::string& test_url, | 163 const std::string& test_url, |
| 145 const std::string& response, | 164 const std::string& response, |
| 165 ProbeURLFetchResult result, |
| 146 bool success, | 166 bool success, |
| 147 int expected_calls); | 167 int expected_calls); |
| 148 template void | 168 template void |
| 149 DataReductionProxySettingsTestBase::SetProbeResult< | 169 DataReductionProxySettingsTestBase::SetProbeResult< |
| 150 DataReductionProxySettingsAndroid>(const std::string& test_url, | 170 DataReductionProxySettingsAndroid>(const std::string& test_url, |
| 151 const std::string& response, | 171 const std::string& response, |
| 172 ProbeURLFetchResult result, |
| 152 bool success, | 173 bool success, |
| 153 int expected_calls); | 174 int expected_calls); |
| 154 | 175 |
| 155 void DataReductionProxySettingsTestBase::CheckProxyPref( | 176 void DataReductionProxySettingsTestBase::CheckProxyPref( |
| 156 const std::string& expected_servers, | 177 const std::string& expected_servers, |
| 157 const std::string& expected_mode) { | 178 const std::string& expected_mode) { |
| 158 const base::DictionaryValue* dict = | 179 const base::DictionaryValue* dict = |
| 159 pref_service_.GetDictionary(prefs::kProxy); | 180 pref_service_.GetDictionary(prefs::kProxy); |
| 160 std::string mode; | 181 std::string mode; |
| 161 std::string server; | 182 std::string server; |
| (...skipping 15 matching lines...) Expand all Loading... |
| 177 ProxyModeToString(ProxyPrefs::MODE_FIXED_SERVERS)); | 198 ProxyModeToString(ProxyPrefs::MODE_FIXED_SERVERS)); |
| 178 } else { | 199 } else { |
| 179 CheckProxyPref(std::string(), ProxyModeToString(ProxyPrefs::MODE_SYSTEM)); | 200 CheckProxyPref(std::string(), ProxyModeToString(ProxyPrefs::MODE_SYSTEM)); |
| 180 } | 201 } |
| 181 } | 202 } |
| 182 | 203 |
| 183 void DataReductionProxySettingsTestBase::CheckProbe( | 204 void DataReductionProxySettingsTestBase::CheckProbe( |
| 184 bool initially_enabled, | 205 bool initially_enabled, |
| 185 const std::string& probe_url, | 206 const std::string& probe_url, |
| 186 const std::string& response, | 207 const std::string& response, |
| 187 bool request_success, | 208 bool request_succeeded, |
| 188 bool expected_enabled, | 209 bool expected_enabled, |
| 189 bool expected_restricted) { | 210 bool expected_restricted) { |
| 190 pref_service_.SetBoolean(prefs::kSpdyProxyAuthEnabled, initially_enabled); | 211 pref_service_.SetBoolean(prefs::kSpdyProxyAuthEnabled, initially_enabled); |
| 212 if (initially_enabled) |
| 213 settings_->enabled_by_user_ = true; |
| 191 settings_->restricted_by_carrier_ = false; | 214 settings_->restricted_by_carrier_ = false; |
| 192 SetProbeResult( | 215 SetProbeResult(probe_url, |
| 193 probe_url, response, request_success, initially_enabled ? 1 : 0); | 216 response, |
| 217 FetchResult(initially_enabled, |
| 218 request_succeeded && (response == "OK")), |
| 219 request_succeeded, |
| 220 initially_enabled ? 1 : 0); |
| 194 settings_->MaybeActivateDataReductionProxy(false); | 221 settings_->MaybeActivateDataReductionProxy(false); |
| 195 base::MessageLoop::current()->RunUntilIdle(); | 222 base::MessageLoop::current()->RunUntilIdle(); |
| 196 CheckProxyConfigs(expected_enabled, expected_restricted); | 223 CheckProxyConfigs(expected_enabled, expected_restricted); |
| 197 } | 224 } |
| 198 | 225 |
| 199 void DataReductionProxySettingsTestBase::CheckProbeOnIPChange( | 226 void DataReductionProxySettingsTestBase::CheckProbeOnIPChange( |
| 200 const std::string& probe_url, | 227 const std::string& probe_url, |
| 201 const std::string& response, | 228 const std::string& response, |
| 202 bool request_success, | 229 bool request_succeeded, |
| 203 bool expected_restricted) { | 230 bool expected_restricted) { |
| 204 SetProbeResult(probe_url, response, request_success, 1); | 231 SetProbeResult(probe_url, |
| 232 response, |
| 233 FetchResult(!settings_->restricted_by_carrier_, |
| 234 request_succeeded && (response == "OK")), |
| 235 request_succeeded, |
| 236 1); |
| 205 settings_->OnIPAddressChanged(); | 237 settings_->OnIPAddressChanged(); |
| 206 base::MessageLoop::current()->RunUntilIdle(); | 238 base::MessageLoop::current()->RunUntilIdle(); |
| 207 CheckProxyConfigs(true, expected_restricted); | 239 CheckProxyConfigs(true, expected_restricted); |
| 208 } | 240 } |
| 209 | 241 |
| 210 void DataReductionProxySettingsTestBase::CheckOnPrefChange( | 242 void DataReductionProxySettingsTestBase::CheckOnPrefChange( |
| 211 bool enabled, | 243 bool enabled, |
| 212 bool expected_enabled) { | 244 bool expected_enabled) { |
| 213 // Always have a sucessful probe for pref change tests. | 245 // Always have a sucessful probe for pref change tests. |
| 214 SetProbeResult( | 246 SetProbeResult(kProbeURLWithOKResponse, |
| 215 kProbeURLWithOKResponse, "OK", true, expected_enabled ? 1 : 0); | 247 "OK", |
| 248 FetchResult(enabled, true), |
| 249 true, |
| 250 expected_enabled ? 1 : 0); |
| 216 pref_service_.SetBoolean(prefs::kSpdyProxyAuthEnabled, enabled); | 251 pref_service_.SetBoolean(prefs::kSpdyProxyAuthEnabled, enabled); |
| 217 base::MessageLoop::current()->RunUntilIdle(); | 252 base::MessageLoop::current()->RunUntilIdle(); |
| 218 // Never expect the proxy to be restricted for pref change tests. | 253 // Never expect the proxy to be restricted for pref change tests. |
| 219 CheckProxyConfigs(expected_enabled, false); | 254 CheckProxyConfigs(expected_enabled, false); |
| 220 } | 255 } |
| 221 | 256 |
| 222 void DataReductionProxySettingsTestBase::CheckInitDataReductionProxy( | 257 void DataReductionProxySettingsTestBase::CheckInitDataReductionProxy( |
| 223 bool enabled_at_startup) { | 258 bool enabled_at_startup) { |
| 224 AddProxyToCommandLine(); | 259 AddProxyToCommandLine(); |
| 225 base::MessageLoopForUI loop; | 260 base::MessageLoopForUI loop; |
| 226 pref_service_.SetBoolean(prefs::kSpdyProxyAuthEnabled, enabled_at_startup); | 261 pref_service_.SetBoolean(prefs::kSpdyProxyAuthEnabled, enabled_at_startup); |
| 227 SetProbeResult( | 262 SetProbeResult(kProbeURLWithOKResponse, |
| 228 kProbeURLWithOKResponse, "OK", true, enabled_at_startup ? 1 : 0); | 263 "OK", |
| 264 FetchResult(enabled_at_startup, true), |
| 265 true, |
| 266 enabled_at_startup ? 1 : 0); |
| 229 settings_->InitDataReductionProxySettings(); | 267 settings_->InitDataReductionProxySettings(); |
| 230 base::MessageLoop::current()->RunUntilIdle(); | 268 base::MessageLoop::current()->RunUntilIdle(); |
| 231 if (enabled_at_startup) { | 269 if (enabled_at_startup) { |
| 232 CheckProxyConfigs(enabled_at_startup, false); | 270 CheckProxyConfigs(enabled_at_startup, false); |
| 233 } else { | 271 } else { |
| 234 // This presumes the proxy preference hadn't been set up by Chrome. | 272 // This presumes the proxy preference hadn't been set up by Chrome. |
| 235 CheckProxyPref(std::string(), std::string()); | 273 CheckProxyPref(std::string(), std::string()); |
| 236 } | 274 } |
| 237 } | 275 } |
| 238 | 276 |
| (...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 490 CheckProbe(true, kProbeURLWithNoResponse, "", false, true, true); | 528 CheckProbe(true, kProbeURLWithNoResponse, "", false, true, true); |
| 491 // The proxy is disabled initially. Probes should not be emitted to change | 529 // The proxy is disabled initially. Probes should not be emitted to change |
| 492 // state. | 530 // state. |
| 493 CheckProbe(false, kProbeURLWithOKResponse, "OK", true, false, false); | 531 CheckProbe(false, kProbeURLWithOKResponse, "OK", true, false, false); |
| 494 } | 532 } |
| 495 | 533 |
| 496 TEST_F(DataReductionProxySettingsTest, TestOnIPAddressChanged) { | 534 TEST_F(DataReductionProxySettingsTest, TestOnIPAddressChanged) { |
| 497 AddProxyToCommandLine(); | 535 AddProxyToCommandLine(); |
| 498 base::MessageLoopForUI loop; | 536 base::MessageLoopForUI loop; |
| 499 // The proxy is enabled initially. | 537 // The proxy is enabled initially. |
| 538 pref_service_.SetBoolean(prefs::kSpdyProxyAuthEnabled, true); |
| 539 settings_->spdy_proxy_auth_enabled_.Init( |
| 540 prefs::kSpdyProxyAuthEnabled, |
| 541 settings_->GetOriginalProfilePrefs()); |
| 500 settings_->enabled_by_user_ = true; | 542 settings_->enabled_by_user_ = true; |
| 501 settings_->restricted_by_carrier_ = false; | 543 settings_->restricted_by_carrier_ = false; |
| 502 settings_->SetProxyConfigs(true, false, true); | 544 settings_->SetProxyConfigs(true, false, true); |
| 503 // IP address change triggers a probe that succeeds. Proxy remains | 545 // IP address change triggers a probe that succeeds. Proxy remains |
| 504 // unrestricted. | 546 // unrestricted. |
| 505 CheckProbeOnIPChange(kProbeURLWithOKResponse, "OK", true, false); | 547 CheckProbeOnIPChange(kProbeURLWithOKResponse, "OK", true, false); |
| 506 // IP address change triggers a probe that fails. Proxy is restricted. | 548 // IP address change triggers a probe that fails. Proxy is restricted. |
| 507 CheckProbeOnIPChange(kProbeURLWithBadResponse, "Bad", true, true); | 549 CheckProbeOnIPChange(kProbeURLWithBadResponse, "Bad", true, true); |
| 508 // IP address change triggers a probe that fails. Proxy remains restricted. | 550 // IP address change triggers a probe that fails. Proxy remains restricted. |
| 509 CheckProbeOnIPChange(kProbeURLWithBadResponse, "Bad", true, true); | 551 CheckProbeOnIPChange(kProbeURLWithBadResponse, "Bad", true, true); |
| 510 // IP address change triggers a probe that succeed. Proxy is unrestricted. | 552 // IP address change triggers a probe that succeed. Proxy is unrestricted. |
| 511 CheckProbeOnIPChange(kProbeURLWithBadResponse, "OK", true, false); | 553 CheckProbeOnIPChange(kProbeURLWithBadResponse, "OK", true, false); |
| 512 } | 554 } |
| 513 | 555 |
| 514 TEST_F(DataReductionProxySettingsTest, TestOnProxyEnabledPrefChange) { | 556 TEST_F(DataReductionProxySettingsTest, TestOnProxyEnabledPrefChange) { |
| 515 AddProxyToCommandLine(); | 557 AddProxyToCommandLine(); |
| 516 settings_->InitPrefMembers(); | 558 settings_->InitPrefMembers(); |
| 517 base::MessageLoopForUI loop; | 559 base::MessageLoopForUI loop; |
| 518 // The proxy is enabled initially. | 560 // The proxy is enabled initially. |
| 519 settings_->enabled_by_user_ = true; | 561 settings_->enabled_by_user_ = true; |
| 520 settings_->SetProxyConfigs(true, false, true); | 562 settings_->SetProxyConfigs(true, false, true); |
| 521 // The pref is disabled, so correspondingly should be the proxy. | 563 // The pref is disabled, so correspondingly should be the proxy. |
| 522 CheckOnPrefChange(false, false); | 564 CheckOnPrefChange(false, false); |
| 523 // The pref is enabled, so correspondingly should be the proxy. | 565 // The pref is enabled, so correspondingly should be the proxy. |
| 524 CheckOnPrefChange(true, true); | 566 CheckOnPrefChange(true, true); |
| 525 } | 567 } |
| 526 | 568 |
| 527 TEST_F(DataReductionProxySettingsTest, TestInitDataReductionProxyOn) { | 569 TEST_F(DataReductionProxySettingsTest, TestInitDataReductionProxyOn) { |
| 570 MockSettings* settings = static_cast<MockSettings*>(settings_.get()); |
| 571 EXPECT_CALL(*settings, RecordStartupState(spdyproxy::PROXY_ENABLED)); |
| 528 CheckInitDataReductionProxy(true); | 572 CheckInitDataReductionProxy(true); |
| 529 } | 573 } |
| 530 | 574 |
| 531 TEST_F(DataReductionProxySettingsTest, TestInitDataReductionProxyOff) { | 575 TEST_F(DataReductionProxySettingsTest, TestInitDataReductionProxyOff) { |
| 532 // InitDataReductionProxySettings with the preference off will directly call | 576 // InitDataReductionProxySettings with the preference off will directly call |
| 533 // LogProxyState. | 577 // LogProxyState. |
| 534 MockSettings* settings = static_cast<MockSettings*>(settings_.get()); | 578 MockSettings* settings = static_cast<MockSettings*>(settings_.get()); |
| 535 EXPECT_CALL(*settings, LogProxyState(false, false, true)).Times(1); | 579 EXPECT_CALL(*settings, LogProxyState(false, false, true)).Times(1); |
| 580 EXPECT_CALL(*settings, RecordStartupState(spdyproxy::PROXY_DISABLED)); |
| 536 CheckInitDataReductionProxy(false); | 581 CheckInitDataReductionProxy(false); |
| 537 } | 582 } |
| 538 | 583 |
| 539 TEST_F(DataReductionProxySettingsTest, TestGetDailyContentLengths) { | 584 TEST_F(DataReductionProxySettingsTest, TestGetDailyContentLengths) { |
| 540 DataReductionProxySettings::ContentLengthList result = | 585 DataReductionProxySettings::ContentLengthList result = |
| 541 settings_->GetDailyContentLengths(prefs::kDailyHttpOriginalContentLength); | 586 settings_->GetDailyContentLengths(prefs::kDailyHttpOriginalContentLength); |
| 542 | 587 |
| 543 ASSERT_FALSE(result.empty()); | 588 ASSERT_FALSE(result.empty()); |
| 544 ASSERT_EQ(spdyproxy::kNumDaysInHistory, result.size()); | 589 ASSERT_EQ(spdyproxy::kNumDaysInHistory, result.size()); |
| 545 | 590 |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 609 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) { | 654 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(tests); ++i) { |
| 610 std::string headers(tests[i].headers); | 655 std::string headers(tests[i].headers); |
| 611 HeadersToRaw(&headers); | 656 HeadersToRaw(&headers); |
| 612 scoped_refptr<net::HttpResponseHeaders> parsed( | 657 scoped_refptr<net::HttpResponseHeaders> parsed( |
| 613 new net::HttpResponseHeaders(headers)); | 658 new net::HttpResponseHeaders(headers)); |
| 614 | 659 |
| 615 EXPECT_EQ(tests[i].expected_result, | 660 EXPECT_EQ(tests[i].expected_result, |
| 616 DataReductionProxySettings::WasFetchedViaProxy(parsed)); | 661 DataReductionProxySettings::WasFetchedViaProxy(parsed)); |
| 617 } | 662 } |
| 618 } | 663 } |
| 664 |
| 665 TEST_F(DataReductionProxySettingsTest, CheckInitMetricsWhenNotAllowed) { |
| 666 // No call to |AddProxyToCommandLine()| was made, so the proxy feature |
| 667 // should be unavailable. |
| 668 EXPECT_FALSE(DataReductionProxySettings::IsDataReductionProxyAllowed()); |
| 669 MockSettings* settings = static_cast<MockSettings*>(settings_.get()); |
| 670 EXPECT_CALL(*settings, RecordStartupState(spdyproxy::PROXY_NOT_AVAILABLE)); |
| 671 settings_->InitDataReductionProxySettings(); |
| 672 } |
| OLD | NEW |