| Index: chrome/browser/local_discovery/service_discovery_host_client.cc
|
| diff --git a/chrome/browser/local_discovery/service_discovery_host_client.cc b/chrome/browser/local_discovery/service_discovery_host_client.cc
|
| index 9394b404910df32a928854a93aef69630984253e..6e4ac3a8e29d6fb7f0a59b85baf5b7644168b3a7 100644
|
| --- a/chrome/browser/local_discovery/service_discovery_host_client.cc
|
| +++ b/chrome/browser/local_discovery/service_discovery_host_client.cc
|
| @@ -192,25 +192,23 @@ uint64 ServiceDiscoveryHostClient::RegisterLocalDomainResolverCallback(
|
|
|
| void ServiceDiscoveryHostClient::UnregisterWatcherCallback(uint64 id) {
|
| DCHECK(CalledOnValidThread());
|
| - DCHECK(ContainsKey(service_watcher_callbacks_, id));
|
| service_watcher_callbacks_.erase(id);
|
| }
|
|
|
| void ServiceDiscoveryHostClient::UnregisterResolverCallback(uint64 id) {
|
| DCHECK(CalledOnValidThread());
|
| - DCHECK(ContainsKey(service_resolver_callbacks_, id));
|
| service_resolver_callbacks_.erase(id);
|
| }
|
|
|
| void ServiceDiscoveryHostClient::UnregisterLocalDomainResolverCallback(
|
| uint64 id) {
|
| DCHECK(CalledOnValidThread());
|
| - DCHECK(ContainsKey(domain_resolver_callbacks_, id));
|
| domain_resolver_callbacks_.erase(id);
|
| }
|
|
|
| void ServiceDiscoveryHostClient::Start() {
|
| DCHECK(CalledOnValidThread());
|
| + net::NetworkChangeNotifier::AddIPAddressObserver(this);
|
| BrowserThread::PostTask(
|
| BrowserThread::IO,
|
| FROM_HERE,
|
| @@ -218,6 +216,7 @@ void ServiceDiscoveryHostClient::Start() {
|
| }
|
|
|
| void ServiceDiscoveryHostClient::Shutdown() {
|
| + net::NetworkChangeNotifier::RemoveIPAddressObserver(this);
|
| DCHECK(CalledOnValidThread());
|
| BrowserThread::PostTask(
|
| BrowserThread::IO,
|
| @@ -259,6 +258,13 @@ void ServiceDiscoveryHostClient::ShutdownOnIOThread() {
|
| }
|
| }
|
|
|
| +void ServiceDiscoveryHostClient::RestartOnIOThread() {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| +
|
| + ShutdownOnIOThread();
|
| + StartOnIOThread();
|
| +}
|
| +
|
| void ServiceDiscoveryHostClient::Send(IPC::Message* msg) {
|
| DCHECK(CalledOnValidThread());
|
| BrowserThread::PostTask(
|
| @@ -273,6 +279,23 @@ void ServiceDiscoveryHostClient::SendOnIOThread(IPC::Message* msg) {
|
| utility_host_->Send(msg);
|
| }
|
|
|
| +void ServiceDiscoveryHostClient::OnIPAddressChanged() {
|
| + BrowserThread::PostTask(
|
| + BrowserThread::IO,
|
| + 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, "");
|
| + }
|
| + }
|
| +}
|
| +
|
| bool ServiceDiscoveryHostClient::OnMessageReceived(
|
| const IPC::Message& message) {
|
| bool handled = true;
|
|
|