Index: chrome/browser/net/pref_proxy_config_service_unittest.cc |
diff --git a/chrome/browser/net/pref_proxy_config_service_unittest.cc b/chrome/browser/net/pref_proxy_config_service_unittest.cc |
index 75b6f82e09824025835b9319c59d6dcac0007b38..c9e402f2f03f4c72d97c25b5d4c639b5d734871d 100644 |
--- a/chrome/browser/net/pref_proxy_config_service_unittest.cc |
+++ b/chrome/browser/net/pref_proxy_config_service_unittest.cc |
@@ -67,12 +67,14 @@ class PrefProxyConfigServiceTestBase : public TESTBASE { |
: ui_thread_(BrowserThread::UI, &loop_), |
io_thread_(BrowserThread::IO, &loop_) {} |
- virtual void Init(PrefService* pref_service) { |
+ virtual void Init(PrefService* pref_service, PrefService* fallback) { |
ASSERT_TRUE(pref_service); |
PrefProxyConfigService::RegisterPrefs(pref_service); |
+ if (fallback) |
+ PrefProxyConfigService::RegisterPrefs(fallback); |
fixed_config_.set_pac_url(GURL(kFixedPacUrl)); |
delegate_service_ = new TestProxyConfigService(fixed_config_); |
- proxy_config_tracker_ = new PrefProxyConfigTracker(pref_service); |
+ proxy_config_tracker_ = new PrefProxyConfigTracker(pref_service, fallback); |
proxy_config_service_.reset( |
new PrefProxyConfigService(proxy_config_tracker_.get(), |
delegate_service_)); |
@@ -99,11 +101,10 @@ class PrefProxyConfigServiceTest |
: public PrefProxyConfigServiceTestBase<testing::Test> { |
protected: |
virtual void SetUp() { |
- pref_service_.reset(new TestingPrefService()); |
- Init(pref_service_.get()); |
+ Init(&pref_service_, NULL); |
} |
- scoped_ptr<TestingPrefService> pref_service_; |
+ TestingPrefService pref_service_; |
}; |
TEST_F(PrefProxyConfigServiceTest, BaseConfiguration) { |
@@ -113,7 +114,7 @@ TEST_F(PrefProxyConfigServiceTest, BaseConfiguration) { |
} |
TEST_F(PrefProxyConfigServiceTest, DynamicPrefOverrides) { |
- pref_service_->SetManagedPref( |
+ pref_service_.SetManagedPref( |
prefs::kProxy, |
ProxyConfigDictionary::CreateFixedServers("http://example.com:3128", "")); |
loop_.RunAllPending(); |
@@ -127,7 +128,7 @@ TEST_F(PrefProxyConfigServiceTest, DynamicPrefOverrides) { |
net::ProxyServer::FromURI("http://example.com:3128", |
net::ProxyServer::SCHEME_HTTP)); |
- pref_service_->SetManagedPref(prefs::kProxy, |
+ pref_service_.SetManagedPref(prefs::kProxy, |
ProxyConfigDictionary::CreateAutoDetect()); |
loop_.RunAllPending(); |
@@ -161,7 +162,7 @@ TEST_F(PrefProxyConfigServiceTest, Observers) { |
EXPECT_CALL(observer, |
OnProxyConfigChanged(ProxyConfigMatches(pref_config))).Times(1); |
- pref_service_->SetManagedPref( |
+ pref_service_.SetManagedPref( |
prefs::kProxy, |
ProxyConfigDictionary::CreatePacScript(kFixedPacUrl)); |
loop_.RunAllPending(); |
@@ -179,7 +180,7 @@ TEST_F(PrefProxyConfigServiceTest, Observers) { |
// Clear the override should switch back to the fixed configuration. |
EXPECT_CALL(observer, |
OnProxyConfigChanged(ProxyConfigMatches(config3))).Times(1); |
- pref_service_->RemoveManagedPref(prefs::kProxy); |
+ pref_service_.RemoveManagedPref(prefs::kProxy); |
loop_.RunAllPending(); |
Mock::VerifyAndClearExpectations(&observer); |
@@ -195,6 +196,77 @@ TEST_F(PrefProxyConfigServiceTest, Observers) { |
proxy_config_service_->RemoveObserver(&observer); |
} |
+class PrefProxyConfigServiceFallbackTest |
+ : public PrefProxyConfigServiceTestBase<testing::Test> { |
+ protected: |
+ virtual void SetUp() { |
+ Init(&pref_service_, &fallback_pref_service_); |
+ } |
+ |
+ TestingPrefService pref_service_; |
+ TestingPrefService fallback_pref_service_; |
+}; |
+ |
+TEST_F(PrefProxyConfigServiceFallbackTest, NoFallback) { |
+ pref_service_.SetUserPref( |
+ prefs::kProxy, |
+ ProxyConfigDictionary::CreateFixedServers("http://example.com:3128", "")); |
+ loop_.RunAllPending(); |
+ |
+ net::ProxyConfig actual_config; |
+ proxy_config_service_->GetLatestProxyConfig(&actual_config); |
+ EXPECT_FALSE(actual_config.auto_detect()); |
+ EXPECT_EQ(net::ProxyConfig::ProxyRules::TYPE_SINGLE_PROXY, |
+ actual_config.proxy_rules().type); |
+ EXPECT_EQ(actual_config.proxy_rules().single_proxy, |
+ net::ProxyServer::FromURI("http://example.com:3128", |
+ net::ProxyServer::SCHEME_HTTP)); |
+} |
+ |
+TEST_F(PrefProxyConfigServiceFallbackTest, Fallback) { |
+ fallback_pref_service_.SetUserPref( |
+ prefs::kProxy, |
+ ProxyConfigDictionary::CreateFixedServers("http://example.com:3128", "")); |
+ loop_.RunAllPending(); |
+ |
+ net::ProxyConfig actual_config; |
+ proxy_config_service_->GetLatestProxyConfig(&actual_config); |
+ EXPECT_FALSE(actual_config.auto_detect()); |
+ EXPECT_EQ(net::ProxyConfig::ProxyRules::TYPE_SINGLE_PROXY, |
+ actual_config.proxy_rules().type); |
+ EXPECT_EQ(actual_config.proxy_rules().single_proxy, |
+ net::ProxyServer::FromURI("http://example.com:3128", |
+ net::ProxyServer::SCHEME_HTTP)); |
+} |
+ |
+TEST_F(PrefProxyConfigServiceFallbackTest, FallbackWithPolicy) { |
+ pref_service_.SetManagedPref( |
+ prefs::kProxy, |
+ ProxyConfigDictionary::CreateAutoDetect()); |
+ fallback_pref_service_.SetUserPref( |
+ prefs::kProxy, |
+ ProxyConfigDictionary::CreateFixedServers("http://example.com:3128", "")); |
+ loop_.RunAllPending(); |
+ |
+ net::ProxyConfig actual_config; |
+ proxy_config_service_->GetLatestProxyConfig(&actual_config); |
+ EXPECT_TRUE(actual_config.auto_detect()); |
+} |
+ |
+TEST_F(PrefProxyConfigServiceFallbackTest, FallbackPolicy) { |
+ fallback_pref_service_.SetManagedPref( |
+ prefs::kProxy, |
+ ProxyConfigDictionary::CreateFixedServers("http://example.com:3128", "")); |
+ pref_service_.SetUserPref( |
+ prefs::kProxy, |
+ ProxyConfigDictionary::CreateAutoDetect()); |
+ loop_.RunAllPending(); |
+ |
+ net::ProxyConfig actual_config; |
+ proxy_config_service_->GetLatestProxyConfig(&actual_config); |
+ EXPECT_TRUE(actual_config.auto_detect()); |
+} |
+ |
// Test parameter object for testing command line proxy configuration. |
struct CommandLineTestParams { |
// Explicit assignment operator, so testing::TestWithParam works with MSVC. |
@@ -247,7 +319,7 @@ class PrefProxyConfigServiceCommandLineTest |
} |
pref_service_.reset( |
PrefServiceMockBuilder().WithCommandLine(&command_line_).Create()); |
- Init(pref_service_.get()); |
+ Init(pref_service_.get(), NULL); |
} |
private: |