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() {
== kDnsProbeFieldTrialEnableGroupName);
}
void DnsProbeCallback(
base::WeakPtr<NetErrorTabHelper> tab_helper,
base::Callback<void(NetErrorTabHelper*, DnsProbeResult)> callback,
void OnDnsProbeFinishedOnIOThread(
const base::Callback<void(DnsProbeResult)>& callback,
DnsProbeResult result) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
BrowserThread::PostTask(
BrowserThread::UI,
FROM_HERE,
base::Bind(callback, tab_helper, result));
base::Bind(callback, result));
}
void StartDnsProbe(
base::WeakPtr<NetErrorTabHelper> tab_helper,
base::Callback<void(NetErrorTabHelper*, DnsProbeResult)> callback,
IOThread* io_thread) {
void StartDnsProbeOnIOThread(
const base::Callback<void(DnsProbeResult)>& callback) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
DnsProbeService* probe_service =
io_thread->globals()->dns_probe_service.get();
probe_service->ProbeDns(base::Bind(&DnsProbeCallback,
tab_helper,
callback));
g_browser_process->io_thread()->globals()->dns_probe_service.get();
probe_service->ProbeDns(base::Bind(&OnDnsProbeFinishedOnIOThread, callback));
}
} // namespace
......@@ -189,10 +185,9 @@ void NetErrorTabHelper::PostStartDnsProbeTask() {
BrowserThread::PostTask(
BrowserThread::IO,
FROM_HERE,
base::Bind(&StartDnsProbe,
weak_factory_.GetWeakPtr(),
base::Bind(&NetErrorTabHelper::OnDnsProbeFinished),
g_browser_process->io_thread()));
base::Bind(&StartDnsProbeOnIOThread,
base::Bind(&NetErrorTabHelper::OnDnsProbeFinished,
weak_factory_.GetWeakPtr())));
}
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