Chromium Code Reviews| Index: content/browser/download/download_resource_handler.cc |
| diff --git a/content/browser/download/download_resource_handler.cc b/content/browser/download/download_resource_handler.cc |
| index d806d9449330cbb7adce8c3f5743334936d37967..3837e5bee8e06926ba4d4032e16999cd78317d11 100644 |
| --- a/content/browser/download/download_resource_handler.cc |
| +++ b/content/browser/download/download_resource_handler.cc |
| @@ -62,10 +62,12 @@ static void StartOnUIThread( |
| scoped_ptr<DownloadCreateInfo> info, |
| scoped_ptr<DownloadResourceHandler::DownloadTabInfo> tab_info, |
| scoped_ptr<ByteStreamReader> stream, |
| + DownloadManager* download_manager, |
| const DownloadUrlParameters::OnStartedCallback& started_cb) { |
| DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| - DownloadManager* download_manager = info->request_handle.GetDownloadManager(); |
| + if (!download_manager) |
| + download_manager = info->request_handle.GetDownloadManager(); |
| if (!download_manager) { |
| // NULL in unittests or if the page closed right after starting the |
| // download. |
| @@ -248,10 +250,9 @@ bool DownloadResourceHandler::OnResponseStarted( |
| BrowserThread::PostTask( |
| BrowserThread::UI, FROM_HERE, |
| - base::Bind(&StartOnUIThread, |
| - base::Passed(&info), |
| - base::Passed(&tab_info_), |
| - base::Passed(&stream_reader), |
| + base::Bind(&StartOnUIThread, base::Passed(&info), |
| + base::Passed(&tab_info_), base::Passed(&stream_reader), |
| + download_manager_.get(), |
|
asanka
2015/11/25 15:53:57
Can't de-reference a WeakPtr on a thread other tha
svaldez
2015/11/25 17:53:28
Yeah, found that out when testing. SHould be fixed
|
| // Pass to StartOnUIThread so that variable |
| // access is always on IO thread but function |
| // is called on UI thread. |