diff options
author | hashimoto@chromium.org <hashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-21 16:21:30 +0000 |
---|---|---|
committer | hashimoto@chromium.org <hashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-21 16:21:30 +0000 |
commit | 5bbabede9673d47ad169bdecd62103e2e297149d (patch) | |
tree | 775d63357ec49451e60590e8660b44a169a2726d /chrome/browser/drive | |
parent | 827fab41494e7256d28b62b0bb94b824f32c5db1 (diff) | |
download | chromium_src-5bbabede9673d47ad169bdecd62103e2e297149d.zip chromium_src-5bbabede9673d47ad169bdecd62103e2e297149d.tar.gz chromium_src-5bbabede9673d47ad169bdecd62103e2e297149d.tar.bz2 |
drive: Pass TaskRunner to DriveUploader explicitly
BUG=252588
TEST=unit_tests
Review URL: https://chromiumcodereview.appspot.com/17520005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@207852 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/drive')
-rw-r--r-- | chrome/browser/drive/drive_uploader.cc | 7 | ||||
-rw-r--r-- | chrome/browser/drive/drive_uploader.h | 7 | ||||
-rw-r--r-- | chrome/browser/drive/drive_uploader_unittest.cc | 37 |
3 files changed, 28 insertions, 23 deletions
diff --git a/chrome/browser/drive/drive_uploader.cc b/chrome/browser/drive/drive_uploader.cc index c96d72d..45db431 100644 --- a/chrome/browser/drive/drive_uploader.cc +++ b/chrome/browser/drive/drive_uploader.cc @@ -11,7 +11,6 @@ #include "base/file_util.h" #include "base/strings/string_number_conversions.h" #include "base/task_runner_util.h" -#include "base/threading/sequenced_worker_pool.h" #include "chrome/browser/drive/drive_service_interface.h" #include "chrome/browser/google_apis/gdata_wapi_parser.h" #include "content/public/browser/browser_thread.h" @@ -113,8 +112,10 @@ struct DriveUploader::UploadFileInfo { DISALLOW_COPY_AND_ASSIGN(UploadFileInfo); }; -DriveUploader::DriveUploader(DriveServiceInterface* drive_service) +DriveUploader::DriveUploader(DriveServiceInterface* drive_service, + base::TaskRunner* blocking_task_runner) : drive_service_(drive_service), + blocking_task_runner_(blocking_task_runner), weak_ptr_factory_(this) { } @@ -199,7 +200,7 @@ CancelCallback DriveUploader::StartUploadFile( UploadFileInfo* info_ptr = upload_file_info.get(); base::PostTaskAndReplyWithResult( - BrowserThread::GetBlockingPool(), + blocking_task_runner_, FROM_HERE, base::Bind(&file_util::GetFileSize, info_ptr->file_path, &info_ptr->content_length), diff --git a/chrome/browser/drive/drive_uploader.h b/chrome/browser/drive/drive_uploader.h index 89e18a1..cb8bc80 100644 --- a/chrome/browser/drive/drive_uploader.h +++ b/chrome/browser/drive/drive_uploader.h @@ -9,6 +9,7 @@ #include "base/basictypes.h" #include "base/callback_forward.h" +#include "base/memory/ref_counted.h" #include "base/memory/weak_ptr.h" #include "chrome/browser/drive/drive_service_interface.h" #include "chrome/browser/google_apis/gdata_errorcode.h" @@ -18,6 +19,7 @@ class GURL; namespace base { class FilePath; +class TaskRunner; } namespace google_apis { @@ -106,7 +108,8 @@ class DriveUploaderInterface { class DriveUploader : public DriveUploaderInterface { public: - explicit DriveUploader(DriveServiceInterface* drive_service); + DriveUploader(DriveServiceInterface* drive_service, + base::TaskRunner* blocking_task_runner); virtual ~DriveUploader(); // DriveUploaderInterface overrides. @@ -191,6 +194,8 @@ class DriveUploader : public DriveUploaderInterface { // DriveUploader instance. DriveServiceInterface* drive_service_; // Not owned by this class. + scoped_refptr<base::TaskRunner> blocking_task_runner_; + // Note: This should remain the last member so it'll be destroyed and // invalidate its weak pointers before any other members are destroyed. base::WeakPtrFactory<DriveUploader> weak_ptr_factory_; diff --git a/chrome/browser/drive/drive_uploader_unittest.cc b/chrome/browser/drive/drive_uploader_unittest.cc index 2ce1287..d01d20f 100644 --- a/chrome/browser/drive/drive_uploader_unittest.cc +++ b/chrome/browser/drive/drive_uploader_unittest.cc @@ -4,16 +4,14 @@ #include "chrome/browser/drive/drive_uploader.h" -#include <algorithm> -#include <cstdlib> #include <string> -#include <utility> #include <vector> #include "base/bind.h" #include "base/files/scoped_temp_dir.h" #include "base/memory/scoped_ptr.h" #include "base/message_loop.h" +#include "base/run_loop.h" #include "base/values.h" #include "chrome/browser/drive/dummy_drive_service.h" #include "chrome/browser/google_apis/test_util.h" @@ -316,7 +314,7 @@ TEST_F(DriveUploaderTest, UploadExisting0KB) { scoped_ptr<ResourceEntry> resource_entry; MockDriveServiceWithUploadExpectation mock_service(local_path, data.size()); - DriveUploader uploader(&mock_service); + DriveUploader uploader(&mock_service, base::MessageLoopProxy::current()); std::vector<test_util::ProgressInfo> upload_progress_values; uploader.UploadExistingFile( kTestInitiateUploadResourceId, @@ -327,7 +325,7 @@ TEST_F(DriveUploaderTest, UploadExisting0KB) { &error, &upload_location, &resource_entry), base::Bind(&test_util::AppendProgressCallbackResult, &upload_progress_values)); - test_util::RunBlockingPoolTask(); + base::RunLoop().RunUntilIdle(); EXPECT_EQ(1, mock_service.resume_upload_call_count()); EXPECT_EQ(0, mock_service.received_bytes()); @@ -350,7 +348,7 @@ TEST_F(DriveUploaderTest, UploadExisting512KB) { scoped_ptr<ResourceEntry> resource_entry; MockDriveServiceWithUploadExpectation mock_service(local_path, data.size()); - DriveUploader uploader(&mock_service); + DriveUploader uploader(&mock_service, base::MessageLoopProxy::current()); std::vector<test_util::ProgressInfo> upload_progress_values; uploader.UploadExistingFile( kTestInitiateUploadResourceId, @@ -361,7 +359,7 @@ TEST_F(DriveUploaderTest, UploadExisting512KB) { &error, &upload_location, &resource_entry), base::Bind(&test_util::AppendProgressCallbackResult, &upload_progress_values)); - test_util::RunBlockingPoolTask(); + base::RunLoop().RunUntilIdle(); // 512KB upload should not be split into multiple chunks. EXPECT_EQ(1, mock_service.resume_upload_call_count()); @@ -386,7 +384,7 @@ TEST_F(DriveUploaderTest, InitiateUploadFail) { scoped_ptr<ResourceEntry> resource_entry; MockDriveServiceNoConnectionAtInitiate mock_service; - DriveUploader uploader(&mock_service); + DriveUploader uploader(&mock_service, base::MessageLoopProxy::current()); uploader.UploadExistingFile( kTestInitiateUploadResourceId, local_path, @@ -395,7 +393,7 @@ TEST_F(DriveUploaderTest, InitiateUploadFail) { test_util::CreateCopyResultCallback( &error, &upload_location, &resource_entry), google_apis::ProgressCallback()); - test_util::RunBlockingPoolTask(); + base::RunLoop().RunUntilIdle(); EXPECT_EQ(GDATA_NO_CONNECTION, error); EXPECT_TRUE(upload_location.is_empty()); @@ -413,7 +411,7 @@ TEST_F(DriveUploaderTest, InitiateUploadNoConflict) { scoped_ptr<ResourceEntry> resource_entry; MockDriveServiceWithUploadExpectation mock_service(local_path, data.size()); - DriveUploader uploader(&mock_service); + DriveUploader uploader(&mock_service, base::MessageLoopProxy::current()); uploader.UploadExistingFile( kTestInitiateUploadResourceId, local_path, @@ -422,7 +420,7 @@ TEST_F(DriveUploaderTest, InitiateUploadNoConflict) { test_util::CreateCopyResultCallback( &error, &upload_location, &resource_entry), google_apis::ProgressCallback()); - test_util::RunBlockingPoolTask(); + base::RunLoop().RunUntilIdle(); EXPECT_EQ(HTTP_SUCCESS, error); EXPECT_TRUE(upload_location.is_empty()); @@ -440,7 +438,7 @@ TEST_F(DriveUploaderTest, InitiateUploadConflict) { scoped_ptr<ResourceEntry> resource_entry; MockDriveServiceWithUploadExpectation mock_service(local_path, data.size()); - DriveUploader uploader(&mock_service); + DriveUploader uploader(&mock_service, base::MessageLoopProxy::current()); uploader.UploadExistingFile( kTestInitiateUploadResourceId, local_path, @@ -449,7 +447,7 @@ TEST_F(DriveUploaderTest, InitiateUploadConflict) { test_util::CreateCopyResultCallback( &error, &upload_location, &resource_entry), google_apis::ProgressCallback()); - test_util::RunBlockingPoolTask(); + base::RunLoop().RunUntilIdle(); EXPECT_EQ(HTTP_CONFLICT, error); EXPECT_TRUE(upload_location.is_empty()); @@ -466,7 +464,7 @@ TEST_F(DriveUploaderTest, ResumeUploadFail) { scoped_ptr<ResourceEntry> resource_entry; MockDriveServiceNoConnectionAtResume mock_service; - DriveUploader uploader(&mock_service); + DriveUploader uploader(&mock_service, base::MessageLoopProxy::current()); uploader.UploadExistingFile( kTestInitiateUploadResourceId, local_path, @@ -475,7 +473,7 @@ TEST_F(DriveUploaderTest, ResumeUploadFail) { test_util::CreateCopyResultCallback( &error, &upload_location, &resource_entry), google_apis::ProgressCallback()); - test_util::RunBlockingPoolTask(); + base::RunLoop().RunUntilIdle(); EXPECT_EQ(GDATA_NO_CONNECTION, error); EXPECT_EQ(GURL(kTestUploadExistingFileURL), upload_location); @@ -486,7 +484,8 @@ TEST_F(DriveUploaderTest, NonExistingSourceFile) { GURL upload_location; scoped_ptr<ResourceEntry> resource_entry; - DriveUploader uploader(NULL); // NULL, the service won't be used. + DriveUploader uploader(NULL, // NULL, the service won't be used. + base::MessageLoopProxy::current()); uploader.UploadExistingFile( kTestInitiateUploadResourceId, temp_dir_.path().AppendASCII("_this_path_should_not_exist_"), @@ -495,7 +494,7 @@ TEST_F(DriveUploaderTest, NonExistingSourceFile) { test_util::CreateCopyResultCallback( &error, &upload_location, &resource_entry), google_apis::ProgressCallback()); - test_util::RunBlockingPoolTask(); + base::RunLoop().RunUntilIdle(); // Should return failure without doing any attempt to connect to the server. EXPECT_EQ(HTTP_NOT_FOUND, error); @@ -513,7 +512,7 @@ TEST_F(DriveUploaderTest, ResumeUpload) { scoped_ptr<ResourceEntry> resource_entry; MockDriveServiceWithUploadExpectation mock_service(local_path, data.size()); - DriveUploader uploader(&mock_service); + DriveUploader uploader(&mock_service, base::MessageLoopProxy::current()); // Emulate the situation that the only first part is successfully uploaded, // but not the latter half. mock_service.set_received_bytes(512 * 1024); @@ -527,7 +526,7 @@ TEST_F(DriveUploaderTest, ResumeUpload) { &error, &upload_location, &resource_entry), base::Bind(&test_util::AppendProgressCallbackResult, &upload_progress_values)); - test_util::RunBlockingPoolTask(); + base::RunLoop().RunUntilIdle(); EXPECT_EQ(1, mock_service.resume_upload_call_count()); EXPECT_EQ(1024 * 1024, mock_service.received_bytes()); |