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

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

Issue 12223080: Bind weak ptr in PostStartDnsProbeTask, not StartDnsProbe (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Fix nits Created 7 years, 10 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 | « no previous file | no next file » | 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/metrics/field_trial.h" 8 #include "base/metrics/field_trial.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 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 bool IsDnsError(int net_error) { 43 bool IsDnsError(int net_error) {
44 return net_error == net::ERR_NAME_NOT_RESOLVED || 44 return net_error == net::ERR_NAME_NOT_RESOLVED ||
45 net_error == net::ERR_NAME_RESOLUTION_FAILED; 45 net_error == net::ERR_NAME_RESOLUTION_FAILED;
46 } 46 }
47 47
48 bool GetEnabledByTrial() { 48 bool GetEnabledByTrial() {
49 return (FieldTrialList::FindFullName(kDnsProbeFieldTrialName) 49 return (FieldTrialList::FindFullName(kDnsProbeFieldTrialName)
50 == kDnsProbeFieldTrialEnableGroupName); 50 == kDnsProbeFieldTrialEnableGroupName);
51 } 51 }
52 52
53 void DnsProbeCallback( 53 void OnDnsProbeFinishedOnIOThread(
54 base::WeakPtr<NetErrorTabHelper> tab_helper, 54 const base::Callback<void(DnsProbeResult)>& callback,
55 base::Callback<void(NetErrorTabHelper*, DnsProbeResult)> callback,
56 DnsProbeResult result) { 55 DnsProbeResult result) {
57 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 56 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
58 57
59 BrowserThread::PostTask( 58 BrowserThread::PostTask(
60 BrowserThread::UI, 59 BrowserThread::UI,
61 FROM_HERE, 60 FROM_HERE,
62 base::Bind(callback, tab_helper, result)); 61 base::Bind(callback, result));
63 } 62 }
64 63
65 void StartDnsProbe( 64 void StartDnsProbeOnIOThread(
66 base::WeakPtr<NetErrorTabHelper> tab_helper, 65 const base::Callback<void(DnsProbeResult)>& callback) {
67 base::Callback<void(NetErrorTabHelper*, DnsProbeResult)> callback,
68 IOThread* io_thread) {
69 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 66 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
70 67
71 DnsProbeService* probe_service = 68 DnsProbeService* probe_service =
72 io_thread->globals()->dns_probe_service.get(); 69 g_browser_process->io_thread()->globals()->dns_probe_service.get();
73 probe_service->ProbeDns(base::Bind(&DnsProbeCallback, 70
74 tab_helper, 71 probe_service->ProbeDns(base::Bind(&OnDnsProbeFinishedOnIOThread, callback));
75 callback));
76 } 72 }
77 73
78 } // namespace 74 } // namespace
79 75
80 NetErrorTabHelper::~NetErrorTabHelper() { 76 NetErrorTabHelper::~NetErrorTabHelper() {
81 } 77 }
82 78
83 // static 79 // static
84 void NetErrorTabHelper::set_state_for_testing(TestingState state) { 80 void NetErrorTabHelper::set_state_for_testing(TestingState state) {
85 testing_state_ = state; 81 testing_state_ = state;
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 178
183 PostStartDnsProbeTask(); 179 PostStartDnsProbeTask();
184 180
185 dns_probe_state_ = DNS_PROBE_STARTED; 181 dns_probe_state_ = DNS_PROBE_STARTED;
186 } 182 }
187 183
188 void NetErrorTabHelper::PostStartDnsProbeTask() { 184 void NetErrorTabHelper::PostStartDnsProbeTask() {
189 BrowserThread::PostTask( 185 BrowserThread::PostTask(
190 BrowserThread::IO, 186 BrowserThread::IO,
191 FROM_HERE, 187 FROM_HERE,
192 base::Bind(&StartDnsProbe, 188 base::Bind(&StartDnsProbeOnIOThread,
193 weak_factory_.GetWeakPtr(), 189 base::Bind(&NetErrorTabHelper::OnDnsProbeFinished,
194 base::Bind(&NetErrorTabHelper::OnDnsProbeFinished), 190 weak_factory_.GetWeakPtr())));
195 g_browser_process->io_thread()));
196 } 191 }
197 192
198 void NetErrorTabHelper::OnDnsProbeFinished(DnsProbeResult result) { 193 void NetErrorTabHelper::OnDnsProbeFinished(DnsProbeResult result) {
199 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 194 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
200 DCHECK_EQ(DNS_PROBE_STARTED, dns_probe_state_); 195 DCHECK_EQ(DNS_PROBE_STARTED, dns_probe_state_);
201 196
202 dns_probe_result_ = result; 197 dns_probe_result_ = result;
203 dns_probe_state_ = DNS_PROBE_FINISHED; 198 dns_probe_state_ = DNS_PROBE_FINISHED;
204 MaybeSendInfo(); 199 MaybeSendInfo();
205 } 200 }
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 if (testing_state_ != TESTING_DEFAULT) 234 if (testing_state_ != TESTING_DEFAULT)
240 return testing_state_ == TESTING_FORCE_ENABLED; 235 return testing_state_ == TESTING_FORCE_ENABLED;
241 236
242 // TODO(ttuttle): Disable on mobile? 237 // TODO(ttuttle): Disable on mobile?
243 return enabled_by_trial_ 238 return enabled_by_trial_
244 && pref_initialized_ 239 && pref_initialized_
245 && *resolve_errors_with_web_service_; 240 && *resolve_errors_with_web_service_;
246 } 241 }
247 242
248 } // namespace chrome_browser_net 243 } // namespace chrome_browser_net
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698