Index: net/proxy/proxy_service_unittest.cc |
=================================================================== |
--- net/proxy/proxy_service_unittest.cc (revision 16185) |
+++ net/proxy/proxy_service_unittest.cc (working copy) |
@@ -138,6 +138,14 @@ |
started_.Wait(); |
} |
+ void StartResetConfigService( |
+ net::ProxyConfigService* new_proxy_config_service) { |
+ DCHECK(MessageLoop::current() != io_message_loop_); |
+ io_message_loop_->PostTask(FROM_HERE, NewRunnableMethod( |
+ this, &ResultFuture::DoResetConfigService, new_proxy_config_service)); |
+ started_.Wait(); |
+ } |
+ |
// Called on |io_message_loop_|. |
void DoStartRequest(const GURL& url, RequestMethod method) { |
DCHECK(MessageLoop::current() == io_message_loop_); |
@@ -150,6 +158,14 @@ |
} |
// Called on |io_message_loop_|. |
+ void DoResetConfigService(net::ProxyConfigService* new_proxy_config_service) { |
+ DCHECK(MessageLoop::current() == io_message_loop_); |
+ service_->ResetConfigService(new_proxy_config_service); |
+ started_.Signal(); |
+ OnCompletion(0); |
+ } |
+ |
+ // Called on |io_message_loop_|. |
void DoCancel() { |
DCHECK(MessageLoop::current() == io_message_loop_); |
if (!did_complete_) |
@@ -230,6 +246,13 @@ |
(*result)->StartReconsider(url, proxy_info); |
} |
+ void ResetConfigService(scoped_refptr<ResultFuture>* result, |
+ net::ProxyConfigService* new_proxy_config_service) { |
+ *result = new ResultFuture(io_thread_.message_loop(), |
+ io_thread_state_->service); |
+ (*result)->StartResetConfigService(new_proxy_config_service); |
+ } |
+ |
void SetProxyScriptFetcher(net::ProxyScriptFetcher* proxy_script_fetcher) { |
io_thread_.message_loop()->PostTask(FROM_HERE, NewRunnableMethod( |
io_thread_state_.get(), &IOThreadState::DoSetProxyScriptFetcher, |
@@ -292,6 +315,12 @@ |
return result->GetResultCode(); |
} |
+ int ResetConfigService(net::ProxyConfigService* new_proxy_config_service) { |
+ scoped_refptr<ResultFuture> result; |
+ service_.ResetConfigService(&result, new_proxy_config_service); |
+ return result->GetResultCode(); |
+ } |
+ |
private: |
ProxyServiceWithFutures service_; |
}; |
@@ -1096,3 +1125,24 @@ |
EXPECT_EQ("pac-v1.request3:80", |
result3->GetProxyInfo().proxy_server().ToURI()); |
} |
+ |
+TEST(ProxyServiceTest, ResetProxyConfigService) { |
+ net::ProxyConfig config1; |
+ config1.proxy_rules.ParseFromString("foopy1:8080"); |
+ config1.auto_detect = false; |
+ scoped_ptr<SyncProxyService> service( |
+ new SyncProxyService(new MockProxyConfigService(config1), |
+ new MockProxyResolverWithoutFetch)); |
+ |
+ net::ProxyInfo info; |
+ service->ResolveProxy(GURL("http://request1"), &info); |
+ EXPECT_EQ("foopy1:8080", info.proxy_server().ToURI()); |
+ |
+ net::ProxyConfig config2; |
+ config2.proxy_rules.ParseFromString("foopy2:8080"); |
+ config2.auto_detect = false; |
+ int result = service->ResetConfigService(new MockProxyConfigService(config2)); |
+ DCHECK(result == 0); |
+ service->ResolveProxy(GURL("http://request2"), &info); |
+ EXPECT_EQ("foopy2:8080", info.proxy_server().ToURI()); |
+} |