Chromium Code Reviews| Index: chrome/browser/net/net_error_tab_helper.cc |
| diff --git a/chrome/browser/net/net_error_tab_helper.cc b/chrome/browser/net/net_error_tab_helper.cc |
| index a5d124e4fcb00824beb930921b44f64424bd2539..aa0a3294dc5ac7f9b029eaa9c057f17d1df72430 100644 |
| --- a/chrome/browser/net/net_error_tab_helper.cc |
| +++ b/chrome/browser/net/net_error_tab_helper.cc |
| @@ -19,6 +19,7 @@ |
| using base::FieldTrialList; |
| using chrome_common_net::DnsProbeResult; |
| +using chrome_common_net::DnsProbeStatus; |
| using content::BrowserContext; |
| using content::BrowserThread; |
| using content::PageTransition; |
| @@ -70,8 +71,6 @@ void OnDnsProbeFinishedOnIOThread( |
| DnsProbeResult result) { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| - DVLOG(1) << "DNS probe finished with result " << result; |
| - |
| BrowserThread::PostTask( |
| BrowserThread::UI, |
| FROM_HERE, |
| @@ -85,8 +84,6 @@ void StartDnsProbeOnIOThread( |
| IOThread* io_thread) { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| - DVLOG(1) << "Starting DNS probe"; |
| - |
| DnsProbeService* probe_service = |
| io_thread->globals()->dns_probe_service.get(); |
| @@ -167,48 +164,82 @@ NetErrorTabHelper::NetErrorTabHelper(WebContents* contents) |
| void NetErrorTabHelper::TrackerCallback( |
| NetErrorTracker::DnsErrorPageState state) { |
| + DVLOG(1) << "Tracker state " << state; |
| + |
| dns_error_page_state_ = state; |
| MaybePostStartDnsProbeTask(); |
| - MaybeSendInfo(); |
| + MaybeSendStatus(); |
| } |
| void NetErrorTabHelper::MaybePostStartDnsProbeTask() { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| - if (dns_error_page_state_ != NetErrorTracker::DNS_ERROR_PAGE_NONE && |
| - dns_probe_state_ != DNS_PROBE_STARTED && |
| - ProbesAllowed()) { |
| - BrowserThread::PostTask( |
| - BrowserThread::IO, |
| - FROM_HERE, |
| - base::Bind(&StartDnsProbeOnIOThread, |
| - base::Bind(&NetErrorTabHelper::OnDnsProbeFinished, |
| - weak_factory_.GetWeakPtr()), |
| - g_browser_process->io_thread())); |
| - dns_probe_state_ = DNS_PROBE_STARTED; |
| + if (dns_error_page_state_ == NetErrorTracker::DNS_ERROR_PAGE_NONE || |
| + dns_probe_state_ != DNS_PROBE_NONE || |
| + !ProbesAllowed()) { |
| + return; |
| } |
| + |
| + DVLOG(1) << "Starting probe."; |
| + |
| + BrowserThread::PostTask( |
| + BrowserThread::IO, |
| + FROM_HERE, |
| + base::Bind(&StartDnsProbeOnIOThread, |
| + base::Bind(&NetErrorTabHelper::OnDnsProbeFinished, |
| + weak_factory_.GetWeakPtr()), |
| + g_browser_process->io_thread())); |
| + dns_probe_state_ = DNS_PROBE_STARTED; |
| } |
| void NetErrorTabHelper::OnDnsProbeFinished(DnsProbeResult result) { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| DCHECK_EQ(DNS_PROBE_STARTED, dns_probe_state_); |
| + DVLOG(1) << "Finished probe with result " << result << "."; |
| + |
| dns_probe_result_ = result; |
| dns_probe_state_ = DNS_PROBE_FINISHED; |
| - MaybeSendInfo(); |
| + MaybeSendStatus(); |
| } |
| -void NetErrorTabHelper::MaybeSendInfo() { |
| - if (dns_error_page_state_ == NetErrorTracker::DNS_ERROR_PAGE_LOADED && |
| - dns_probe_state_ == DNS_PROBE_FINISHED) { |
| - DVLOG(1) << "Sending result " << dns_probe_result_ << " to renderer"; |
| - Send(new ChromeViewMsg_NetErrorInfo(routing_id(), dns_probe_result_)); |
| +void NetErrorTabHelper::MaybeSendStatus() { |
| + if (dns_error_page_state_ != NetErrorTracker::DNS_ERROR_PAGE_LOADED) |
| + return; |
| + |
| + switch (dns_probe_state_) { |
| + case DNS_PROBE_STARTED: |
| + DVLOG(1) << "Error page loaded; sending STARTED."; |
| + SendInfo(chrome_common_net::DNS_PROBE_STARTED, |
| + chrome_common_net::DNS_PROBE_UNKNOWN); |
| + break; |
| + |
| + case DNS_PROBE_FINISHED: |
| + DVLOG(1) << "Error page loaded; sending FINISHED."; |
| + SendInfo(chrome_common_net::DNS_PROBE_FINISHED, dns_probe_result_); |
| dns_probe_state_ = DNS_PROBE_NONE; |
| + break; |
| + |
| + case DNS_PROBE_NONE: |
| + DVLOG(1) << "Error page loaded; sending NOT_RUN."; |
| + SendInfo(chrome_common_net::DNS_PROBE_NOT_RUN, |
| + chrome_common_net::DNS_PROBE_UNKNOWN); |
| + break; |
| + |
| + default: |
| + NOTREACHED(); |
| } |
| } |
| +void NetErrorTabHelper::SendInfo( |
| + DnsProbeStatus status, |
| + DnsProbeResult result) |
| +{ |
|
mmenke
2013/04/01 17:44:12
nit: "{" should go on previous line.
Deprecated (see juliatuttle)
2013/04/09 20:35:49
Done.
|
| + Send(new ChromeViewMsg_NetErrorInfo(routing_id(), status, result)); |
| +} |
| + |
| void NetErrorTabHelper::InitializePref(WebContents* contents) { |
| DCHECK(contents); |