| Index: content/browser/download/save_package.cc
|
| diff --git a/content/browser/download/save_package.cc b/content/browser/download/save_package.cc
|
| index c299f6766733da06df7e80ee2f9667575d94d01c..f42cf39a0c5270c1c6f5c53e3a585a94834ffffe 100644
|
| --- a/content/browser/download/save_package.cc
|
| +++ b/content/browser/download/save_package.cc
|
| @@ -20,6 +20,7 @@
|
| #include "base/strings/string_split.h"
|
| #include "base/strings/sys_string_conversions.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| +#include "base/task_runner_util.h"
|
| #include "base/threading/thread.h"
|
| #include "build/build_config.h"
|
| #include "components/url_formatter/url_formatter.h"
|
| @@ -27,6 +28,7 @@
|
| #include "content/browser/download/download_item_impl.h"
|
| #include "content/browser/download/download_manager_impl.h"
|
| #include "content/browser/download/download_stats.h"
|
| +#include "content/browser/download/download_task_runner.h"
|
| #include "content/browser/download/save_file.h"
|
| #include "content/browser/download/save_file_manager.h"
|
| #include "content/browser/download/save_item.h"
|
| @@ -628,10 +630,9 @@ void SavePackage::Stop(bool cancel_download_item) {
|
| for (const auto& it : saved_failed_items_)
|
| save_item_ids.push_back(it.first);
|
|
|
| - BrowserThread::PostTask(
|
| - BrowserThread::FILE, FROM_HERE,
|
| - base::Bind(&SaveFileManager::RemoveSavedFileFromFileMap, file_manager_,
|
| - save_item_ids));
|
| + GetDownloadTaskRunner()->PostTask(
|
| + FROM_HERE, base::Bind(&SaveFileManager::RemoveSavedFileFromFileMap,
|
| + file_manager_, save_item_ids));
|
|
|
| finished_ = true;
|
| wait_state_ = FAILED;
|
| @@ -657,15 +658,11 @@ void SavePackage::CheckFinish() {
|
| for (const auto& it : saved_success_items_)
|
| final_names.insert(std::make_pair(it.first, it.second->full_path()));
|
|
|
| - BrowserThread::PostTask(
|
| - BrowserThread::FILE, FROM_HERE,
|
| - base::Bind(&SaveFileManager::RenameAllFiles,
|
| - file_manager_,
|
| - final_names,
|
| - dir,
|
| - web_contents()->GetRenderProcessHost()->GetID(),
|
| - web_contents()->GetMainFrame()->GetRoutingID(),
|
| - id()));
|
| + GetDownloadTaskRunner()->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&SaveFileManager::RenameAllFiles, file_manager_, final_names,
|
| + dir, web_contents()->GetRenderProcessHost()->GetID(),
|
| + web_contents()->GetMainFrame()->GetRoutingID(), id()));
|
| }
|
|
|
| // Successfully finished all items of this SavePackage.
|
| @@ -697,10 +694,9 @@ void SavePackage::Finish() {
|
| list_of_failed_save_item_ids.push_back(save_item->id());
|
| }
|
|
|
| - BrowserThread::PostTask(
|
| - BrowserThread::FILE, FROM_HERE,
|
| - base::Bind(&SaveFileManager::RemoveSavedFileFromFileMap, file_manager_,
|
| - list_of_failed_save_item_ids));
|
| + GetDownloadTaskRunner()->PostTask(
|
| + FROM_HERE, base::Bind(&SaveFileManager::RemoveSavedFileFromFileMap,
|
| + file_manager_, list_of_failed_save_item_ids));
|
|
|
| if (download_) {
|
| if (save_type_ != SAVE_PAGE_TYPE_AS_MHTML) {
|
| @@ -762,8 +758,8 @@ void SavePackage::SaveFinished(SaveItemId save_item_id,
|
| void SavePackage::SaveCanceled(const SaveItem* save_item) {
|
| DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| file_manager_->RemoveSaveFile(save_item->id(), this);
|
| - BrowserThread::PostTask(
|
| - BrowserThread::FILE, FROM_HERE,
|
| + GetDownloadTaskRunner()->PostTask(
|
| + FROM_HERE,
|
| base::Bind(&SaveFileManager::CancelSave, file_manager_, save_item->id()));
|
| }
|
|
|
| @@ -923,10 +919,9 @@ void SavePackage::GetSerializedHtmlWithLocalLinks() {
|
| number_of_frames_pending_response_++;
|
| } else {
|
| // Notify SaveFileManager about the failure to save this SaveItem.
|
| - BrowserThread::PostTask(
|
| - BrowserThread::FILE, FROM_HERE,
|
| - base::Bind(&SaveFileManager::SaveFinished, file_manager_,
|
| - save_item->id(), id(), false));
|
| + GetDownloadTaskRunner()->PostTask(
|
| + FROM_HERE, base::Bind(&SaveFileManager::SaveFinished, file_manager_,
|
| + save_item->id(), id(), false));
|
| }
|
| }
|
| if (number_of_frames_pending_response_ == 0) {
|
| @@ -1037,8 +1032,8 @@ void SavePackage::OnSerializedHtmlWithLocalLinksResponse(
|
| memcpy(new_data->data(), data.data(), data.size());
|
|
|
| // Call write file functionality in FILE thread.
|
| - BrowserThread::PostTask(
|
| - BrowserThread::FILE, FROM_HERE,
|
| + GetDownloadTaskRunner()->PostTask(
|
| + FROM_HERE,
|
| base::Bind(&SaveFileManager::UpdateSaveProgress, file_manager_,
|
| save_item->id(), base::RetainedRef(new_data),
|
| static_cast<int>(data.size())));
|
| @@ -1048,10 +1043,9 @@ void SavePackage::OnSerializedHtmlWithLocalLinksResponse(
|
| if (end_of_data) {
|
| DVLOG(20) << __func__ << "() save_item_id = " << save_item->id()
|
| << " url = \"" << save_item->url().spec() << "\"";
|
| - BrowserThread::PostTask(
|
| - BrowserThread::FILE, FROM_HERE,
|
| - base::Bind(&SaveFileManager::SaveFinished, file_manager_,
|
| - save_item->id(), id(), true));
|
| + GetDownloadTaskRunner()->PostTask(
|
| + FROM_HERE, base::Bind(&SaveFileManager::SaveFinished, file_manager_,
|
| + save_item->id(), id(), true));
|
| number_of_frames_pending_response_--;
|
| DCHECK_LE(0, number_of_frames_pending_response_);
|
| }
|
| @@ -1283,7 +1277,7 @@ base::FilePath SavePackage::GetSuggestedNameForSaveAs(
|
|
|
| // static
|
| base::FilePath SavePackage::EnsureHtmlExtension(const base::FilePath& name) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::FILE);
|
| + DCHECK(GetDownloadTaskRunner()->RunsTasksInCurrentSequence());
|
|
|
| base::FilePath::StringType ext = name.Extension();
|
| if (!ext.empty())
|
| @@ -1300,7 +1294,7 @@ base::FilePath SavePackage::EnsureHtmlExtension(const base::FilePath& name) {
|
| // static
|
| base::FilePath SavePackage::EnsureMimeExtension(const base::FilePath& name,
|
| const std::string& contents_mime_type) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::FILE);
|
| + DCHECK(GetDownloadTaskRunner()->RunsTasksInCurrentSequence());
|
|
|
| // Start extension at 1 to skip over period if non-empty.
|
| base::FilePath::StringType ext = name.Extension();
|
| @@ -1353,8 +1347,8 @@ void SavePackage::GetSaveInfo() {
|
| }
|
| std::string mime_type = web_contents()->GetContentsMimeType();
|
| bool can_save_as_complete = CanSaveAsComplete(mime_type);
|
| - BrowserThread::PostTaskAndReplyWithResult(
|
| - BrowserThread::FILE, FROM_HERE,
|
| + PostTaskAndReplyWithResult(
|
| + GetDownloadTaskRunner().get(), FROM_HERE,
|
| base::Bind(&SavePackage::CreateDirectoryOnFileThread, title_, page_url_,
|
| can_save_as_complete, mime_type, website_save_dir,
|
| download_save_dir, skip_dir_check),
|
| @@ -1371,7 +1365,7 @@ base::FilePath SavePackage::CreateDirectoryOnFileThread(
|
| const base::FilePath& website_save_dir,
|
| const base::FilePath& download_save_dir,
|
| bool skip_dir_check) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::FILE);
|
| + DCHECK(GetDownloadTaskRunner()->RunsTasksInCurrentSequence());
|
|
|
| base::FilePath suggested_filename = GetSuggestedNameForSaveAs(
|
| title, page_url, can_save_as_complete, mime_type);
|
|
|