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

Side by Side Diff: chrome/browser/net/net_error_tab_helper.cc

Issue 1117613003: [chrome/browser/net] favor DCHECK_CURRENTLY_ON for better logs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 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 unified diff | Download patch
« no previous file with comments | « chrome/browser/net/crl_set_fetcher.cc ('k') | chrome/browser/net/net_log_temp_file.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/net_error_tab_helper.h" 5 #include "chrome/browser/net/net_error_tab_helper.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/prefs/pref_service.h" 9 #include "base/prefs/pref_service.h"
10 #include "chrome/browser/browser_process.h" 10 #include "chrome/browser/browser_process.h"
(...skipping 28 matching lines...) Expand all
39 // Returns whether |net_error| is a DNS-related error (and therefore whether 39 // Returns whether |net_error| is a DNS-related error (and therefore whether
40 // the tab helper should start a DNS probe after receiving it.) 40 // the tab helper should start a DNS probe after receiving it.)
41 bool IsDnsError(int net_error) { 41 bool IsDnsError(int net_error) {
42 return net_error == net::ERR_NAME_NOT_RESOLVED || 42 return net_error == net::ERR_NAME_NOT_RESOLVED ||
43 net_error == net::ERR_NAME_RESOLUTION_FAILED; 43 net_error == net::ERR_NAME_RESOLUTION_FAILED;
44 } 44 }
45 45
46 void OnDnsProbeFinishedOnIOThread( 46 void OnDnsProbeFinishedOnIOThread(
47 const base::Callback<void(DnsProbeStatus)>& callback, 47 const base::Callback<void(DnsProbeStatus)>& callback,
48 DnsProbeStatus result) { 48 DnsProbeStatus result) {
49 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 49 DCHECK_CURRENTLY_ON(BrowserThread::IO);
50 50
51 BrowserThread::PostTask( 51 BrowserThread::PostTask(
52 BrowserThread::UI, 52 BrowserThread::UI,
53 FROM_HERE, 53 FROM_HERE,
54 base::Bind(callback, result)); 54 base::Bind(callback, result));
55 } 55 }
56 56
57 // Can only access g_browser_process->io_thread() from the browser thread, 57 // Can only access g_browser_process->io_thread() from the browser thread,
58 // so have to pass it in to the callback instead of dereferencing it here. 58 // so have to pass it in to the callback instead of dereferencing it here.
59 void StartDnsProbeOnIOThread( 59 void StartDnsProbeOnIOThread(
60 const base::Callback<void(DnsProbeStatus)>& callback, 60 const base::Callback<void(DnsProbeStatus)>& callback,
61 IOThread* io_thread) { 61 IOThread* io_thread) {
62 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 62 DCHECK_CURRENTLY_ON(BrowserThread::IO);
63 63
64 DnsProbeService* probe_service = 64 DnsProbeService* probe_service =
65 io_thread->globals()->dns_probe_service.get(); 65 io_thread->globals()->dns_probe_service.get();
66 66
67 probe_service->ProbeDns(base::Bind(&OnDnsProbeFinishedOnIOThread, callback)); 67 probe_service->ProbeDns(base::Bind(&OnDnsProbeFinishedOnIOThread, callback));
68 } 68 }
69 69
70 } // namespace 70 } // namespace
71 71
72 NetErrorTabHelper::~NetErrorTabHelper() { 72 NetErrorTabHelper::~NetErrorTabHelper() {
73 } 73 }
74 74
75 // static 75 // static
76 void NetErrorTabHelper::set_state_for_testing(TestingState state) { 76 void NetErrorTabHelper::set_state_for_testing(TestingState state) {
77 testing_state_ = state; 77 testing_state_ = state;
78 } 78 }
79 79
80 void NetErrorTabHelper::DidStartNavigationToPendingEntry( 80 void NetErrorTabHelper::DidStartNavigationToPendingEntry(
81 const GURL& url, 81 const GURL& url,
82 content::NavigationController::ReloadType reload_type) { 82 content::NavigationController::ReloadType reload_type) {
83 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 83 DCHECK_CURRENTLY_ON(BrowserThread::UI);
84 84
85 if (!is_error_page_) 85 if (!is_error_page_)
86 return; 86 return;
87 87
88 // Only record reloads. 88 // Only record reloads.
89 if (reload_type != content::NavigationController::NO_RELOAD) { 89 if (reload_type != content::NavigationController::NO_RELOAD) {
90 chrome_common_net::RecordEvent( 90 chrome_common_net::RecordEvent(
91 chrome_common_net::NETWORK_ERROR_PAGE_BROWSER_INITIATED_RELOAD); 91 chrome_common_net::NETWORK_ERROR_PAGE_BROWSER_INITIATED_RELOAD);
92 } 92 }
93 } 93 }
94 94
95 void NetErrorTabHelper::DidStartProvisionalLoadForFrame( 95 void NetErrorTabHelper::DidStartProvisionalLoadForFrame(
96 content::RenderFrameHost* render_frame_host, 96 content::RenderFrameHost* render_frame_host,
97 const GURL& validated_url, 97 const GURL& validated_url,
98 bool is_error_page, 98 bool is_error_page,
99 bool is_iframe_srcdoc) { 99 bool is_iframe_srcdoc) {
100 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 100 DCHECK_CURRENTLY_ON(BrowserThread::UI);
101 101
102 if (render_frame_host->GetParent()) 102 if (render_frame_host->GetParent())
103 return; 103 return;
104 104
105 is_error_page_ = is_error_page; 105 is_error_page_ = is_error_page;
106 } 106 }
107 107
108 void NetErrorTabHelper::DidCommitProvisionalLoadForFrame( 108 void NetErrorTabHelper::DidCommitProvisionalLoadForFrame(
109 content::RenderFrameHost* render_frame_host, 109 content::RenderFrameHost* render_frame_host,
110 const GURL& url, 110 const GURL& url,
111 PageTransition transition_type) { 111 PageTransition transition_type) {
112 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 112 DCHECK_CURRENTLY_ON(BrowserThread::UI);
113 113
114 if (render_frame_host->GetParent()) 114 if (render_frame_host->GetParent())
115 return; 115 return;
116 116
117 // Resend status every time an error page commits; this is somewhat spammy, 117 // Resend status every time an error page commits; this is somewhat spammy,
118 // but ensures that the status will make it to the real error page, even if 118 // but ensures that the status will make it to the real error page, even if
119 // the link doctor loads a blank intermediate page or the tab switches 119 // the link doctor loads a blank intermediate page or the tab switches
120 // renderer processes. 120 // renderer processes.
121 if (is_error_page_ && dns_error_active_) { 121 if (is_error_page_ && dns_error_active_) {
122 dns_error_page_committed_ = true; 122 dns_error_page_committed_ = true;
123 DVLOG(1) << "Committed error page; resending status."; 123 DVLOG(1) << "Committed error page; resending status.";
124 SendInfo(); 124 SendInfo();
125 } else { 125 } else {
126 dns_error_active_ = false; 126 dns_error_active_ = false;
127 dns_error_page_committed_ = false; 127 dns_error_page_committed_ = false;
128 } 128 }
129 } 129 }
130 130
131 void NetErrorTabHelper::DidFailProvisionalLoad( 131 void NetErrorTabHelper::DidFailProvisionalLoad(
132 content::RenderFrameHost* render_frame_host, 132 content::RenderFrameHost* render_frame_host,
133 const GURL& validated_url, 133 const GURL& validated_url,
134 int error_code, 134 int error_code,
135 const base::string16& error_description) { 135 const base::string16& error_description) {
136 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 136 DCHECK_CURRENTLY_ON(BrowserThread::UI);
137 137
138 if (render_frame_host->GetParent()) 138 if (render_frame_host->GetParent())
139 return; 139 return;
140 140
141 if (IsDnsError(error_code)) { 141 if (IsDnsError(error_code)) {
142 dns_error_active_ = true; 142 dns_error_active_ = true;
143 OnMainFrameDnsError(); 143 OnMainFrameDnsError();
144 } 144 }
145 } 145 }
146 146
147 NetErrorTabHelper::NetErrorTabHelper(WebContents* contents) 147 NetErrorTabHelper::NetErrorTabHelper(WebContents* contents)
148 : WebContentsObserver(contents), 148 : WebContentsObserver(contents),
149 is_error_page_(false), 149 is_error_page_(false),
150 dns_error_active_(false), 150 dns_error_active_(false),
151 dns_error_page_committed_(false), 151 dns_error_page_committed_(false),
152 dns_probe_status_(chrome_common_net::DNS_PROBE_POSSIBLE), 152 dns_probe_status_(chrome_common_net::DNS_PROBE_POSSIBLE),
153 weak_factory_(this) { 153 weak_factory_(this) {
154 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 154 DCHECK_CURRENTLY_ON(BrowserThread::UI);
155 155
156 // If this helper is under test, it won't have a WebContents. 156 // If this helper is under test, it won't have a WebContents.
157 if (contents) 157 if (contents)
158 InitializePref(contents); 158 InitializePref(contents);
159 } 159 }
160 160
161 void NetErrorTabHelper::OnMainFrameDnsError() { 161 void NetErrorTabHelper::OnMainFrameDnsError() {
162 if (ProbesAllowed()) { 162 if (ProbesAllowed()) {
163 // Don't start more than one probe at a time. 163 // Don't start more than one probe at a time.
164 if (dns_probe_status_ != chrome_common_net::DNS_PROBE_STARTED) { 164 if (dns_probe_status_ != chrome_common_net::DNS_PROBE_STARTED) {
165 StartDnsProbe(); 165 StartDnsProbe();
166 dns_probe_status_ = chrome_common_net::DNS_PROBE_STARTED; 166 dns_probe_status_ = chrome_common_net::DNS_PROBE_STARTED;
167 } 167 }
168 } else { 168 } else {
169 dns_probe_status_ = chrome_common_net::DNS_PROBE_NOT_RUN; 169 dns_probe_status_ = chrome_common_net::DNS_PROBE_NOT_RUN;
170 } 170 }
171 } 171 }
172 172
173 void NetErrorTabHelper::StartDnsProbe() { 173 void NetErrorTabHelper::StartDnsProbe() {
174 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 174 DCHECK_CURRENTLY_ON(BrowserThread::UI);
175 DCHECK(dns_error_active_); 175 DCHECK(dns_error_active_);
176 DCHECK_NE(chrome_common_net::DNS_PROBE_STARTED, dns_probe_status_); 176 DCHECK_NE(chrome_common_net::DNS_PROBE_STARTED, dns_probe_status_);
177 177
178 DVLOG(1) << "Starting DNS probe."; 178 DVLOG(1) << "Starting DNS probe.";
179 179
180 BrowserThread::PostTask( 180 BrowserThread::PostTask(
181 BrowserThread::IO, 181 BrowserThread::IO,
182 FROM_HERE, 182 FROM_HERE,
183 base::Bind(&StartDnsProbeOnIOThread, 183 base::Bind(&StartDnsProbeOnIOThread,
184 base::Bind(&NetErrorTabHelper::OnDnsProbeFinished, 184 base::Bind(&NetErrorTabHelper::OnDnsProbeFinished,
185 weak_factory_.GetWeakPtr()), 185 weak_factory_.GetWeakPtr()),
186 g_browser_process->io_thread())); 186 g_browser_process->io_thread()));
187 } 187 }
188 188
189 void NetErrorTabHelper::OnDnsProbeFinished(DnsProbeStatus result) { 189 void NetErrorTabHelper::OnDnsProbeFinished(DnsProbeStatus result) {
190 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 190 DCHECK_CURRENTLY_ON(BrowserThread::UI);
191 DCHECK_EQ(chrome_common_net::DNS_PROBE_STARTED, dns_probe_status_); 191 DCHECK_EQ(chrome_common_net::DNS_PROBE_STARTED, dns_probe_status_);
192 DCHECK(chrome_common_net::DnsProbeStatusIsFinished(result)); 192 DCHECK(chrome_common_net::DnsProbeStatusIsFinished(result));
193 193
194 DVLOG(1) << "Finished DNS probe with result " 194 DVLOG(1) << "Finished DNS probe with result "
195 << DnsProbeStatusToString(result) << "."; 195 << DnsProbeStatusToString(result) << ".";
196 196
197 dns_probe_status_ = result; 197 dns_probe_status_ = result;
198 198
199 if (dns_error_page_committed_) 199 if (dns_error_page_committed_)
200 SendInfo(); 200 SendInfo();
(...skipping 24 matching lines...) Expand all
225 DVLOG(1) << "Sending status " << DnsProbeStatusToString(dns_probe_status_); 225 DVLOG(1) << "Sending status " << DnsProbeStatusToString(dns_probe_status_);
226 content::RenderFrameHost* rfh = web_contents()->GetMainFrame(); 226 content::RenderFrameHost* rfh = web_contents()->GetMainFrame();
227 rfh->Send(new ChromeViewMsg_NetErrorInfo(rfh->GetRoutingID(), 227 rfh->Send(new ChromeViewMsg_NetErrorInfo(rfh->GetRoutingID(),
228 dns_probe_status_)); 228 dns_probe_status_));
229 229
230 if (!dns_probe_status_snoop_callback_.is_null()) 230 if (!dns_probe_status_snoop_callback_.is_null())
231 dns_probe_status_snoop_callback_.Run(dns_probe_status_); 231 dns_probe_status_snoop_callback_.Run(dns_probe_status_);
232 } 232 }
233 233
234 } // namespace chrome_browser_net 234 } // namespace chrome_browser_net
OLDNEW
« no previous file with comments | « chrome/browser/net/crl_set_fetcher.cc ('k') | chrome/browser/net/net_log_temp_file.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698