| Index: net/dns/host_resolver_impl.cc
|
| diff --git a/net/dns/host_resolver_impl.cc b/net/dns/host_resolver_impl.cc
|
| index fd4c065b7d7e724f47f3646ffd9fe32689b1a2e7..c8cd7e2914c570c3e33ee57d977beb30b59661bf 100644
|
| --- a/net/dns/host_resolver_impl.cc
|
| +++ b/net/dns/host_resolver_impl.cc
|
| @@ -38,6 +38,7 @@
|
| #include "base/metrics/field_trial.h"
|
| #include "base/metrics/histogram_macros.h"
|
| #include "base/metrics/sparse_histogram.h"
|
| +#include "base/power_monitor/power_monitor.h"
|
| #include "base/profiler/scoped_tracker.h"
|
| #include "base/single_thread_task_runner.h"
|
| #include "base/strings/string_util.h"
|
| @@ -1958,6 +1959,10 @@ HostResolverImpl::~HostResolverImpl() {
|
| NetworkChangeNotifier::RemoveIPAddressObserver(this);
|
| NetworkChangeNotifier::RemoveConnectionTypeObserver(this);
|
| NetworkChangeNotifier::RemoveDNSObserver(this);
|
| +
|
| + base::PowerMonitor* power_monitor = base::PowerMonitor::Get();
|
| + if (power_monitor)
|
| + power_monitor->RemoveObserver(this);
|
| }
|
|
|
| void HostResolverImpl::SetMaxQueuedJobs(size_t value) {
|
| @@ -2068,6 +2073,11 @@ HostResolverImpl::HostResolverImpl(
|
| #if defined(OS_WIN)
|
| EnsureWinsockInit();
|
| #endif
|
| +
|
| + base::PowerMonitor* power_monitor = base::PowerMonitor::Get();
|
| + if (power_monitor)
|
| + power_monitor->AddObserver(this);
|
| +
|
| #if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID)
|
| RunLoopbackProbeJob();
|
| #endif
|
| @@ -2554,12 +2564,20 @@ void HostResolverImpl::OnConnectionTypeChanged(
|
| type);
|
| }
|
|
|
| +void HostResolverImpl::OnDNSChanged() {
|
| + UpdateDNSConfig(true);
|
| +}
|
| +
|
| void HostResolverImpl::OnInitialDNSConfigRead() {
|
| UpdateDNSConfig(false);
|
| }
|
|
|
| -void HostResolverImpl::OnDNSChanged() {
|
| - UpdateDNSConfig(true);
|
| +void HostResolverImpl::OnSuspend() {
|
| + // Existing jobs are unlikely to receive a response, so they need to be
|
| + // aborted.
|
| + // TODO(mmenke): This can result in starting new jobs just before suspend
|
| + // mode starts. Would it make more sense to do this on resume?
|
| + AbortAllInProgressJobs();
|
| }
|
|
|
| void HostResolverImpl::UpdateDNSConfig(bool config_changed) {
|
|
|