Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(36)

Unified Diff: net/dns/host_resolver_impl.cc

Issue 2447083003: Move fail on suspend logic from URLRequestJob to TcpClientSocket.
Patch Set: . Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/dns/host_resolver_impl.h ('k') | net/ftp/ftp_network_transaction.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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) {
« no previous file with comments | « net/dns/host_resolver_impl.h ('k') | net/ftp/ftp_network_transaction.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698