| 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 "chrome/browser/net/dns_probe_service.h" | 5 #include "chrome/browser/net/dns_probe_service.h" |
| 6 | 6 |
| 7 #include "base/metrics/field_trial.h" | 7 #include "base/metrics/field_trial.h" |
| 8 #include "base/metrics/histogram.h" | 8 #include "base/metrics/histogram.h" |
| 9 #include "base/string_number_conversions.h" | 9 #include "base/string_number_conversions.h" |
| 10 #include "chrome/browser/net/dns_probe_job.h" | 10 #include "chrome/browser/net/dns_probe_job.h" |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 71 const int kNameserverCountMax = 10; | 71 const int kNameserverCountMax = 10; |
| 72 | 72 |
| 73 } // namespace | 73 } // namespace |
| 74 | 74 |
| 75 DnsProbeService::DnsProbeService() | 75 DnsProbeService::DnsProbeService() |
| 76 : system_result_(DnsProbeJob::SERVERS_UNKNOWN), | 76 : system_result_(DnsProbeJob::SERVERS_UNKNOWN), |
| 77 public_result_(DnsProbeJob::SERVERS_UNKNOWN), | 77 public_result_(DnsProbeJob::SERVERS_UNKNOWN), |
| 78 state_(STATE_NO_RESULTS), | 78 state_(STATE_NO_RESULTS), |
| 79 result_(chrome_common_net::DNS_PROBE_UNKNOWN), | 79 result_(chrome_common_net::DNS_PROBE_UNKNOWN), |
| 80 dns_attempts_(GetAttemptsFromFieldTrial()) { | 80 dns_attempts_(GetAttemptsFromFieldTrial()) { |
| 81 NetworkChangeNotifier::AddIPAddressObserver(this); | 81 NetworkChangeNotifier::AddNetworkChangeObserver(this); |
| 82 } | 82 } |
| 83 | 83 |
| 84 DnsProbeService::~DnsProbeService() { | 84 DnsProbeService::~DnsProbeService() { |
| 85 NetworkChangeNotifier::RemoveIPAddressObserver(this); | 85 NetworkChangeNotifier::RemoveNetworkChangeObserver(this); |
| 86 } | 86 } |
| 87 | 87 |
| 88 void DnsProbeService::ProbeDns(const DnsProbeService::CallbackType& callback) { | 88 void DnsProbeService::ProbeDns(const DnsProbeService::CallbackType& callback) { |
| 89 callbacks_.push_back(callback); | 89 callbacks_.push_back(callback); |
| 90 | 90 |
| 91 if (state_ == STATE_RESULTS_CACHED && ResultsExpired()) | 91 if (state_ == STATE_RESULTS_CACHED && ResultsExpired()) |
| 92 ExpireResults(); | 92 ExpireResults(); |
| 93 | 93 |
| 94 switch (state_) { | 94 switch (state_) { |
| 95 case STATE_NO_RESULTS: | 95 case STATE_NO_RESULTS: |
| (...skipping 15 matching lines...) Expand all Loading... |
| 111 return CreateProbeJob(system_config, job_callback); | 111 return CreateProbeJob(system_config, job_callback); |
| 112 } | 112 } |
| 113 | 113 |
| 114 scoped_ptr<DnsProbeJob> DnsProbeService::CreatePublicProbeJob( | 114 scoped_ptr<DnsProbeJob> DnsProbeService::CreatePublicProbeJob( |
| 115 const DnsProbeJob::CallbackType& job_callback) { | 115 const DnsProbeJob::CallbackType& job_callback) { |
| 116 DnsConfig public_config; | 116 DnsConfig public_config; |
| 117 GetPublicDnsConfig(&public_config); | 117 GetPublicDnsConfig(&public_config); |
| 118 return CreateProbeJob(public_config, job_callback); | 118 return CreateProbeJob(public_config, job_callback); |
| 119 } | 119 } |
| 120 | 120 |
| 121 void DnsProbeService::OnIPAddressChanged() { | 121 void DnsProbeService::OnNetworkChanged( |
| 122 if (state_ == STATE_RESULTS_CACHED) | 122 net::NetworkChangeNotifier::ConnectionType type) { |
| 123 if (type == net::NetworkChangeNotifier::CONNECTION_NONE && |
| 124 state_ == STATE_RESULTS_CACHED) |
| 123 ExpireResults(); | 125 ExpireResults(); |
| 124 } | 126 } |
| 125 | 127 |
| 126 void DnsProbeService::ExpireResults() { | 128 void DnsProbeService::ExpireResults() { |
| 127 DCHECK_EQ(STATE_RESULTS_CACHED, state_); | 129 DCHECK_EQ(STATE_RESULTS_CACHED, state_); |
| 128 | 130 |
| 129 state_ = STATE_NO_RESULTS; | 131 state_ = STATE_NO_RESULTS; |
| 130 result_ = chrome_common_net::DNS_PROBE_UNKNOWN; | 132 result_ = chrome_common_net::DNS_PROBE_UNKNOWN; |
| 131 } | 133 } |
| 132 | 134 |
| (...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 329 config->attempts = dns_attempts_; | 331 config->attempts = dns_attempts_; |
| 330 } | 332 } |
| 331 | 333 |
| 332 bool DnsProbeService::ResultsExpired() { | 334 bool DnsProbeService::ResultsExpired() { |
| 333 const base::TimeDelta kMaxResultAge = | 335 const base::TimeDelta kMaxResultAge = |
| 334 base::TimeDelta::FromMilliseconds(kMaxResultAgeMs); | 336 base::TimeDelta::FromMilliseconds(kMaxResultAgeMs); |
| 335 return base::Time::Now() - probe_start_time_ > kMaxResultAge; | 337 return base::Time::Now() - probe_start_time_ > kMaxResultAge; |
| 336 } | 338 } |
| 337 | 339 |
| 338 } // namespace chrome_browser_net | 340 } // namespace chrome_browser_net |
| OLD | NEW |