Commit 2bc90940 authored by ttuttle@chromium.org's avatar ttuttle@chromium.org

Bind weak ptr in PostStartDnsProbeTask, not StartDnsProbe

A Callback decides when it is constructed whether it needs to do a weak pointer
check when called.  Therefore, pass the weak pointer of NetErrorTabHelper to
base::Bind when we create the callback instead of binding it later in
StartDnsProbe.

BUG=174720

Review URL: https://chromiumcodereview.appspot.com/12223080

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@182301 0039d316-1c4b-4281-b951-d872f2087c98
parent bf88287e
...@@ -50,29 +50,25 @@ bool GetEnabledByTrial() { ...@@ -50,29 +50,25 @@ bool GetEnabledByTrial() {
== kDnsProbeFieldTrialEnableGroupName); == kDnsProbeFieldTrialEnableGroupName);
} }
void DnsProbeCallback( void OnDnsProbeFinishedOnIOThread(
base::WeakPtr<NetErrorTabHelper> tab_helper, const base::Callback<void(DnsProbeResult)>& callback,
base::Callback<void(NetErrorTabHelper*, DnsProbeResult)> callback,
DnsProbeResult result) { DnsProbeResult result) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
BrowserThread::PostTask( BrowserThread::PostTask(
BrowserThread::UI, BrowserThread::UI,
FROM_HERE, FROM_HERE,
base::Bind(callback, tab_helper, result)); base::Bind(callback, result));
} }
void StartDnsProbe( void StartDnsProbeOnIOThread(
base::WeakPtr<NetErrorTabHelper> tab_helper, const base::Callback<void(DnsProbeResult)>& callback) {
base::Callback<void(NetErrorTabHelper*, DnsProbeResult)> callback,
IOThread* io_thread) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
DnsProbeService* probe_service = DnsProbeService* probe_service =
io_thread->globals()->dns_probe_service.get(); g_browser_process->io_thread()->globals()->dns_probe_service.get();
probe_service->ProbeDns(base::Bind(&DnsProbeCallback,
tab_helper, probe_service->ProbeDns(base::Bind(&OnDnsProbeFinishedOnIOThread, callback));
callback));
} }
} // namespace } // namespace
...@@ -189,10 +185,9 @@ void NetErrorTabHelper::PostStartDnsProbeTask() { ...@@ -189,10 +185,9 @@ void NetErrorTabHelper::PostStartDnsProbeTask() {
BrowserThread::PostTask( BrowserThread::PostTask(
BrowserThread::IO, BrowserThread::IO,
FROM_HERE, FROM_HERE,
base::Bind(&StartDnsProbe, base::Bind(&StartDnsProbeOnIOThread,
weak_factory_.GetWeakPtr(), base::Bind(&NetErrorTabHelper::OnDnsProbeFinished,
base::Bind(&NetErrorTabHelper::OnDnsProbeFinished), weak_factory_.GetWeakPtr())));
g_browser_process->io_thread()));
} }
void NetErrorTabHelper::OnDnsProbeFinished(DnsProbeResult result) { void NetErrorTabHelper::OnDnsProbeFinished(DnsProbeResult result) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment