diff options
author | vitalybuka@chromium.org <vitalybuka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-16 09:57:12 +0000 |
---|---|---|
committer | vitalybuka@chromium.org <vitalybuka@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-09-16 09:57:12 +0000 |
commit | 3f1d4beb8efc0a5100d7d53d9c39159ba029272f (patch) | |
tree | 7f7fdcb5960dbe0e534b2beb40b2644cb31f846d | |
parent | 3c7cd0660d73f190d6212bc4568a5d8af124636c (diff) | |
download | chromium_src-3f1d4beb8efc0a5100d7d53d9c39159ba029272f.zip chromium_src-3f1d4beb8efc0a5100d7d53d9c39159ba029272f.tar.gz chromium_src-3f1d4beb8efc0a5100d7d53d9c39159ba029272f.tar.bz2 |
Replace OnIPAddressChanged with OnNetworkChanged.
Delay discovery service restart by 10 sec.
Added IPs VLOG.
TBR=noamsml
BUG=284673
Review URL: https://chromiumcodereview.appspot.com/23709010
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@223322 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/local_discovery/service_discovery_host_client.cc | 60 | ||||
-rw-r--r-- | chrome/browser/local_discovery/service_discovery_host_client.h | 9 |
2 files changed, 51 insertions, 18 deletions
diff --git a/chrome/browser/local_discovery/service_discovery_host_client.cc b/chrome/browser/local_discovery/service_discovery_host_client.cc index c37d4c0..e66e4b1 100644 --- a/chrome/browser/local_discovery/service_discovery_host_client.cc +++ b/chrome/browser/local_discovery/service_discovery_host_client.cc @@ -15,6 +15,21 @@ namespace local_discovery { +namespace { + +void LogInterfaces() { + net::NetworkInterfaceList list; + net::GetNetworkList(&list); + std::string log; + for (net::NetworkInterfaceList::iterator it = list.begin(); it != list.end(); + ++it) { + log += " " + net::IPAddressToString(it->address); + } + VLOG(1) << "Local addresses:" << log; +} + +} // namespace + using content::BrowserThread; using content::UtilityProcessHost; @@ -216,14 +231,14 @@ void ServiceDiscoveryHostClient::UnregisterLocalDomainResolverCallback( void ServiceDiscoveryHostClient::Start() { DCHECK(CalledOnValidThread()); - net::NetworkChangeNotifier::AddIPAddressObserver(this); + net::NetworkChangeNotifier::AddNetworkChangeObserver(this); io_runner_->PostTask( FROM_HERE, base::Bind(&ServiceDiscoveryHostClient::StartOnIOThread, this)); } void ServiceDiscoveryHostClient::Shutdown() { - net::NetworkChangeNotifier::RemoveIPAddressObserver(this); + net::NetworkChangeNotifier::RemoveNetworkChangeObserver(this); DCHECK(CalledOnValidThread()); io_runner_->PostTask( FROM_HERE, @@ -264,6 +279,27 @@ void ServiceDiscoveryHostClient::ShutdownOnIOThread() { } } +void ServiceDiscoveryHostClient::Restart() { + DCHECK(CalledOnValidThread()); + + VLOG(1) << "ServiceDiscoveryHostClient::Restart"; + LogInterfaces(); + + io_runner_->PostTask( + FROM_HERE, + base::Bind(&ServiceDiscoveryHostClient::RestartOnIOThread, this)); + + WatcherCallbacks service_watcher_callbacks; + service_watcher_callbacks_.swap(service_watcher_callbacks); + + for (WatcherCallbacks::iterator i = service_watcher_callbacks.begin(); + i != service_watcher_callbacks.end(); i++) { + if (!i->second.is_null()) { + i->second.Run(ServiceWatcher::UPDATE_INVALIDATED, ""); + } + } +} + void ServiceDiscoveryHostClient::RestartOnIOThread() { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); @@ -284,20 +320,14 @@ void ServiceDiscoveryHostClient::SendOnIOThread(IPC::Message* msg) { utility_host_->Send(msg); } -void ServiceDiscoveryHostClient::OnIPAddressChanged() { - io_runner_->PostTask( +void ServiceDiscoveryHostClient::OnNetworkChanged( + net::NetworkChangeNotifier::ConnectionType type) { + VLOG(1) << "ServiceDiscoveryHostClient::OnNetworkChanged"; + LogInterfaces(); + callback_runner_->PostDelayedTask( FROM_HERE, - base::Bind(&ServiceDiscoveryHostClient::RestartOnIOThread, this)); - - WatcherCallbacks service_watcher_callbacks; - service_watcher_callbacks_.swap(service_watcher_callbacks); - - for (WatcherCallbacks::iterator i = service_watcher_callbacks.begin(); - i != service_watcher_callbacks.end(); i++) { - if (!i->second.is_null()) { - i->second.Run(ServiceWatcher::UPDATE_INVALIDATED, ""); - } - } + base::Bind(&ServiceDiscoveryHostClient::Restart, this), + base::TimeDelta::FromSeconds(10)); } bool ServiceDiscoveryHostClient::OnMessageReceived( diff --git a/chrome/browser/local_discovery/service_discovery_host_client.h b/chrome/browser/local_discovery/service_discovery_host_client.h index dbb7071..efbb025 100644 --- a/chrome/browser/local_discovery/service_discovery_host_client.h +++ b/chrome/browser/local_discovery/service_discovery_host_client.h @@ -30,7 +30,7 @@ class ServiceDiscoveryHostClient : public base::NonThreadSafe, public ServiceDiscoveryClient, public content::UtilityProcessHostClient, - public net::NetworkChangeNotifier::IPAddressObserver { + public net::NetworkChangeNotifier::NetworkChangeObserver { public: ServiceDiscoveryHostClient(); @@ -55,8 +55,9 @@ class ServiceDiscoveryHostClient // UtilityProcessHostClient implementation. virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; - // net::NetworkChangeNotifier::IPAddressObserver implementation. - virtual void OnIPAddressChanged() OVERRIDE; + // net::NetworkChangeNotifier::NetworkChangeObserver implementation. + virtual void OnNetworkChanged( + net::NetworkChangeNotifier::ConnectionType type) OVERRIDE; protected: virtual ~ServiceDiscoveryHostClient(); @@ -76,6 +77,8 @@ class ServiceDiscoveryHostClient void ShutdownOnIOThread(); void RestartOnIOThread(); + void Restart(); + void Send(IPC::Message* msg); void SendOnIOThread(IPC::Message* msg); |