Index: chrome/browser/drive/drive_api_service.cc |
diff --git a/chrome/browser/drive/drive_api_service.cc b/chrome/browser/drive/drive_api_service.cc |
index db3ae2c9e3fd7b9df878a90db333d857acabbbac..6a875adc47bce9e8501a40620231e736553a0cb8 100644 |
--- a/chrome/browser/drive/drive_api_service.cc |
+++ b/chrome/browser/drive/drive_api_service.cc |
@@ -14,6 +14,7 @@ |
#include "google_apis/drive/base_requests.h" |
#include "google_apis/drive/drive_api_parser.h" |
#include "google_apis/drive/drive_api_requests.h" |
+#include "google_apis/drive/files_list_request_runner.h" |
#include "google_apis/drive/request_sender.h" |
#include "google_apis/google_api_keys.h" |
#include "net/url_request/url_request_context_getter.h" |
@@ -42,6 +43,7 @@ using google_apis::HTTP_SUCCESS; |
using google_apis::InitiateUploadCallback; |
using google_apis::ProgressCallback; |
using google_apis::RequestSender; |
+using google_apis::FilesListRequestRunner; |
using google_apis::UploadRangeResponse; |
using google_apis::drive::AboutGetRequest; |
using google_apis::drive::AppsListRequest; |
@@ -282,6 +284,9 @@ void DriveAPIService::Initialize(const std::string& account_id) { |
blocking_task_runner_.get(), |
custom_user_agent_)); |
sender_->auth_service()->AddObserver(this); |
+ |
+ files_list_request_runner_.reset( |
+ new FilesListRequestRunner(sender_.get(), url_generator_)); |
} |
void DriveAPIService::AddObserver(DriveServiceObserver* observer) { |
@@ -312,7 +317,7 @@ CancelCallback DriveAPIService::GetAllFileList( |
request->set_max_results(kMaxNumFilesResourcePerRequest); |
request->set_q("trashed = false"); // Exclude trashed files. |
request->set_fields(kFileListFields); |
- return sender_->StartRequestWithRetry(request); |
+ return sender_->StartRequestWithAuthRetry(request); |
} |
CancelCallback DriveAPIService::GetFileListInDirectory( |
@@ -329,14 +334,12 @@ CancelCallback DriveAPIService::GetFileListInDirectory( |
// code up by moving the responsibility to include "parents" in the query |
// to client side. |
// We aren't interested in files in trash in this context, neither. |
- FilesListRequest* request = new FilesListRequest( |
- sender_.get(), url_generator_, callback); |
- request->set_max_results(kMaxNumFilesResourcePerRequest); |
- request->set_q(base::StringPrintf( |
- "'%s' in parents and trashed = false", |
- util::EscapeQueryStringValue(directory_resource_id).c_str())); |
- request->set_fields(kFileListFields); |
- return sender_->StartRequestWithRetry(request); |
+ return files_list_request_runner_->CreateAndStartWithSizeBackoff( |
+ kMaxNumFilesResourcePerRequest, |
+ base::StringPrintf( |
+ "'%s' in parents and trashed = false", |
+ util::EscapeQueryStringValue(directory_resource_id).c_str()), |
+ kFileListFields, callback); |
} |
CancelCallback DriveAPIService::Search( |
@@ -346,12 +349,9 @@ CancelCallback DriveAPIService::Search( |
DCHECK(!search_query.empty()); |
DCHECK(!callback.is_null()); |
- FilesListRequest* request = new FilesListRequest( |
- sender_.get(), url_generator_, callback); |
- request->set_max_results(kMaxNumFilesResourcePerRequestForSearch); |
- request->set_q(util::TranslateQuery(search_query)); |
- request->set_fields(kFileListFields); |
- return sender_->StartRequestWithRetry(request); |
+ return files_list_request_runner_->CreateAndStartWithSizeBackoff( |
+ kMaxNumFilesResourcePerRequestForSearch, |
+ util::TranslateQuery(search_query), kFileListFields, callback); |
} |
CancelCallback DriveAPIService::SearchByTitle( |
@@ -377,7 +377,7 @@ CancelCallback DriveAPIService::SearchByTitle( |
request->set_max_results(kMaxNumFilesResourcePerRequest); |
request->set_q(query); |
request->set_fields(kFileListFields); |
- return sender_->StartRequestWithRetry(request); |
+ return sender_->StartRequestWithAuthRetry(request); |
} |
CancelCallback DriveAPIService::GetChangeList( |
@@ -391,7 +391,7 @@ CancelCallback DriveAPIService::GetChangeList( |
request->set_max_results(kMaxNumFilesResourcePerRequest); |
request->set_start_change_id(start_changestamp); |
request->set_fields(kChangeListFields); |
- return sender_->StartRequestWithRetry(request); |
+ return sender_->StartRequestWithAuthRetry(request); |
} |
CancelCallback DriveAPIService::GetRemainingChangeList( |
@@ -405,7 +405,7 @@ CancelCallback DriveAPIService::GetRemainingChangeList( |
sender_.get(), callback); |
request->set_next_link(next_link); |
request->set_fields(kChangeListFields); |
- return sender_->StartRequestWithRetry(request); |
+ return sender_->StartRequestWithAuthRetry(request); |
} |
CancelCallback DriveAPIService::GetRemainingFileList( |
@@ -419,7 +419,7 @@ CancelCallback DriveAPIService::GetRemainingFileList( |
sender_.get(), callback); |
request->set_next_link(next_link); |
request->set_fields(kFileListFields); |
- return sender_->StartRequestWithRetry(request); |
+ return sender_->StartRequestWithAuthRetry(request); |
} |
CancelCallback DriveAPIService::GetFileResource( |
@@ -433,7 +433,7 @@ CancelCallback DriveAPIService::GetFileResource( |
callback); |
request->set_file_id(resource_id); |
request->set_fields(kFileResourceFields); |
- return sender_->StartRequestWithRetry(request); |
+ return sender_->StartRequestWithAuthRetry(request); |
} |
CancelCallback DriveAPIService::GetShareUrl( |
@@ -454,7 +454,7 @@ CancelCallback DriveAPIService::GetShareUrl( |
request->set_file_id(resource_id); |
request->set_fields(kFileResourceShareLinkFields); |
request->set_embed_origin(embed_origin); |
- return sender_->StartRequestWithRetry(request); |
+ return sender_->StartRequestWithAuthRetry(request); |
} |
CancelCallback DriveAPIService::GetAboutResource( |
@@ -465,17 +465,16 @@ CancelCallback DriveAPIService::GetAboutResource( |
AboutGetRequest* request = |
new AboutGetRequest(sender_.get(), url_generator_, callback); |
request->set_fields(kAboutResourceFields); |
- return sender_->StartRequestWithRetry(request); |
+ return sender_->StartRequestWithAuthRetry(request); |
} |
CancelCallback DriveAPIService::GetAppList(const AppListCallback& callback) { |
DCHECK(thread_checker_.CalledOnValidThread()); |
DCHECK(!callback.is_null()); |
- return sender_->StartRequestWithRetry( |
+ return sender_->StartRequestWithAuthRetry( |
new AppsListRequest(sender_.get(), url_generator_, |
- google_apis::IsGoogleChromeAPIKeyUsed(), |
- callback)); |
+ google_apis::IsGoogleChromeAPIKeyUsed(), callback)); |
} |
CancelCallback DriveAPIService::DownloadFile( |
@@ -488,14 +487,9 @@ CancelCallback DriveAPIService::DownloadFile( |
DCHECK(!download_action_callback.is_null()); |
// get_content_callback may be null. |
- return sender_->StartRequestWithRetry( |
- new DownloadFileRequest(sender_.get(), |
- url_generator_, |
- resource_id, |
- local_cache_path, |
- download_action_callback, |
- get_content_callback, |
- progress_callback)); |
+ return sender_->StartRequestWithAuthRetry(new DownloadFileRequest( |
+ sender_.get(), url_generator_, resource_id, local_cache_path, |
+ download_action_callback, get_content_callback, progress_callback)); |
} |
CancelCallback DriveAPIService::DeleteResource( |
@@ -509,7 +503,7 @@ CancelCallback DriveAPIService::DeleteResource( |
sender_.get(), url_generator_, callback); |
request->set_file_id(resource_id); |
request->set_etag(etag); |
- return sender_->StartRequestWithRetry(request); |
+ return sender_->StartRequestWithAuthRetry(request); |
} |
CancelCallback DriveAPIService::TrashResource( |
@@ -523,7 +517,7 @@ CancelCallback DriveAPIService::TrashResource( |
base::Bind(&EntryActionCallbackAdapter, callback)); |
request->set_file_id(resource_id); |
request->set_fields(kFileResourceFields); |
- return sender_->StartRequestWithRetry(request); |
+ return sender_->StartRequestWithAuthRetry(request); |
} |
CancelCallback DriveAPIService::AddNewDirectory( |
@@ -543,7 +537,7 @@ CancelCallback DriveAPIService::AddNewDirectory( |
request->set_title(directory_title); |
request->set_properties(options.properties); |
request->set_fields(kFileResourceFields); |
- return sender_->StartRequestWithRetry(request); |
+ return sender_->StartRequestWithAuthRetry(request); |
} |
CancelCallback DriveAPIService::CopyResource( |
@@ -562,7 +556,7 @@ CancelCallback DriveAPIService::CopyResource( |
request->set_title(new_title); |
request->set_modified_date(last_modified); |
request->set_fields(kFileResourceFields); |
- return sender_->StartRequestWithRetry(request); |
+ return sender_->StartRequestWithAuthRetry(request); |
} |
CancelCallback DriveAPIService::UpdateResource( |
@@ -595,7 +589,7 @@ CancelCallback DriveAPIService::UpdateResource( |
} |
request->set_fields(kFileResourceFields); |
request->set_properties(properties); |
- return sender_->StartRequestWithRetry(request); |
+ return sender_->StartRequestWithAuthRetry(request); |
} |
CancelCallback DriveAPIService::AddResourceToDirectory( |
@@ -609,7 +603,7 @@ CancelCallback DriveAPIService::AddResourceToDirectory( |
new ChildrenInsertRequest(sender_.get(), url_generator_, callback); |
request->set_folder_id(parent_resource_id); |
request->set_id(resource_id); |
- return sender_->StartRequestWithRetry(request); |
+ return sender_->StartRequestWithAuthRetry(request); |
} |
CancelCallback DriveAPIService::RemoveResourceFromDirectory( |
@@ -623,7 +617,7 @@ CancelCallback DriveAPIService::RemoveResourceFromDirectory( |
new ChildrenDeleteRequest(sender_.get(), url_generator_, callback); |
request->set_child_id(resource_id); |
request->set_folder_id(parent_resource_id); |
- return sender_->StartRequestWithRetry(request); |
+ return sender_->StartRequestWithAuthRetry(request); |
} |
CancelCallback DriveAPIService::InitiateUploadNewFile( |
@@ -647,7 +641,7 @@ CancelCallback DriveAPIService::InitiateUploadNewFile( |
request->set_modified_date(options.modified_date); |
request->set_last_viewed_by_me_date(options.last_viewed_by_me_date); |
request->set_properties(options.properties); |
- return sender_->StartRequestWithRetry(request); |
+ return sender_->StartRequestWithAuthRetry(request); |
} |
CancelCallback DriveAPIService::InitiateUploadExistingFile( |
@@ -672,7 +666,7 @@ CancelCallback DriveAPIService::InitiateUploadExistingFile( |
request->set_modified_date(options.modified_date); |
request->set_last_viewed_by_me_date(options.last_viewed_by_me_date); |
request->set_properties(options.properties); |
- return sender_->StartRequestWithRetry(request); |
+ return sender_->StartRequestWithAuthRetry(request); |
} |
CancelCallback DriveAPIService::ResumeUpload( |
@@ -687,17 +681,9 @@ CancelCallback DriveAPIService::ResumeUpload( |
DCHECK(thread_checker_.CalledOnValidThread()); |
DCHECK(!callback.is_null()); |
- return sender_->StartRequestWithRetry( |
- new ResumeUploadRequest( |
- sender_.get(), |
- upload_url, |
- start_position, |
- end_position, |
- content_length, |
- content_type, |
- local_file_path, |
- callback, |
- progress_callback)); |
+ return sender_->StartRequestWithAuthRetry(new ResumeUploadRequest( |
+ sender_.get(), upload_url, start_position, end_position, content_length, |
+ content_type, local_file_path, callback, progress_callback)); |
} |
CancelCallback DriveAPIService::GetUploadStatus( |
@@ -707,11 +693,8 @@ CancelCallback DriveAPIService::GetUploadStatus( |
DCHECK(thread_checker_.CalledOnValidThread()); |
DCHECK(!callback.is_null()); |
- return sender_->StartRequestWithRetry(new GetUploadStatusRequest( |
- sender_.get(), |
- upload_url, |
- content_length, |
- callback)); |
+ return sender_->StartRequestWithAuthRetry(new GetUploadStatusRequest( |
+ sender_.get(), upload_url, content_length, callback)); |
} |
CancelCallback DriveAPIService::MultipartUploadNewFile( |
@@ -726,7 +709,7 @@ CancelCallback DriveAPIService::MultipartUploadNewFile( |
DCHECK(thread_checker_.CalledOnValidThread()); |
DCHECK(!callback.is_null()); |
- return sender_->StartRequestWithRetry( |
+ return sender_->StartRequestWithAuthRetry( |
new google_apis::drive::SingleBatchableDelegateRequest( |
sender_.get(), |
new google_apis::drive::MultipartUploadNewFileDelegate( |
@@ -748,7 +731,7 @@ CancelCallback DriveAPIService::MultipartUploadExistingFile( |
DCHECK(thread_checker_.CalledOnValidThread()); |
DCHECK(!callback.is_null()); |
- return sender_->StartRequestWithRetry( |
+ return sender_->StartRequestWithAuthRetry( |
new google_apis::drive::SingleBatchableDelegateRequest( |
sender_.get(), |
new google_apis::drive::MultipartUploadExistingFileDelegate( |
@@ -779,14 +762,14 @@ CancelCallback DriveAPIService::AuthorizeApp( |
request->set_app_id(app_id); |
request->set_file_id(resource_id); |
request->set_fields(kFileResourceOpenWithLinksFields); |
- return sender_->StartRequestWithRetry(request); |
+ return sender_->StartRequestWithAuthRetry(request); |
} else { |
FilesGetRequest* request = new FilesGetRequest( |
sender_.get(), url_generator_, google_apis::IsGoogleChromeAPIKeyUsed(), |
base::Bind(&ExtractOpenUrlAndRun, app_id, callback)); |
request->set_file_id(resource_id); |
request->set_fields(kFileResourceOpenWithLinksFields); |
- return sender_->StartRequestWithRetry(request); |
+ return sender_->StartRequestWithAuthRetry(request); |
} |
} |
@@ -800,7 +783,7 @@ CancelCallback DriveAPIService::UninstallApp( |
new google_apis::drive::AppsDeleteRequest(sender_.get(), url_generator_, |
callback); |
request->set_app_id(app_id); |
- return sender_->StartRequestWithRetry(request); |
+ return sender_->StartRequestWithAuthRetry(request); |
} |
google_apis::CancelCallback DriveAPIService::AddPermission( |
@@ -819,7 +802,7 @@ google_apis::CancelCallback DriveAPIService::AddPermission( |
request->set_role(role); |
request->set_type(google_apis::drive::PERMISSION_TYPE_USER); |
request->set_value(email); |
- return sender_->StartRequestWithRetry(request); |
+ return sender_->StartRequestWithAuthRetry(request); |
} |
bool DriveAPIService::HasAccessToken() const { |
@@ -880,7 +863,7 @@ DriveAPIService::StartBatchRequest() { |
// reference to RequestSender and we should ensure to delete the request when |
// the sender is deleted. Resolve the circulating dependency and fix it. |
const google_apis::CancelCallback callback = |
- sender_->StartRequestWithRetry(request.release()); |
+ sender_->StartRequestWithAuthRetry(request.release()); |
return make_scoped_ptr<BatchRequestConfiguratorInterface>( |
new BatchRequestConfigurator(weak_ref, sender_->blocking_task_runner(), |
url_generator_, callback)); |