| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/dns/dns_config_service_posix.h" | 5 #include "net/dns/dns_config_service_posix.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 67 virtual ~DnsConfigWatcher() { | 67 virtual ~DnsConfigWatcher() { |
| 68 NetworkChangeNotifier::RemoveNetworkChangeObserver(this); | 68 NetworkChangeNotifier::RemoveNetworkChangeObserver(this); |
| 69 } | 69 } |
| 70 | 70 |
| 71 bool Watch(const base::Callback<void(bool succeeded)>& callback) { | 71 bool Watch(const base::Callback<void(bool succeeded)>& callback) { |
| 72 callback_ = callback; | 72 callback_ = callback; |
| 73 return true; | 73 return true; |
| 74 } | 74 } |
| 75 | 75 |
| 76 virtual void OnNetworkChanged(NetworkChangeNotifier::ConnectionType type) | 76 virtual void OnNetworkChanged(NetworkChangeNotifier::ConnectionType type) |
| 77 OVERRIDE { | 77 override { |
| 78 if (!callback_.is_null() && type != NetworkChangeNotifier::CONNECTION_NONE) | 78 if (!callback_.is_null() && type != NetworkChangeNotifier::CONNECTION_NONE) |
| 79 callback_.Run(true); | 79 callback_.Run(true); |
| 80 } | 80 } |
| 81 | 81 |
| 82 private: | 82 private: |
| 83 base::Callback<void(bool succeeded)> callback_; | 83 base::Callback<void(bool succeeded)> callback_; |
| 84 }; | 84 }; |
| 85 #elif !defined(OS_MACOSX) | 85 #elif !defined(OS_MACOSX) |
| 86 // DnsConfigWatcher for OS_MACOSX is in dns_config_watcher_mac.{hh,cc}. | 86 // DnsConfigWatcher for OS_MACOSX is in dns_config_watcher_mac.{hh,cc}. |
| 87 | 87 |
| (...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 256 }; | 256 }; |
| 257 | 257 |
| 258 // A SerialWorker that uses libresolv to initialize res_state and converts | 258 // A SerialWorker that uses libresolv to initialize res_state and converts |
| 259 // it to DnsConfig (except on Android, where it reads system properties | 259 // it to DnsConfig (except on Android, where it reads system properties |
| 260 // net.dns1 and net.dns2; see #if around ReadDnsConfig above.) | 260 // net.dns1 and net.dns2; see #if around ReadDnsConfig above.) |
| 261 class DnsConfigServicePosix::ConfigReader : public SerialWorker { | 261 class DnsConfigServicePosix::ConfigReader : public SerialWorker { |
| 262 public: | 262 public: |
| 263 explicit ConfigReader(DnsConfigServicePosix* service) | 263 explicit ConfigReader(DnsConfigServicePosix* service) |
| 264 : service_(service), success_(false) {} | 264 : service_(service), success_(false) {} |
| 265 | 265 |
| 266 virtual void DoWork() OVERRIDE { | 266 virtual void DoWork() override { |
| 267 base::TimeTicks start_time = base::TimeTicks::Now(); | 267 base::TimeTicks start_time = base::TimeTicks::Now(); |
| 268 ConfigParsePosixResult result = ReadDnsConfig(&dns_config_); | 268 ConfigParsePosixResult result = ReadDnsConfig(&dns_config_); |
| 269 switch (result) { | 269 switch (result) { |
| 270 case CONFIG_PARSE_POSIX_MISSING_OPTIONS: | 270 case CONFIG_PARSE_POSIX_MISSING_OPTIONS: |
| 271 case CONFIG_PARSE_POSIX_UNHANDLED_OPTIONS: | 271 case CONFIG_PARSE_POSIX_UNHANDLED_OPTIONS: |
| 272 DCHECK(dns_config_.unhandled_options); | 272 DCHECK(dns_config_.unhandled_options); |
| 273 // Fall through. | 273 // Fall through. |
| 274 case CONFIG_PARSE_POSIX_OK: | 274 case CONFIG_PARSE_POSIX_OK: |
| 275 success_ = true; | 275 success_ = true; |
| 276 break; | 276 break; |
| 277 default: | 277 default: |
| 278 success_ = false; | 278 success_ = false; |
| 279 break; | 279 break; |
| 280 } | 280 } |
| 281 UMA_HISTOGRAM_ENUMERATION("AsyncDNS.ConfigParsePosix", | 281 UMA_HISTOGRAM_ENUMERATION("AsyncDNS.ConfigParsePosix", |
| 282 result, CONFIG_PARSE_POSIX_MAX); | 282 result, CONFIG_PARSE_POSIX_MAX); |
| 283 UMA_HISTOGRAM_BOOLEAN("AsyncDNS.ConfigParseResult", success_); | 283 UMA_HISTOGRAM_BOOLEAN("AsyncDNS.ConfigParseResult", success_); |
| 284 UMA_HISTOGRAM_TIMES("AsyncDNS.ConfigParseDuration", | 284 UMA_HISTOGRAM_TIMES("AsyncDNS.ConfigParseDuration", |
| 285 base::TimeTicks::Now() - start_time); | 285 base::TimeTicks::Now() - start_time); |
| 286 } | 286 } |
| 287 | 287 |
| 288 virtual void OnWorkFinished() OVERRIDE { | 288 virtual void OnWorkFinished() override { |
| 289 DCHECK(!IsCancelled()); | 289 DCHECK(!IsCancelled()); |
| 290 if (success_) { | 290 if (success_) { |
| 291 service_->OnConfigRead(dns_config_); | 291 service_->OnConfigRead(dns_config_); |
| 292 } else { | 292 } else { |
| 293 LOG(WARNING) << "Failed to read DnsConfig."; | 293 LOG(WARNING) << "Failed to read DnsConfig."; |
| 294 } | 294 } |
| 295 } | 295 } |
| 296 | 296 |
| 297 private: | 297 private: |
| 298 virtual ~ConfigReader() {} | 298 virtual ~ConfigReader() {} |
| 299 | 299 |
| 300 DnsConfigServicePosix* service_; | 300 DnsConfigServicePosix* service_; |
| 301 // Written in DoWork, read in OnWorkFinished, no locking necessary. | 301 // Written in DoWork, read in OnWorkFinished, no locking necessary. |
| 302 DnsConfig dns_config_; | 302 DnsConfig dns_config_; |
| 303 bool success_; | 303 bool success_; |
| 304 | 304 |
| 305 DISALLOW_COPY_AND_ASSIGN(ConfigReader); | 305 DISALLOW_COPY_AND_ASSIGN(ConfigReader); |
| 306 }; | 306 }; |
| 307 | 307 |
| 308 // A SerialWorker that reads the HOSTS file and runs Callback. | 308 // A SerialWorker that reads the HOSTS file and runs Callback. |
| 309 class DnsConfigServicePosix::HostsReader : public SerialWorker { | 309 class DnsConfigServicePosix::HostsReader : public SerialWorker { |
| 310 public: | 310 public: |
| 311 explicit HostsReader(DnsConfigServicePosix* service) | 311 explicit HostsReader(DnsConfigServicePosix* service) |
| 312 : service_(service), path_(kFilePathHosts), success_(false) {} | 312 : service_(service), path_(kFilePathHosts), success_(false) {} |
| 313 | 313 |
| 314 private: | 314 private: |
| 315 virtual ~HostsReader() {} | 315 virtual ~HostsReader() {} |
| 316 | 316 |
| 317 virtual void DoWork() OVERRIDE { | 317 virtual void DoWork() override { |
| 318 base::TimeTicks start_time = base::TimeTicks::Now(); | 318 base::TimeTicks start_time = base::TimeTicks::Now(); |
| 319 success_ = ParseHostsFile(path_, &hosts_); | 319 success_ = ParseHostsFile(path_, &hosts_); |
| 320 UMA_HISTOGRAM_BOOLEAN("AsyncDNS.HostParseResult", success_); | 320 UMA_HISTOGRAM_BOOLEAN("AsyncDNS.HostParseResult", success_); |
| 321 UMA_HISTOGRAM_TIMES("AsyncDNS.HostsParseDuration", | 321 UMA_HISTOGRAM_TIMES("AsyncDNS.HostsParseDuration", |
| 322 base::TimeTicks::Now() - start_time); | 322 base::TimeTicks::Now() - start_time); |
| 323 } | 323 } |
| 324 | 324 |
| 325 virtual void OnWorkFinished() OVERRIDE { | 325 virtual void OnWorkFinished() override { |
| 326 if (success_) { | 326 if (success_) { |
| 327 service_->OnHostsRead(hosts_); | 327 service_->OnHostsRead(hosts_); |
| 328 } else { | 328 } else { |
| 329 LOG(WARNING) << "Failed to read DnsHosts."; | 329 LOG(WARNING) << "Failed to read DnsHosts."; |
| 330 } | 330 } |
| 331 } | 331 } |
| 332 | 332 |
| 333 DnsConfigServicePosix* service_; | 333 DnsConfigServicePosix* service_; |
| 334 const base::FilePath path_; | 334 const base::FilePath path_; |
| 335 // Written in DoWork, read in OnWorkFinished, no locking necessary. | 335 // Written in DoWork, read in OnWorkFinished, no locking necessary. |
| (...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 490 #endif // !defined(OS_ANDROID) | 490 #endif // !defined(OS_ANDROID) |
| 491 | 491 |
| 492 } // namespace internal | 492 } // namespace internal |
| 493 | 493 |
| 494 // static | 494 // static |
| 495 scoped_ptr<DnsConfigService> DnsConfigService::CreateSystemService() { | 495 scoped_ptr<DnsConfigService> DnsConfigService::CreateSystemService() { |
| 496 return scoped_ptr<DnsConfigService>(new internal::DnsConfigServicePosix()); | 496 return scoped_ptr<DnsConfigService>(new internal::DnsConfigServicePosix()); |
| 497 } | 497 } |
| 498 | 498 |
| 499 } // namespace net | 499 } // namespace net |
| OLD | NEW |