| Index: components/proxy_config/pref_proxy_config_tracker_impl_unittest.cc
|
| diff --git a/components/proxy_config/pref_proxy_config_tracker_impl_unittest.cc b/components/proxy_config/pref_proxy_config_tracker_impl_unittest.cc
|
| index b0fd11edca0aaf4f717ee9c8fa8e6c735646dff0..b0fd3b51326f4d4795973788f618de8f45fc06a2 100644
|
| --- a/components/proxy_config/pref_proxy_config_tracker_impl_unittest.cc
|
| +++ b/components/proxy_config/pref_proxy_config_tracker_impl_unittest.cc
|
| @@ -74,22 +74,22 @@ class MockObserver : public net::ProxyConfigService::Observer {
|
|
|
| class PrefProxyConfigTrackerImplTest : public testing::Test {
|
| protected:
|
| - PrefProxyConfigTrackerImplTest() {
|
| + PrefProxyConfigTrackerImplTest() {}
|
| +
|
| + // Initializes the proxy config service. The delegate config service has the
|
| + // specified initial config availability.
|
| + void InitConfigService(net::ProxyConfigService::ConfigAvailability
|
| + delegate_config_availability) {
|
| pref_service_.reset(new TestingPrefServiceSimple());
|
| PrefProxyConfigTrackerImpl::RegisterPrefs(pref_service_->registry());
|
| fixed_config_.set_pac_url(GURL(kFixedPacUrl));
|
| delegate_service_ =
|
| - new TestProxyConfigService(fixed_config_,
|
| - net::ProxyConfigService::CONFIG_VALID);
|
| + new TestProxyConfigService(fixed_config_, delegate_config_availability);
|
| proxy_config_tracker_.reset(new PrefProxyConfigTrackerImpl(
|
| pref_service_.get(), base::ThreadTaskRunnerHandle::Get()));
|
| proxy_config_service_ =
|
| proxy_config_tracker_->CreateTrackingProxyConfigService(
|
| std::unique_ptr<net::ProxyConfigService>(delegate_service_));
|
| - // SetProxyConfigServiceImpl triggers update of initial prefs proxy
|
| - // config by tracker to chrome proxy config service, so flush all pending
|
| - // tasks so that tests start fresh.
|
| - base::RunLoop().RunUntilIdle();
|
| }
|
|
|
| ~PrefProxyConfigTrackerImplTest() override {
|
| @@ -104,12 +104,11 @@ class PrefProxyConfigTrackerImplTest : public testing::Test {
|
| TestProxyConfigService* delegate_service_; // weak
|
| std::unique_ptr<net::ProxyConfigService> proxy_config_service_;
|
| net::ProxyConfig fixed_config_;
|
| -
|
| - private:
|
| std::unique_ptr<PrefProxyConfigTrackerImpl> proxy_config_tracker_;
|
| };
|
|
|
| TEST_F(PrefProxyConfigTrackerImplTest, BaseConfiguration) {
|
| + InitConfigService(net::ProxyConfigService::CONFIG_VALID);
|
| net::ProxyConfig actual_config;
|
| EXPECT_EQ(net::ProxyConfigService::CONFIG_VALID,
|
| proxy_config_service_->GetLatestProxyConfig(&actual_config));
|
| @@ -117,6 +116,7 @@ TEST_F(PrefProxyConfigTrackerImplTest, BaseConfiguration) {
|
| }
|
|
|
| TEST_F(PrefProxyConfigTrackerImplTest, DynamicPrefOverrides) {
|
| + InitConfigService(net::ProxyConfigService::CONFIG_VALID);
|
| pref_service_->SetManagedPref(proxy_config::prefs::kProxy,
|
| ProxyConfigDictionary::CreateFixedServers(
|
| "http://example.com:3128", std::string()));
|
| @@ -149,6 +149,7 @@ MATCHER_P(ProxyConfigMatches, config, "") {
|
| }
|
|
|
| TEST_F(PrefProxyConfigTrackerImplTest, Observers) {
|
| + InitConfigService(net::ProxyConfigService::CONFIG_VALID);
|
| const net::ProxyConfigService::ConfigAvailability CONFIG_VALID =
|
| net::ProxyConfigService::CONFIG_VALID;
|
| MockObserver observer;
|
| @@ -204,6 +205,7 @@ TEST_F(PrefProxyConfigTrackerImplTest, Observers) {
|
| }
|
|
|
| TEST_F(PrefProxyConfigTrackerImplTest, Fallback) {
|
| + InitConfigService(net::ProxyConfigService::CONFIG_VALID);
|
| const net::ProxyConfigService::ConfigAvailability CONFIG_VALID =
|
| net::ProxyConfigService::CONFIG_VALID;
|
| MockObserver observer;
|
| @@ -257,6 +259,7 @@ TEST_F(PrefProxyConfigTrackerImplTest, Fallback) {
|
| }
|
|
|
| TEST_F(PrefProxyConfigTrackerImplTest, ExplicitSystemSettings) {
|
| + InitConfigService(net::ProxyConfigService::CONFIG_VALID);
|
| pref_service_->SetRecommendedPref(proxy_config::prefs::kProxy,
|
| ProxyConfigDictionary::CreateAutoDetect());
|
| pref_service_->SetUserPref(proxy_config::prefs::kProxy,
|
| @@ -270,4 +273,34 @@ TEST_F(PrefProxyConfigTrackerImplTest, ExplicitSystemSettings) {
|
| EXPECT_EQ(GURL(kFixedPacUrl), actual_config.pac_url());
|
| }
|
|
|
| +// Test the case where the delegate service gets a config only after the service
|
| +// is created.
|
| +TEST_F(PrefProxyConfigTrackerImplTest, DelegateConfigServiceGetsConfigLate) {
|
| + InitConfigService(net::ProxyConfigService::CONFIG_PENDING);
|
| +
|
| + testing::StrictMock<MockObserver> observer;
|
| + proxy_config_service_->AddObserver(&observer);
|
| +
|
| + net::ProxyConfig actual_config;
|
| + EXPECT_EQ(net::ProxyConfigService::CONFIG_PENDING,
|
| + proxy_config_service_->GetLatestProxyConfig(&actual_config));
|
| +
|
| + // When the delegate service gets the config, the other service should update
|
| + // its observers.
|
| + EXPECT_CALL(observer,
|
| + OnProxyConfigChanged(ProxyConfigMatches(fixed_config_),
|
| + net::ProxyConfigService::CONFIG_VALID))
|
| + .Times(1);
|
| + delegate_service_->SetProxyConfig(fixed_config_,
|
| + net::ProxyConfigService::CONFIG_VALID);
|
| +
|
| + // Since no prefs were set, should just use the delegated config service's
|
| + // settings.
|
| + EXPECT_EQ(net::ProxyConfigService::CONFIG_VALID,
|
| + proxy_config_service_->GetLatestProxyConfig(&actual_config));
|
| + EXPECT_EQ(GURL(kFixedPacUrl), actual_config.pac_url());
|
| +
|
| + proxy_config_service_->RemoveObserver(&observer);
|
| +}
|
| +
|
| } // namespace
|
|
|