OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/local_discovery/service_discovery_client_mdns.h" | 5 #include "chrome/browser/local_discovery/service_discovery_client_mdns.h" |
6 | 6 |
| 7 #include "base/location.h" |
7 #include "base/memory/scoped_vector.h" | 8 #include "base/memory/scoped_vector.h" |
8 #include "base/metrics/histogram.h" | 9 #include "base/metrics/histogram.h" |
| 10 #include "base/single_thread_task_runner.h" |
| 11 #include "base/thread_task_runner_handle.h" |
9 #include "chrome/common/local_discovery/service_discovery_client_impl.h" | 12 #include "chrome/common/local_discovery/service_discovery_client_impl.h" |
10 #include "content/public/browser/browser_thread.h" | 13 #include "content/public/browser/browser_thread.h" |
11 #include "net/dns/mdns_client.h" | 14 #include "net/dns/mdns_client.h" |
12 #include "net/udp/datagram_server_socket.h" | 15 #include "net/udp/datagram_server_socket.h" |
13 | 16 |
14 namespace local_discovery { | 17 namespace local_discovery { |
15 | 18 |
16 using content::BrowserThread; | 19 using content::BrowserThread; |
17 | 20 |
18 // Base class for objects returned by ServiceDiscoveryClient implementation. | 21 // Base class for objects returned by ServiceDiscoveryClient implementation. |
(...skipping 341 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
360 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 363 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
361 // Only network changes resets counter. | 364 // Only network changes resets counter. |
362 restart_attempts_ = 0; | 365 restart_attempts_ = 0; |
363 ScheduleStartNewClient(); | 366 ScheduleStartNewClient(); |
364 } | 367 } |
365 | 368 |
366 void ServiceDiscoveryClientMdns::ScheduleStartNewClient() { | 369 void ServiceDiscoveryClientMdns::ScheduleStartNewClient() { |
367 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 370 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
368 OnBeforeMdnsDestroy(); | 371 OnBeforeMdnsDestroy(); |
369 if (restart_attempts_ < kMaxRestartAttempts) { | 372 if (restart_attempts_ < kMaxRestartAttempts) { |
370 base::MessageLoop::current()->PostDelayedTask( | 373 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
371 FROM_HERE, | 374 FROM_HERE, base::Bind(&ServiceDiscoveryClientMdns::StartNewClient, |
372 base::Bind(&ServiceDiscoveryClientMdns::StartNewClient, | 375 weak_ptr_factory_.GetWeakPtr()), |
373 weak_ptr_factory_.GetWeakPtr()), | 376 base::TimeDelta::FromSeconds(kRestartDelayOnNetworkChangeSeconds * |
374 base::TimeDelta::FromSeconds( | 377 (1 << restart_attempts_))); |
375 kRestartDelayOnNetworkChangeSeconds * (1 << restart_attempts_))); | |
376 } else { | 378 } else { |
377 ReportSuccess(); | 379 ReportSuccess(); |
378 } | 380 } |
379 } | 381 } |
380 | 382 |
381 void ServiceDiscoveryClientMdns::StartNewClient() { | 383 void ServiceDiscoveryClientMdns::StartNewClient() { |
382 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 384 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
383 ++restart_attempts_; | 385 ++restart_attempts_; |
384 DestroyMdns(); | 386 DestroyMdns(); |
385 mdns_.reset(net::MDnsClient::CreateDefault().release()); | 387 mdns_.reset(net::MDnsClient::CreateDefault().release()); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
432 OnBeforeMdnsDestroy(); | 434 OnBeforeMdnsDestroy(); |
433 // After calling |Proxy::OnMdnsDestroy| all references to client_ and mdns_ | 435 // After calling |Proxy::OnMdnsDestroy| all references to client_ and mdns_ |
434 // should be destroyed. | 436 // should be destroyed. |
435 if (client_) | 437 if (client_) |
436 mdns_runner_->DeleteSoon(FROM_HERE, client_.release()); | 438 mdns_runner_->DeleteSoon(FROM_HERE, client_.release()); |
437 if (mdns_) | 439 if (mdns_) |
438 mdns_runner_->DeleteSoon(FROM_HERE, mdns_.release()); | 440 mdns_runner_->DeleteSoon(FROM_HERE, mdns_.release()); |
439 } | 441 } |
440 | 442 |
441 } // namespace local_discovery | 443 } // namespace local_discovery |
OLD | NEW |