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

Unified Diff: net/dns/host_resolver_impl.cc

Issue 2447083003: Move fail on suspend logic from URLRequestJob to TcpClientSocket.
Patch Set: Fix connect error case Created 4 years, 2 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
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) {

Powered by Google App Engine
This is Rietveld 408576698