summaryrefslogtreecommitdiffstats
path: root/chrome/browser/drive
diff options
context:
space:
mode:
authorhashimoto@chromium.org <hashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-06-21 16:21:30 +0000
committerhashimoto@chromium.org <hashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-06-21 16:21:30 +0000
commit5bbabede9673d47ad169bdecd62103e2e297149d (patch)
tree775d63357ec49451e60590e8660b44a169a2726d /chrome/browser/drive
parent827fab41494e7256d28b62b0bb94b824f32c5db1 (diff)
downloadchromium_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.cc7
-rw-r--r--chrome/browser/drive/drive_uploader.h7
-rw-r--r--chrome/browser/drive/drive_uploader_unittest.cc37
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());