diff options
author | hidehiko@chromium.org <hidehiko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-08-29 09:31:07 +0000 |
---|---|---|
committer | hidehiko@chromium.org <hidehiko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-08-29 09:31:07 +0000 |
commit | 2516f20c336b817f7a384b11bee7c1a14ac04425 (patch) | |
tree | ac5d16e706c13ac91a3b32ca3e2bf62e38e1f92c /chrome/browser/drive | |
parent | bef9ac0d673834964f9316b8d0947719d879ff8a (diff) | |
download | chromium_src-2516f20c336b817f7a384b11bee7c1a14ac04425.zip chromium_src-2516f20c336b817f7a384b11bee7c1a14ac04425.tar.gz chromium_src-2516f20c336b817f7a384b11bee7c1a14ac04425.tar.bz2 |
Refactor GetFilelistRequest.
To adapt Drive API v2 request, this CL refactors GetFilelistRequest to
FilesListRequest.
BUG=277253, 275233
TEST=Ran unit_tests and tested manually.
R=kinaba@chromium.org
Review URL: https://codereview.chromium.org/23559003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@220243 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/drive')
-rw-r--r-- | chrome/browser/drive/drive_api_service.cc | 89 |
1 files changed, 57 insertions, 32 deletions
diff --git a/chrome/browser/drive/drive_api_service.cc b/chrome/browser/drive/drive_api_service.cc index 4eded6e..c88120e 100644 --- a/chrome/browser/drive/drive_api_service.cc +++ b/chrome/browser/drive/drive_api_service.cc @@ -38,7 +38,6 @@ using google_apis::GDataErrorCode; using google_apis::AboutResourceCallback; using google_apis::GetChangelistRequest; using google_apis::GetContentCallback; -using google_apis::GetFilelistRequest; using google_apis::GetResourceEntryCallback; using google_apis::GetResourceEntryRequest; using google_apis::GetResourceListCallback; @@ -62,6 +61,7 @@ using google_apis::drive::DeleteResourceRequest; using google_apis::drive::DownloadFileRequest; using google_apis::drive::FilesGetRequest; using google_apis::drive::FilesPatchRequest; +using google_apis::drive::FilesListRequest; using google_apis::drive::GetUploadStatusRequest; using google_apis::drive::InitiateUploadExistingFileRequest; using google_apis::drive::InitiateUploadNewFileRequest; @@ -148,7 +148,7 @@ void ParseResourceListOnBlockingPoolAndRun( return; } - PostTaskAndReplyWithResult( + base::PostTaskAndReplyWithResult( blocking_task_runner.get(), FROM_HERE, base::Bind(&ParseResourceListOnBlockingPool, base::Passed(&value)), @@ -180,6 +180,35 @@ void ConvertFileEntryToResourceEntryAndRun( callback.Run(error, entry.Pass()); } +// Thin adapter of CreateFromFileList. +scoped_ptr<ResourceList> ConvertFileListToResourceList( + scoped_ptr<FileList> file_list) { + return ResourceList::CreateFromFileList(*file_list); +} + +// Converts the FileList value to ResourceList on blocking pool and runs +// |callback| on the UI thread. +void ConvertFileListToResourceListOnBlockingPoolAndRun( + scoped_refptr<base::TaskRunner> blocking_task_runner, + const GetResourceListCallback& callback, + GDataErrorCode error, + scoped_ptr<FileList> value) { + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + DCHECK(!callback.is_null()); + + if (!value) { + callback.Run(error, scoped_ptr<ResourceList>()); + return; + } + + // Convert the value on blocking pool. + base::PostTaskAndReplyWithResult( + blocking_task_runner.get(), + FROM_HERE, + base::Bind(&ConvertFileListToResourceList, base::Passed(&value)), + base::Bind(&DidParseResourceListOnBlockingPool, callback)); +} + // Parses the FileResource value to ResourceEntry for upload range request, // and runs |callback| on the UI thread. void ParseResourceEntryForUploadRangeAndRun( @@ -347,18 +376,16 @@ CancelCallback DriveAPIService::GetResourceListInDirectory( // 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. - return sender_->StartRequestWithRetry( - new GetFilelistRequest( - sender_.get(), - url_generator_, - base::StringPrintf( - "'%s' in parents and trashed = false", - drive::util::EscapeQueryStringValue( - directory_resource_id).c_str()), - kMaxNumFilesResourcePerRequest, - base::Bind(&ParseResourceListOnBlockingPoolAndRun, - blocking_task_runner_, - callback))); + FilesListRequest* request = new FilesListRequest( + sender_.get(), url_generator_, + base::Bind(&ConvertFileListToResourceListOnBlockingPoolAndRun, + blocking_task_runner_, callback)); + request->set_max_results(kMaxNumFilesResourcePerRequest); + request->set_q(base::StringPrintf( + "'%s' in parents and trashed = false", + drive::util::EscapeQueryStringValue(directory_resource_id).c_str())); + + return sender_->StartRequestWithRetry(request); } CancelCallback DriveAPIService::Search( @@ -368,15 +395,14 @@ CancelCallback DriveAPIService::Search( DCHECK(!search_query.empty()); DCHECK(!callback.is_null()); - return sender_->StartRequestWithRetry( - new GetFilelistRequest( - sender_.get(), - url_generator_, - drive::util::TranslateQuery(search_query), - kMaxNumFilesResourcePerRequestForSearch, - base::Bind(&ParseResourceListOnBlockingPoolAndRun, - blocking_task_runner_, - callback))); + FilesListRequest* request = new FilesListRequest( + sender_.get(), url_generator_, + base::Bind(&ConvertFileListToResourceListOnBlockingPoolAndRun, + blocking_task_runner_, callback)); + request->set_max_results(kMaxNumFilesResourcePerRequestForSearch); + request->set_q(drive::util::TranslateQuery(search_query)); + + return sender_->StartRequestWithRetry(request); } CancelCallback DriveAPIService::SearchByTitle( @@ -397,15 +423,14 @@ CancelCallback DriveAPIService::SearchByTitle( } query += " and trashed = false"; - return sender_->StartRequestWithRetry( - new GetFilelistRequest( - sender_.get(), - url_generator_, - query, - kMaxNumFilesResourcePerRequest, - base::Bind(&ParseResourceListOnBlockingPoolAndRun, - blocking_task_runner_, - callback))); + FilesListRequest* request = new FilesListRequest( + sender_.get(), url_generator_, + base::Bind(&ConvertFileListToResourceListOnBlockingPoolAndRun, + blocking_task_runner_, callback)); + request->set_max_results(kMaxNumFilesResourcePerRequest); + request->set_q(query); + + return sender_->StartRequestWithRetry(request); } CancelCallback DriveAPIService::GetChangeList( |