Chromium Code Reviews| Index: net/dns/host_resolver_impl.cc |
| diff --git a/net/dns/host_resolver_impl.cc b/net/dns/host_resolver_impl.cc |
| index 4a5be1834ffb7e438ac04d330d96a83ed59982a3..acd99aef6e43e3749a6dd380f2048e723942ca24 100644 |
| --- a/net/dns/host_resolver_impl.cc |
| +++ b/net/dns/host_resolver_impl.cc |
| @@ -28,6 +28,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/stl_util.h" |
| @@ -1902,6 +1903,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) { |
| @@ -2011,6 +2016,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 |
| @@ -2446,12 +2456,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(); |
|
eroman
2016/10/27 19:26:26
This is going to fail the requests with ERR_NETWOR
|
| } |
| void HostResolverImpl::UpdateDNSConfig(bool config_changed) { |