diff options
author | pkasting@chromium.org <pkasting@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-25 21:30:38 +0000 |
---|---|---|
committer | pkasting@chromium.org <pkasting@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-06-25 21:30:38 +0000 |
commit | 66761b95332549f825999e482c17c94675275f49 (patch) | |
tree | fc5307808a2c62f1eff2a9f37db3aff11c5455d9 /net/proxy | |
parent | e313f3b11360902a3da9b3b1cc0df2a4792d0867 (diff) | |
download | chromium_src-66761b95332549f825999e482c17c94675275f49.zip chromium_src-66761b95332549f825999e482c17c94675275f49.tar.gz chromium_src-66761b95332549f825999e482c17c94675275f49.tar.bz2 |
Massively simplify the NetworkChangeNotifier infrastructure:
* Use a process-wide object (singleton pattern)
* Create/destroy this object on the main thread, make it outlive all consumers
* Make observer-related functions threadsafe
As a result, the notifier can now be used by any thread (eliminating things like NetworkChangeObserverProxy and NetworkChangeNotifierProxy, and expanding its usefulness); its creation and inner workings are much simplified (eliminating implementation-specific classes); and it is simpler to access (eliminating things like NetworkChangeNotifierThread and a LOT of passing pointers around).
BUG=none
TEST=Unittests; network changes still trigger notifications
Review URL: http://codereview.chromium.org/2802015
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@50895 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/proxy')
-rw-r--r-- | net/proxy/proxy_script_fetcher_unittest.cc | 12 | ||||
-rw-r--r-- | net/proxy/proxy_service.cc | 29 | ||||
-rw-r--r-- | net/proxy/proxy_service.h | 26 | ||||
-rw-r--r-- | net/proxy/proxy_service_unittest.cc | 86 |
4 files changed, 59 insertions, 94 deletions
diff --git a/net/proxy/proxy_script_fetcher_unittest.cc b/net/proxy/proxy_script_fetcher_unittest.cc index ff12ebc..c3925e3 100644 --- a/net/proxy/proxy_script_fetcher_unittest.cc +++ b/net/proxy/proxy_script_fetcher_unittest.cc @@ -32,16 +32,14 @@ class RequestContext : public URLRequestContext { public: RequestContext() { net::ProxyConfig no_proxy; - host_resolver_ = net::CreateSystemHostResolver(NULL); + host_resolver_ = net::CreateSystemHostResolver(); proxy_service_ = net::ProxyService::CreateFixed(no_proxy); ssl_config_service_ = new net::SSLConfigServiceDefaults; - http_transaction_factory_ = - new net::HttpCache( - net::HttpNetworkLayer::CreateFactory( - NULL, host_resolver_, proxy_service_, ssl_config_service_, - NULL, NULL, NULL), - net::HttpCache::DefaultBackend::InMemory(0)); + http_transaction_factory_ = new net::HttpCache( + net::HttpNetworkLayer::CreateFactory(host_resolver_, proxy_service_, + ssl_config_service_, NULL, NULL, NULL), + net::HttpCache::DefaultBackend::InMemory(0)); } private: diff --git a/net/proxy/proxy_service.cc b/net/proxy/proxy_service.cc index 002c514..cb7da0c 100644 --- a/net/proxy/proxy_service.cc +++ b/net/proxy/proxy_service.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. +// Copyright (c) 2010 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -200,7 +200,6 @@ class ProxyService::PacRequest ProxyService::ProxyService(ProxyConfigService* config_service, ProxyResolver* resolver, - NetworkChangeNotifier* network_change_notifier, NetLog* net_log) : config_service_(config_service), resolver_(resolver), @@ -208,11 +207,8 @@ ProxyService::ProxyService(ProxyConfigService* config_service, should_use_proxy_resolver_(false), ALLOW_THIS_IN_INITIALIZER_LIST(init_proxy_resolver_callback_( this, &ProxyService::OnInitProxyResolverComplete)), - net_log_(net_log), - network_change_notifier_(network_change_notifier) { - // Register to receive network change notifications. - if (network_change_notifier_) - network_change_notifier_->AddObserver(this); + net_log_(net_log) { + NetworkChangeNotifier::AddObserver(this); } // static @@ -220,7 +216,6 @@ ProxyService* ProxyService::Create( ProxyConfigService* proxy_config_service, bool use_v8_resolver, URLRequestContext* url_request_context, - NetworkChangeNotifier* network_change_notifier, NetLog* net_log, MessageLoop* io_loop) { ProxyResolver* proxy_resolver = NULL; @@ -249,9 +244,8 @@ ProxyService* ProxyService::Create( new SingleThreadedProxyResolver(CreateNonV8ProxyResolver()); } - ProxyService* proxy_service = new ProxyService( - proxy_config_service, proxy_resolver, network_change_notifier, - net_log); + ProxyService* proxy_service = + new ProxyService(proxy_config_service, proxy_resolver, net_log); if (proxy_resolver->expects_pac_bytes()) { // Configure PAC script downloads to be issued using |url_request_context|. @@ -265,16 +259,13 @@ ProxyService* ProxyService::Create( // static ProxyService* ProxyService::CreateFixed(const ProxyConfig& pc) { - return Create(new ProxyConfigServiceFixed(pc), false, NULL, NULL, - NULL, NULL); + return Create(new ProxyConfigServiceFixed(pc), false, NULL, NULL, NULL); } // static ProxyService* ProxyService::CreateNull() { // Use a configuration fetcher and proxy resolver which always fail. - return new ProxyService(new ProxyConfigServiceNull, - new ProxyResolverNull, - NULL, + return new ProxyService(new ProxyConfigServiceNull, new ProxyResolverNull, NULL); } @@ -341,9 +332,7 @@ int ProxyService::TryToCompleteSynchronously(const GURL& url, } ProxyService::~ProxyService() { - // Unregister to receive network change notifications. - if (network_change_notifier_) - network_change_notifier_->RemoveObserver(this); + NetworkChangeNotifier::RemoveObserver(this); // Cancel any inprogress requests. for (PendingRequests::iterator it = pending_requests_.begin(); @@ -675,8 +664,6 @@ void ProxyService::UpdateConfigIfOld(const BoundNetLog& net_log) { void ProxyService::OnIPAddressChanged() { - DCHECK(network_change_notifier_); - // Mark the current configuration as being un-initialized. // // This will force us to re-fetch the configuration (and re-run all of diff --git a/net/proxy/proxy_service.h b/net/proxy/proxy_service.h index 49c7979..22435e4 100644 --- a/net/proxy/proxy_service.h +++ b/net/proxy/proxy_service.h @@ -1,4 +1,4 @@ -// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Copyright (c) 2010 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -36,13 +36,10 @@ class ProxyService : public base::RefCountedThreadSafe<ProxyService>, public NetworkChangeNotifier::Observer { public: // The instance takes ownership of |config_service| and |resolver|. - // If |network_change_notifier| is non-NULL, the proxy service will register - // with it to detect when the network setup has changed. This is used to - // decide when to re-configure the proxy discovery. // |net_log| is a possibly NULL destination to send log events to. It must // remain alive for the lifetime of this ProxyService. - ProxyService(ProxyConfigService* config_service, ProxyResolver* resolver, - NetworkChangeNotifier* network_change_notifier, + ProxyService(ProxyConfigService* config_service, + ProxyResolver* resolver, NetLog* net_log); // Used internally to handle PAC queries. @@ -143,8 +140,6 @@ class ProxyService : public base::RefCountedThreadSafe<ProxyService>, // |url_request_context| is only used when use_v8_resolver is true: // it specifies the URL request context that will be used if a PAC // script needs to be fetched. - // |network_change_notifier| may be NULL. Otherwise it will be used to - // signal the ProxyService when the network setup has changed. // |io_loop| points to the IO thread's message loop. It is only used // when pc is NULL. // ########################################################################## @@ -156,7 +151,6 @@ class ProxyService : public base::RefCountedThreadSafe<ProxyService>, ProxyConfigService* proxy_config_service, bool use_v8_resolver, URLRequestContext* url_request_context, - NetworkChangeNotifier* network_change_notifier, NetLog* net_log, MessageLoop* io_loop); @@ -244,7 +238,8 @@ class ProxyService : public base::RefCountedThreadSafe<ProxyService>, int result_code, const BoundNetLog& net_log); - // NetworkChangeNotifier::Observer methods: + // NetworkChangeNotifier::Observer + // When this is called, we re-fetch PAC scripts and re-run WPAD. virtual void OnIPAddressChanged(); scoped_ptr<ProxyConfigService> config_service_; @@ -287,10 +282,6 @@ class ProxyService : public base::RefCountedThreadSafe<ProxyService>, // sent to. NetLog* net_log_; - // The (possibly NULL) network change notifier that we use to decide when - // to refetch PAC scripts or re-run WPAD. - NetworkChangeNotifier* const network_change_notifier_; - DISALLOW_COPY_AND_ASSIGN(ProxyService); }; @@ -301,9 +292,12 @@ class SyncProxyServiceHelper SyncProxyServiceHelper(MessageLoop* io_message_loop, ProxyService* proxy_service); - int ResolveProxy(const GURL& url, ProxyInfo* proxy_info, const BoundNetLog& net_log); + int ResolveProxy(const GURL& url, + ProxyInfo* proxy_info, + const BoundNetLog& net_log); int ReconsiderProxyAfterError(const GURL& url, - ProxyInfo* proxy_info, const BoundNetLog& net_log); + ProxyInfo* proxy_info, + const BoundNetLog& net_log); private: friend class base::RefCountedThreadSafe<SyncProxyServiceHelper>; diff --git a/net/proxy/proxy_service_unittest.cc b/net/proxy/proxy_service_unittest.cc index f5e76d9..3cf80cd 100644 --- a/net/proxy/proxy_service_unittest.cc +++ b/net/proxy/proxy_service_unittest.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. +// Copyright (c) 2010 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -12,7 +12,6 @@ #include "googleurl/src/gurl.h" #include "net/base/net_log.h" #include "net/base/net_log_unittest.h" -#include "net/base/mock_network_change_notifier.h" #include "net/base/net_errors.h" #include "net/base/test_completion_callback.h" #include "net/proxy/mock_proxy_resolver.h" @@ -92,7 +91,7 @@ class MockProxyScriptFetcher : public ProxyScriptFetcher { TEST(ProxyServiceTest, Direct) { MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; scoped_refptr<ProxyService> service( - new ProxyService(new MockProxyConfigService, resolver, NULL, NULL)); + new ProxyService(new MockProxyConfigService, resolver, NULL)); GURL url("http://www.google.com/"); @@ -120,7 +119,7 @@ TEST(ProxyServiceTest, PAC) { MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; scoped_refptr<ProxyService> service( - new ProxyService(config_service, resolver, NULL, NULL)); + new ProxyService(config_service, resolver, NULL)); GURL url("http://www.google.com/"); @@ -167,7 +166,7 @@ TEST(ProxyServiceTest, PAC_NoIdentityOrHash) { MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; scoped_refptr<ProxyService> service( - new ProxyService(config_service, resolver, NULL, NULL)); + new ProxyService(config_service, resolver, NULL)); GURL url("http://username:password@www.google.com/?ref#hash#hash"); @@ -195,7 +194,7 @@ TEST(ProxyServiceTest, PAC_FailoverWithoutDirect) { MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; scoped_refptr<ProxyService> service( - new ProxyService(config_service, resolver, NULL, NULL)); + new ProxyService(config_service, resolver, NULL)); GURL url("http://www.google.com/"); @@ -253,7 +252,7 @@ TEST(ProxyServiceTest, PAC_FailoverAfterDirect) { MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; scoped_refptr<ProxyService> service( - new ProxyService(config_service, resolver, NULL, NULL)); + new ProxyService(config_service, resolver, NULL)); GURL url("http://www.google.com/"); @@ -319,7 +318,7 @@ TEST(ProxyServiceTest, ProxyResolverFails) { MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; scoped_refptr<ProxyService> service( - new ProxyService(config_service, resolver, NULL, NULL)); + new ProxyService(config_service, resolver, NULL)); // Start first resolve request. GURL url("http://www.google.com/"); @@ -372,7 +371,7 @@ TEST(ProxyServiceTest, ProxyFallback) { MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; scoped_refptr<ProxyService> service( - new ProxyService(config_service, resolver, NULL, NULL)); + new ProxyService(config_service, resolver, NULL)); GURL url("http://www.google.com/"); @@ -462,7 +461,7 @@ TEST(ProxyServiceTest, ProxyFallbackToDirect) { MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; scoped_refptr<ProxyService> service( - new ProxyService(config_service, resolver, NULL, NULL)); + new ProxyService(config_service, resolver, NULL)); GURL url("http://www.google.com/"); @@ -525,7 +524,7 @@ TEST(ProxyServiceTest, ProxyFallback_NewSettings) { MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; scoped_refptr<ProxyService> service( - new ProxyService(config_service, resolver, NULL, NULL)); + new ProxyService(config_service, resolver, NULL)); GURL url("http://www.google.com/"); @@ -617,7 +616,7 @@ TEST(ProxyServiceTest, ProxyFallback_BadConfig) { MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; scoped_refptr<ProxyService> service( - new ProxyService(config_service, resolver, NULL, NULL)); + new ProxyService(config_service, resolver, NULL)); GURL url("http://www.google.com/"); @@ -704,8 +703,7 @@ TEST(ProxyServiceTest, ProxyBypassList) { config.proxy_rules().bypass_rules.ParseFromString("*.org"); scoped_refptr<ProxyService> service(new ProxyService( - new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL, - NULL)); + new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL)); int rv; GURL url1("http://www.webkit.org"); @@ -729,8 +727,7 @@ TEST(ProxyServiceTest, PerProtocolProxyTests) { config.set_auto_detect(false); { scoped_refptr<ProxyService> service(new ProxyService( - new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL, - NULL)); + new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL)); GURL test_url("http://www.msn.com"); ProxyInfo info; TestCompletionCallback callback; @@ -742,8 +739,7 @@ TEST(ProxyServiceTest, PerProtocolProxyTests) { } { scoped_refptr<ProxyService> service(new ProxyService( - new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL, - NULL)); + new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL)); GURL test_url("ftp://ftp.google.com"); ProxyInfo info; TestCompletionCallback callback; @@ -755,8 +751,7 @@ TEST(ProxyServiceTest, PerProtocolProxyTests) { } { scoped_refptr<ProxyService> service(new ProxyService( - new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL, - NULL)); + new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL)); GURL test_url("https://webbranch.techcu.com"); ProxyInfo info; TestCompletionCallback callback; @@ -769,8 +764,7 @@ TEST(ProxyServiceTest, PerProtocolProxyTests) { { config.proxy_rules().ParseFromString("foopy1:8080"); scoped_refptr<ProxyService> service(new ProxyService( - new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL, - NULL)); + new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL)); GURL test_url("http://www.microsoft.com"); ProxyInfo info; TestCompletionCallback callback; @@ -793,8 +787,7 @@ TEST(ProxyServiceTest, DefaultProxyFallbackToSOCKS) { { scoped_refptr<ProxyService> service(new ProxyService( - new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL, - NULL)); + new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL)); GURL test_url("http://www.msn.com"); ProxyInfo info; TestCompletionCallback callback; @@ -806,8 +799,7 @@ TEST(ProxyServiceTest, DefaultProxyFallbackToSOCKS) { } { scoped_refptr<ProxyService> service(new ProxyService( - new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL, - NULL)); + new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL)); GURL test_url("ftp://ftp.google.com"); ProxyInfo info; TestCompletionCallback callback; @@ -819,8 +811,7 @@ TEST(ProxyServiceTest, DefaultProxyFallbackToSOCKS) { } { scoped_refptr<ProxyService> service(new ProxyService( - new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL, - NULL)); + new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL)); GURL test_url("https://webbranch.techcu.com"); ProxyInfo info; TestCompletionCallback callback; @@ -832,8 +823,7 @@ TEST(ProxyServiceTest, DefaultProxyFallbackToSOCKS) { } { scoped_refptr<ProxyService> service(new ProxyService( - new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL, - NULL)); + new MockProxyConfigService(config), new MockAsyncProxyResolver, NULL)); GURL test_url("unknown://www.microsoft.com"); ProxyInfo info; TestCompletionCallback callback; @@ -853,7 +843,7 @@ TEST(ProxyServiceTest, CancelInProgressRequest) { MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; scoped_refptr<ProxyService> service( - new ProxyService(config_service, resolver, NULL, NULL)); + new ProxyService(config_service, resolver, NULL)); // Start 3 requests. @@ -928,7 +918,7 @@ TEST(ProxyServiceTest, InitialPACScriptDownload) { new MockAsyncProxyResolverExpectsBytes; scoped_refptr<ProxyService> service( - new ProxyService(config_service, resolver, NULL, NULL)); + new ProxyService(config_service, resolver, NULL)); MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; service->SetProxyScriptFetcher(fetcher); @@ -1007,7 +997,7 @@ TEST(ProxyServiceTest, ChangeScriptFetcherWhilePACDownloadInProgress) { new MockAsyncProxyResolverExpectsBytes; scoped_refptr<ProxyService> service( - new ProxyService(config_service, resolver, NULL, NULL)); + new ProxyService(config_service, resolver, NULL)); MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; service->SetProxyScriptFetcher(fetcher); @@ -1064,7 +1054,7 @@ TEST(ProxyServiceTest, CancelWhilePACFetching) { new MockAsyncProxyResolverExpectsBytes; scoped_refptr<ProxyService> service( - new ProxyService(config_service, resolver, NULL, NULL)); + new ProxyService(config_service, resolver, NULL)); MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; service->SetProxyScriptFetcher(fetcher); @@ -1152,7 +1142,7 @@ TEST(ProxyServiceTest, FallbackFromAutodetectToCustomPac) { MockAsyncProxyResolverExpectsBytes* resolver = new MockAsyncProxyResolverExpectsBytes; scoped_refptr<ProxyService> service( - new ProxyService(config_service, resolver, NULL, NULL)); + new ProxyService(config_service, resolver, NULL)); MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; service->SetProxyScriptFetcher(fetcher); @@ -1223,7 +1213,7 @@ TEST(ProxyServiceTest, FallbackFromAutodetectToCustomPac2) { MockAsyncProxyResolverExpectsBytes* resolver = new MockAsyncProxyResolverExpectsBytes; scoped_refptr<ProxyService> service( - new ProxyService(config_service, resolver, NULL, NULL)); + new ProxyService(config_service, resolver, NULL)); MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; service->SetProxyScriptFetcher(fetcher); @@ -1299,7 +1289,7 @@ TEST(ProxyServiceTest, FallbackFromAutodetectToCustomToManual) { MockAsyncProxyResolverExpectsBytes* resolver = new MockAsyncProxyResolverExpectsBytes; scoped_refptr<ProxyService> service( - new ProxyService(config_service, resolver, NULL, NULL)); + new ProxyService(config_service, resolver, NULL)); MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; service->SetProxyScriptFetcher(fetcher); @@ -1357,7 +1347,7 @@ TEST(ProxyServiceTest, BypassDoesntApplyToPac) { MockAsyncProxyResolverExpectsBytes* resolver = new MockAsyncProxyResolverExpectsBytes; scoped_refptr<ProxyService> service( - new ProxyService(config_service, resolver, NULL, NULL)); + new ProxyService(config_service, resolver, NULL)); MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; service->SetProxyScriptFetcher(fetcher); @@ -1425,7 +1415,7 @@ TEST(ProxyServiceTest, DeleteWhileInitProxyResolverHasOutstandingFetch) { MockAsyncProxyResolverExpectsBytes* resolver = new MockAsyncProxyResolverExpectsBytes; scoped_refptr<ProxyService> service( - new ProxyService(config_service, resolver, NULL, NULL)); + new ProxyService(config_service, resolver, NULL)); MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; service->SetProxyScriptFetcher(fetcher); @@ -1461,7 +1451,7 @@ TEST(ProxyServiceTest, DeleteWhileInitProxyResolverHasOutstandingSet) { MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; scoped_refptr<ProxyService> service( - new ProxyService(config_service, resolver, NULL, NULL)); + new ProxyService(config_service, resolver, NULL)); GURL url("http://www.google.com/"); @@ -1483,8 +1473,7 @@ TEST(ProxyServiceTest, ResetProxyConfigService) { config1.set_auto_detect(false); scoped_refptr<ProxyService> service(new ProxyService( new MockProxyConfigService(config1), - new MockAsyncProxyResolverExpectsBytes, - NULL, NULL)); + new MockAsyncProxyResolverExpectsBytes, NULL)); ProxyInfo info; TestCompletionCallback callback1; @@ -1516,7 +1505,7 @@ TEST(ProxyServiceTest, UpdateConfigAfterFailedAutodetect) { MockProxyConfigService* config_service = new MockProxyConfigService(config); MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; scoped_refptr<ProxyService> service( - new ProxyService(config_service, resolver, NULL, NULL)); + new ProxyService(config_service, resolver, NULL)); // Start 1 requests. @@ -1562,7 +1551,7 @@ TEST(ProxyServiceTest, UpdateConfigFromPACToDirect) { MockProxyConfigService* config_service = new MockProxyConfigService(config); MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver; scoped_refptr<ProxyService> service( - new ProxyService(config_service, resolver, NULL, NULL)); + new ProxyService(config_service, resolver, NULL)); // Start 1 request. @@ -1614,11 +1603,8 @@ TEST(ProxyServiceTest, NetworkChangeTriggersPacRefetch) { MockAsyncProxyResolverExpectsBytes* resolver = new MockAsyncProxyResolverExpectsBytes; - MockNetworkChangeNotifier network_change_notifier; - scoped_refptr<ProxyService> service( - new ProxyService(config_service, resolver, &network_change_notifier, - NULL)); + new ProxyService(config_service, resolver, NULL)); MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher; service->SetProxyScriptFetcher(fetcher); @@ -1662,8 +1648,8 @@ TEST(ProxyServiceTest, NetworkChangeTriggersPacRefetch) { // Now simluate a change in the network. The ProxyConfigService is still // going to return the same PAC URL as before, but this URL needs to be // refetched on the new network. - - network_change_notifier.NotifyIPAddressChange(); + NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests(); + MessageLoop::current()->RunAllPending(); // Notification happens async. // Start a second request. ProxyInfo info2; |