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

Unified Diff: net/dns/dns_config_service.cc

Issue 10873018: [net] Move DnsConfigService to NetworkChangeNotifier. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: add comment Created 8 years, 4 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/dns_config_service.h ('k') | net/dns/dns_config_service_posix.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/dns/dns_config_service.cc
diff --git a/net/dns/dns_config_service.cc b/net/dns/dns_config_service.cc
index 2291b4ebb061d72fcc3b6021e92c9e5d20d3bfed..1230688b999c7997f8a44267fe51de6840058441 100644
--- a/net/dns/dns_config_service.cc
+++ b/net/dns/dns_config_service.cc
@@ -75,33 +75,30 @@ base::Value* DnsConfig::ToValue() const {
DnsConfigService::DnsConfigService()
- : have_config_(false),
+ : watch_failed_(false),
+ have_config_(false),
have_hosts_(false),
need_update_(false),
last_sent_empty_(true) {}
DnsConfigService::~DnsConfigService() {
- // Must always clean up.
- NetworkChangeNotifier::RemoveDNSObserver(this);
}
-void DnsConfigService::Read(const CallbackType& callback) {
+void DnsConfigService::ReadConfig(const CallbackType& callback) {
DCHECK(CalledOnValidThread());
DCHECK(!callback.is_null());
DCHECK(callback_.is_null());
callback_ = callback;
- OnDNSChanged(NetworkChangeNotifier::CHANGE_DNS_WATCH_STARTED);
+ ReadNow();
}
-void DnsConfigService::Watch(const CallbackType& callback) {
+void DnsConfigService::WatchConfig(const CallbackType& callback) {
DCHECK(CalledOnValidThread());
DCHECK(!callback.is_null());
DCHECK(callback_.is_null());
- NetworkChangeNotifier::AddDNSObserver(this);
callback_ = callback;
- if (NetworkChangeNotifier::IsWatchingDNS())
- OnDNSChanged(NetworkChangeNotifier::CHANGE_DNS_WATCH_STARTED);
- // else: Wait until signal before reading.
+ watch_failed_ = !StartWatching();
+ ReadNow();
}
void DnsConfigService::InvalidateConfig() {
@@ -149,7 +146,7 @@ void DnsConfigService::OnConfigRead(const DnsConfig& config) {
UMA_HISTOGRAM_BOOLEAN("AsyncDNS.ConfigChange", changed);
have_config_ = true;
- if (have_hosts_)
+ if (have_hosts_ || watch_failed_)
OnCompleteConfig();
}
@@ -169,7 +166,7 @@ void DnsConfigService::OnHostsRead(const DnsHosts& hosts) {
UMA_HISTOGRAM_BOOLEAN("AsyncDNS.HostsChange", changed);
have_hosts_ = true;
- if (have_config_)
+ if (have_config_ || watch_failed_)
OnCompleteConfig();
}
@@ -216,7 +213,12 @@ void DnsConfigService::OnCompleteConfig() {
return;
need_update_ = false;
last_sent_empty_ = false;
- callback_.Run(dns_config_);
+ if (watch_failed_) {
+ // If a watch failed, the config may not be accurate, so report empty.
+ callback_.Run(DnsConfig());
+ } else {
+ callback_.Run(dns_config_);
+ }
}
} // namespace net
« no previous file with comments | « net/dns/dns_config_service.h ('k') | net/dns/dns_config_service_posix.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698