| Index: chrome/browser/chromeos/drive/job_scheduler.cc
|
| diff --git a/chrome/browser/chromeos/drive/job_scheduler.cc b/chrome/browser/chromeos/drive/job_scheduler.cc
|
| index 12813bb20ed7c2461e283c9ffccf8045d02f3055..7e6d3cb1971ddd37f82eccc3c84511037d5d01e5 100644
|
| --- a/chrome/browser/chromeos/drive/job_scheduler.cc
|
| +++ b/chrome/browser/chromeos/drive/job_scheduler.cc
|
| @@ -12,7 +12,6 @@
|
| #include "chrome/browser/chromeos/drive/file_system_util.h"
|
| #include "chrome/browser/chromeos/drive/logging.h"
|
| #include "chrome/browser/google_apis/drive_api_parser.h"
|
| -#include "chrome/browser/google_apis/task_util.h"
|
| #include "chrome/common/pref_names.h"
|
| #include "content/public/browser/browser_thread.h"
|
|
|
| @@ -33,6 +32,41 @@ namespace {
|
| const int kMaxThrottleCount = 4;
|
| const int kMaxRetryCount = 2 * kMaxThrottleCount;
|
|
|
| +// GetDefaultValue returns a value constructed by the default constructor.
|
| +template<typename T> struct DefaultValueCreator {
|
| + static T GetDefaultValue() { return T(); }
|
| +};
|
| +template<typename T> struct DefaultValueCreator<const T&> {
|
| + static T GetDefaultValue() { return T(); }
|
| +};
|
| +
|
| +// Helper of CreateErrorRunCallback implementation.
|
| +// Provides:
|
| +// - ResultType; the type of the Callback which should be returned by
|
| +// CreateErrorRunCallback.
|
| +// - Run(): a static function which takes the original |callback| and |error|,
|
| +// and runs the |callback|.Run() with the error code and default values
|
| +// for remaining arguments.
|
| +template<typename CallbackType> struct CreateErrorRunCallbackHelper;
|
| +
|
| +// CreateErrorRunCallback with two arguments.
|
| +template<typename P1>
|
| +struct CreateErrorRunCallbackHelper<void(google_apis::GDataErrorCode, P1)> {
|
| + static void Run(
|
| + const base::Callback<void(google_apis::GDataErrorCode, P1)>& callback,
|
| + google_apis::GDataErrorCode error) {
|
| + callback.Run(error, DefaultValueCreator<P1>::GetDefaultValue());
|
| + }
|
| +};
|
| +
|
| +// Returns a callback with the tail parameter bound to its default value.
|
| +// In other words, returned_callback.Run(error) runs callback.Run(error, T()).
|
| +template<typename CallbackType>
|
| +base::Callback<void(google_apis::GDataErrorCode)>
|
| +CreateErrorRunCallback(const base::Callback<CallbackType>& callback) {
|
| + return base::Bind(&CreateErrorRunCallbackHelper<CallbackType>::Run, callback);
|
| +}
|
| +
|
| // Parameter struct for RunUploadNewFile.
|
| struct UploadNewFileParams {
|
| std::string parent_resource_id;
|
| @@ -208,7 +242,7 @@ void JobScheduler::GetAboutResource(
|
| weak_ptr_factory_.GetWeakPtr(),
|
| new_job->job_info.job_id,
|
| callback));
|
| - new_job->abort_callback = google_apis::CreateErrorRunCallback(callback);
|
| + new_job->abort_callback = CreateErrorRunCallback(callback);
|
| StartJob(new_job);
|
| }
|
|
|
| @@ -224,7 +258,7 @@ void JobScheduler::GetAppList(const google_apis::AppListCallback& callback) {
|
| weak_ptr_factory_.GetWeakPtr(),
|
| new_job->job_info.job_id,
|
| callback));
|
| - new_job->abort_callback = google_apis::CreateErrorRunCallback(callback);
|
| + new_job->abort_callback = CreateErrorRunCallback(callback);
|
| StartJob(new_job);
|
| }
|
|
|
| @@ -241,7 +275,7 @@ void JobScheduler::GetAllResourceList(
|
| weak_ptr_factory_.GetWeakPtr(),
|
| new_job->job_info.job_id,
|
| callback));
|
| - new_job->abort_callback = google_apis::CreateErrorRunCallback(callback);
|
| + new_job->abort_callback = CreateErrorRunCallback(callback);
|
| StartJob(new_job);
|
| }
|
|
|
| @@ -261,7 +295,7 @@ void JobScheduler::GetResourceListInDirectory(
|
| weak_ptr_factory_.GetWeakPtr(),
|
| new_job->job_info.job_id,
|
| callback));
|
| - new_job->abort_callback = google_apis::CreateErrorRunCallback(callback);
|
| + new_job->abort_callback = CreateErrorRunCallback(callback);
|
| StartJob(new_job);
|
| }
|
|
|
| @@ -280,7 +314,7 @@ void JobScheduler::Search(
|
| weak_ptr_factory_.GetWeakPtr(),
|
| new_job->job_info.job_id,
|
| callback));
|
| - new_job->abort_callback = google_apis::CreateErrorRunCallback(callback);
|
| + new_job->abort_callback = CreateErrorRunCallback(callback);
|
| StartJob(new_job);
|
| }
|
|
|
| @@ -299,7 +333,7 @@ void JobScheduler::GetChangeList(
|
| weak_ptr_factory_.GetWeakPtr(),
|
| new_job->job_info.job_id,
|
| callback));
|
| - new_job->abort_callback = google_apis::CreateErrorRunCallback(callback);
|
| + new_job->abort_callback = CreateErrorRunCallback(callback);
|
| StartJob(new_job);
|
| }
|
|
|
| @@ -318,7 +352,7 @@ void JobScheduler::GetRemainingChangeList(
|
| weak_ptr_factory_.GetWeakPtr(),
|
| new_job->job_info.job_id,
|
| callback));
|
| - new_job->abort_callback = google_apis::CreateErrorRunCallback(callback);
|
| + new_job->abort_callback = CreateErrorRunCallback(callback);
|
| StartJob(new_job);
|
| }
|
|
|
| @@ -337,7 +371,7 @@ void JobScheduler::GetRemainingFileList(
|
| weak_ptr_factory_.GetWeakPtr(),
|
| new_job->job_info.job_id,
|
| callback));
|
| - new_job->abort_callback = google_apis::CreateErrorRunCallback(callback);
|
| + new_job->abort_callback = CreateErrorRunCallback(callback);
|
| StartJob(new_job);
|
| }
|
|
|
| @@ -358,7 +392,7 @@ void JobScheduler::GetResourceEntry(
|
| weak_ptr_factory_.GetWeakPtr(),
|
| new_job->job_info.job_id,
|
| callback));
|
| - new_job->abort_callback = google_apis::CreateErrorRunCallback(callback);
|
| + new_job->abort_callback = CreateErrorRunCallback(callback);
|
| StartJob(new_job);
|
| }
|
|
|
| @@ -381,7 +415,7 @@ void JobScheduler::GetShareUrl(
|
| weak_ptr_factory_.GetWeakPtr(),
|
| new_job->job_info.job_id,
|
| callback));
|
| - new_job->abort_callback = google_apis::CreateErrorRunCallback(callback);
|
| + new_job->abort_callback = CreateErrorRunCallback(callback);
|
| StartJob(new_job);
|
| }
|
|
|
| @@ -428,7 +462,7 @@ void JobScheduler::CopyResource(
|
| weak_ptr_factory_.GetWeakPtr(),
|
| new_job->job_info.job_id,
|
| callback));
|
| - new_job->abort_callback = google_apis::CreateErrorRunCallback(callback);
|
| + new_job->abort_callback = CreateErrorRunCallback(callback);
|
| StartJob(new_job);
|
| }
|
|
|
| @@ -449,7 +483,7 @@ void JobScheduler::CopyHostedDocument(
|
| weak_ptr_factory_.GetWeakPtr(),
|
| new_job->job_info.job_id,
|
| callback));
|
| - new_job->abort_callback = google_apis::CreateErrorRunCallback(callback);
|
| + new_job->abort_callback = CreateErrorRunCallback(callback);
|
| StartJob(new_job);
|
| }
|
|
|
| @@ -474,7 +508,7 @@ void JobScheduler::MoveResource(
|
| weak_ptr_factory_.GetWeakPtr(),
|
| new_job->job_info.job_id,
|
| callback));
|
| - new_job->abort_callback = google_apis::CreateErrorRunCallback(callback);
|
| + new_job->abort_callback = CreateErrorRunCallback(callback);
|
| StartJob(new_job);
|
| }
|
|
|
| @@ -518,7 +552,7 @@ void JobScheduler::TouchResource(
|
| weak_ptr_factory_.GetWeakPtr(),
|
| new_job->job_info.job_id,
|
| callback));
|
| - new_job->abort_callback = google_apis::CreateErrorRunCallback(callback);
|
| + new_job->abort_callback = CreateErrorRunCallback(callback);
|
| StartJob(new_job);
|
| }
|
|
|
| @@ -581,7 +615,7 @@ void JobScheduler::AddNewDirectory(
|
| weak_ptr_factory_.GetWeakPtr(),
|
| new_job->job_info.job_id,
|
| callback));
|
| - new_job->abort_callback = google_apis::CreateErrorRunCallback(callback);
|
| + new_job->abort_callback = CreateErrorRunCallback(callback);
|
| StartJob(new_job);
|
| }
|
|
|
| @@ -612,8 +646,7 @@ JobID JobScheduler::DownloadFile(
|
| base::Bind(&JobScheduler::UpdateProgress,
|
| weak_ptr_factory_.GetWeakPtr(),
|
| new_job->job_info.job_id));
|
| - new_job->abort_callback =
|
| - google_apis::CreateErrorRunCallback(download_action_callback);
|
| + new_job->abort_callback = CreateErrorRunCallback(download_action_callback);
|
| StartJob(new_job);
|
| return new_job->job_info.job_id;
|
| }
|
| @@ -651,7 +684,7 @@ void JobScheduler::UploadNewFile(
|
| weak_ptr_factory_.GetWeakPtr(),
|
| new_job->job_info.job_id);
|
| new_job->task = base::Bind(&RunUploadNewFile, uploader_.get(), params);
|
| - new_job->abort_callback = google_apis::CreateErrorRunCallback(callback);
|
| + new_job->abort_callback = CreateErrorRunCallback(callback);
|
| StartJob(new_job);
|
| }
|
|
|
| @@ -688,7 +721,7 @@ void JobScheduler::UploadExistingFile(
|
| weak_ptr_factory_.GetWeakPtr(),
|
| new_job->job_info.job_id);
|
| new_job->task = base::Bind(&RunUploadExistingFile, uploader_.get(), params);
|
| - new_job->abort_callback = google_apis::CreateErrorRunCallback(callback);
|
| + new_job->abort_callback = CreateErrorRunCallback(callback);
|
| StartJob(new_job);
|
| }
|
|
|
| @@ -725,7 +758,7 @@ void JobScheduler::CreateFile(
|
| params.progress_callback = google_apis::ProgressCallback();
|
|
|
| new_job->task = base::Bind(&RunUploadNewFile, uploader_.get(), params);
|
| - new_job->abort_callback = google_apis::CreateErrorRunCallback(callback);
|
| + new_job->abort_callback = CreateErrorRunCallback(callback);
|
| StartJob(new_job);
|
| }
|
|
|
| @@ -745,7 +778,7 @@ void JobScheduler::GetResourceListInDirectoryByWapi(
|
| weak_ptr_factory_.GetWeakPtr(),
|
| new_job->job_info.job_id,
|
| callback));
|
| - new_job->abort_callback = google_apis::CreateErrorRunCallback(callback);
|
| + new_job->abort_callback = CreateErrorRunCallback(callback);
|
| StartJob(new_job);
|
| }
|
|
|
| @@ -764,7 +797,7 @@ void JobScheduler::GetRemainingResourceList(
|
| weak_ptr_factory_.GetWeakPtr(),
|
| new_job->job_info.job_id,
|
| callback));
|
| - new_job->abort_callback = google_apis::CreateErrorRunCallback(callback);
|
| + new_job->abort_callback = CreateErrorRunCallback(callback);
|
| StartJob(new_job);
|
| }
|
|
|
|
|