| Index: content/browser/download/download_browsertest.cc
|
| diff --git a/content/browser/download/download_browsertest.cc b/content/browser/download/download_browsertest.cc
|
| index c85b7d515dd67dbfb526b40ec76adf89fa87c5ac..1ce84a13ec72041a5f3ef7d269e9ac6657b87b70 100644
|
| --- a/content/browser/download/download_browsertest.cc
|
| +++ b/content/browser/download/download_browsertest.cc
|
| @@ -37,6 +37,7 @@
|
| #include "content/browser/download/download_item_impl.h"
|
| #include "content/browser/download/download_manager_impl.h"
|
| #include "content/browser/download/download_resource_handler.h"
|
| +#include "content/browser/download/download_task_runner.h"
|
| #include "content/browser/download/parallel_download_utils.h"
|
| #include "content/browser/loader/resource_dispatcher_host_impl.h"
|
| #include "content/browser/web_contents/web_contents_impl.h"
|
| @@ -229,7 +230,7 @@ DownloadFileWithDelay::~DownloadFileWithDelay() {}
|
| void DownloadFileWithDelay::RenameAndUniquify(
|
| const base::FilePath& full_path,
|
| const RenameCompletionCallback& callback) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::FILE);
|
| + DCHECK(GetDownloadTaskRunner()->RunsTasksInCurrentSequence());
|
| DownloadFileImpl::RenameAndUniquify(
|
| full_path, base::Bind(DownloadFileWithDelay::RenameCallbackWrapper,
|
| owner_, callback));
|
| @@ -241,7 +242,7 @@ void DownloadFileWithDelay::RenameAndAnnotate(
|
| const GURL& source_url,
|
| const GURL& referrer_url,
|
| const RenameCompletionCallback& callback) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::FILE);
|
| + DCHECK(GetDownloadTaskRunner()->RunsTasksInCurrentSequence());
|
| DownloadFileImpl::RenameAndAnnotate(
|
| full_path,
|
| client_guid,
|
| @@ -275,12 +276,9 @@ DownloadFile* DownloadFileWithDelayFactory::CreateFile(
|
| std::unique_ptr<ByteStreamReader> stream,
|
| const net::NetLogWithSource& net_log,
|
| base::WeakPtr<DownloadDestinationObserver> observer) {
|
| - return new DownloadFileWithDelay(std::move(save_info),
|
| - default_download_directory,
|
| - std::move(stream),
|
| - net_log,
|
| - observer,
|
| - weak_ptr_factory_.GetWeakPtr());
|
| + return new DownloadFileWithDelay(
|
| + std::move(save_info), default_download_directory, std::move(stream),
|
| + net_log, observer, weak_ptr_factory_.GetWeakPtr());
|
| }
|
|
|
| void DownloadFileWithDelayFactory::AddRenameCallback(base::Closure callback) {
|
| @@ -321,7 +319,7 @@ class CountingDownloadFile : public DownloadFileImpl {
|
| observer) {}
|
|
|
| ~CountingDownloadFile() override {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::FILE);
|
| + DCHECK(GetDownloadTaskRunner()->RunsTasksInCurrentSequence());
|
| active_files_--;
|
| }
|
|
|
| @@ -330,14 +328,14 @@ class CountingDownloadFile : public DownloadFileImpl {
|
| const CancelRequestCallback& cancel_request_callback,
|
| const DownloadItem::ReceivedSlices& received_slices,
|
| bool is_parallelizable) override {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::FILE);
|
| + DCHECK(GetDownloadTaskRunner()->RunsTasksInCurrentSequence());
|
| active_files_++;
|
| DownloadFileImpl::Initialize(callback, cancel_request_callback,
|
| received_slices, is_parallelizable);
|
| }
|
|
|
| static void GetNumberActiveFiles(int* result) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::FILE);
|
| + DCHECK(GetDownloadTaskRunner()->RunsTasksInCurrentSequence());
|
| *result = active_files_;
|
| }
|
|
|
| @@ -345,8 +343,8 @@ class CountingDownloadFile : public DownloadFileImpl {
|
| // until data is returned.
|
| static int GetNumberActiveFilesFromFileThread() {
|
| int result = -1;
|
| - BrowserThread::PostTaskAndReply(
|
| - BrowserThread::FILE, FROM_HERE,
|
| + GetDownloadTaskRunner()->PostTaskAndReply(
|
| + FROM_HERE,
|
| base::Bind(&CountingDownloadFile::GetNumberActiveFiles, &result),
|
| base::MessageLoop::current()->QuitWhenIdleClosure());
|
| base::RunLoop().Run();
|
| @@ -374,9 +372,7 @@ class CountingDownloadFileFactory : public DownloadFileFactory {
|
| base::WeakPtr<DownloadDestinationObserver> observer) override {
|
| return new CountingDownloadFile(std::move(save_info),
|
| default_downloads_directory,
|
| - std::move(stream),
|
| - net_log,
|
| - observer);
|
| + std::move(stream), net_log, observer);
|
| }
|
| };
|
|
|
| @@ -908,7 +904,7 @@ IN_PROC_BROWSER_TEST_F(DownloadContentTest, CancelAtFinalRename) {
|
| download_manager->GetAllDownloads(&items);
|
| ASSERT_EQ(1u, items.size());
|
| items[0]->Cancel(true);
|
| - RunAllPendingInMessageLoop();
|
| + RunAllBlockingPoolTasksUntilIdle();
|
|
|
| // Check state.
|
| EXPECT_EQ(DownloadItem::CANCELLED, items[0]->GetState());
|
| @@ -1076,7 +1072,7 @@ IN_PROC_BROWSER_TEST_F(DownloadContentTest, ShutdownAtRelease) {
|
| ASSERT_EQ(1u, items.size());
|
| items[0]->Cancel(true);
|
| EXPECT_EQ(DownloadItem::IN_PROGRESS, items[0]->GetState());
|
| - RunAllPendingInMessageLoop();
|
| + RunAllBlockingPoolTasksUntilIdle();
|
| EXPECT_EQ(DownloadItem::IN_PROGRESS, items[0]->GetState());
|
|
|
| MockDownloadItemObserver observer;
|
| @@ -1497,8 +1493,7 @@ IN_PROC_BROWSER_TEST_F(DownloadContentTest, RecoverFromInitFileError) {
|
| // quiesced before clearing and injecting the new errors, as the
|
| // InjectErrors() routine alters the currently in use download file
|
| // factory, which is a file thread object.
|
| - RunAllPendingInMessageLoop(BrowserThread::FILE);
|
| - RunAllPendingInMessageLoop();
|
| + RunAllBlockingPoolTasksUntilIdle();
|
|
|
| // Clear the old errors list.
|
| injector->ClearError();
|
| @@ -1540,8 +1535,7 @@ IN_PROC_BROWSER_TEST_F(DownloadContentTest,
|
| // quiesced before clearing and injecting the new errors, as the
|
| // InjectErrors() routine alters the currently in use download file
|
| // factory, which is a file thread object.
|
| - RunAllPendingInMessageLoop(BrowserThread::FILE);
|
| - RunAllPendingInMessageLoop();
|
| + RunAllBlockingPoolTasksUntilIdle();
|
|
|
| // Clear the old errors list.
|
| injector->ClearError();
|
| @@ -1577,9 +1571,8 @@ IN_PROC_BROWSER_TEST_F(DownloadContentTest, RecoverFromFinalRenameError) {
|
| // We need to make sure that any cross-thread downloads communication has
|
| // quiesced before clearing and injecting the new errors, as the
|
| // InjectErrors() routine alters the currently in use download file
|
| - // factory, which is a file thread object.
|
| - RunAllPendingInMessageLoop(BrowserThread::FILE);
|
| - RunAllPendingInMessageLoop();
|
| + // factory, which is a download sequence object.
|
| + RunAllBlockingPoolTasksUntilIdle();
|
|
|
| // Clear the old errors list.
|
| injector->ClearError();
|
| @@ -1657,8 +1650,7 @@ IN_PROC_BROWSER_TEST_F(DownloadContentTest, CancelInterruptedDownload) {
|
| ASSERT_TRUE(PathExists(intermediate_path));
|
|
|
| download->Cancel(true /* user_cancel */);
|
| - RunAllPendingInMessageLoop(BrowserThread::FILE);
|
| - RunAllPendingInMessageLoop();
|
| + RunAllBlockingPoolTasksUntilIdle();
|
|
|
| // The intermediate file should now be gone.
|
| EXPECT_FALSE(PathExists(intermediate_path));
|
| @@ -1679,8 +1671,7 @@ IN_PROC_BROWSER_TEST_F(DownloadContentTest, RemoveInterruptedDownload) {
|
| ASSERT_TRUE(PathExists(intermediate_path));
|
|
|
| download->Remove();
|
| - RunAllPendingInMessageLoop(BrowserThread::FILE);
|
| - RunAllPendingInMessageLoop();
|
| + RunAllBlockingPoolTasksUntilIdle();
|
|
|
| // The intermediate file should now be gone.
|
| EXPECT_FALSE(PathExists(intermediate_path));
|
| @@ -1701,8 +1692,7 @@ IN_PROC_BROWSER_TEST_F(DownloadContentTest, RemoveCompletedDownload) {
|
| base::FilePath target_path(download->GetTargetFilePath());
|
| EXPECT_TRUE(PathExists(target_path));
|
| download->Remove();
|
| - RunAllPendingInMessageLoop(BrowserThread::FILE);
|
| - RunAllPendingInMessageLoop();
|
| + RunAllBlockingPoolTasksUntilIdle();
|
|
|
| // The file should still exist.
|
| EXPECT_TRUE(PathExists(target_path));
|
| @@ -1741,8 +1731,7 @@ IN_PROC_BROWSER_TEST_F(DownloadContentTest, RemoveResumingDownload) {
|
| request_start_handler.RespondWith(std::string(), net::OK);
|
|
|
| // The intermediate file should now be gone.
|
| - RunAllPendingInMessageLoop(BrowserThread::FILE);
|
| - RunAllPendingInMessageLoop();
|
| + RunAllBlockingPoolTasksUntilIdle();
|
| EXPECT_FALSE(PathExists(intermediate_path));
|
|
|
| parameters.ClearInjectedErrors();
|
| @@ -1792,8 +1781,7 @@ IN_PROC_BROWSER_TEST_F(DownloadContentTest, CancelResumingDownload) {
|
|
|
| // The intermediate file should now be gone.
|
| RunAllPendingInMessageLoop(BrowserThread::IO);
|
| - RunAllPendingInMessageLoop(BrowserThread::FILE);
|
| - RunAllPendingInMessageLoop();
|
| + RunAllBlockingPoolTasksUntilIdle();
|
| EXPECT_FALSE(PathExists(intermediate_path));
|
|
|
| parameters.ClearInjectedErrors();
|
| @@ -1835,8 +1823,7 @@ IN_PROC_BROWSER_TEST_F(DownloadContentTest, RemoveResumedDownload) {
|
| download->Remove();
|
|
|
| // The intermediate file should now be gone.
|
| - RunAllPendingInMessageLoop(BrowserThread::FILE);
|
| - RunAllPendingInMessageLoop();
|
| + RunAllBlockingPoolTasksUntilIdle();
|
| EXPECT_FALSE(PathExists(intermediate_path));
|
| EXPECT_FALSE(PathExists(target_path));
|
| EXPECT_TRUE(EnsureNoPendingDownloads());
|
| @@ -1868,8 +1855,7 @@ IN_PROC_BROWSER_TEST_F(DownloadContentTest, CancelResumedDownload) {
|
| download->Cancel(true);
|
|
|
| // The intermediate file should now be gone.
|
| - RunAllPendingInMessageLoop(BrowserThread::FILE);
|
| - RunAllPendingInMessageLoop();
|
| + RunAllBlockingPoolTasksUntilIdle();
|
| EXPECT_FALSE(PathExists(intermediate_path));
|
| EXPECT_FALSE(PathExists(target_path));
|
| EXPECT_TRUE(EnsureNoPendingDownloads());
|
|
|