| Index: google_apis/drive/drive_api_requests.cc
|
| diff --git a/google_apis/drive/drive_api_requests.cc b/google_apis/drive/drive_api_requests.cc
|
| index a63757112b86ca9f1fa85525fd098d973edbbf36..d711d07c2ac4a0fce10a6cb5bbbecc07d3c7ca40 100644
|
| --- a/google_apis/drive/drive_api_requests.cc
|
| +++ b/google_apis/drive/drive_api_requests.cc
|
| @@ -11,7 +11,6 @@
|
| #include "base/sequenced_task_runner.h"
|
| #include "base/task_runner_util.h"
|
| #include "base/values.h"
|
| -#include "google_apis/drive/drive_api_parser.h"
|
| #include "google_apis/drive/request_sender.h"
|
| #include "google_apis/drive/request_util.h"
|
| #include "google_apis/drive/time_util.h"
|
| @@ -23,70 +22,6 @@ namespace {
|
| const char kContentTypeApplicationJson[] = "application/json";
|
| const char kParentLinkKind[] = "drive#fileLink";
|
|
|
| -// Parses the JSON value to a resource typed |T| and runs |callback| on the UI
|
| -// thread once parsing is done.
|
| -template<typename T>
|
| -void ParseJsonAndRun(
|
| - const base::Callback<void(GDataErrorCode, scoped_ptr<T>)>& callback,
|
| - GDataErrorCode error,
|
| - scoped_ptr<base::Value> value) {
|
| - DCHECK(!callback.is_null());
|
| -
|
| - scoped_ptr<T> resource;
|
| - if (value) {
|
| - resource = T::CreateFrom(*value);
|
| - if (!resource) {
|
| - // Failed to parse the JSON value, although the JSON value is available,
|
| - // so let the callback know the parsing error.
|
| - error = GDATA_PARSE_ERROR;
|
| - }
|
| - }
|
| -
|
| - callback.Run(error, resource.Pass());
|
| -}
|
| -
|
| -// Thin adapter of T::CreateFrom.
|
| -template<typename T>
|
| -scoped_ptr<T> ParseJsonOnBlockingPool(scoped_ptr<base::Value> value) {
|
| - return T::CreateFrom(*value);
|
| -}
|
| -
|
| -// Runs |callback| with given |error| and |value|. If |value| is null,
|
| -// overwrites |error| to GDATA_PARSE_ERROR.
|
| -template<typename T>
|
| -void ParseJsonOnBlockingPoolAndRunAfterBlockingPoolTask(
|
| - const base::Callback<void(GDataErrorCode, scoped_ptr<T>)>& callback,
|
| - GDataErrorCode error, scoped_ptr<T> value) {
|
| - if (!value)
|
| - error = GDATA_PARSE_ERROR;
|
| - callback.Run(error, value.Pass());
|
| -}
|
| -
|
| -// Parses the JSON value to a resource typed |T| and runs |callback| on
|
| -// blocking pool, and then run on the current thread.
|
| -// TODO(hidehiko): Move this and ParseJsonAndRun defined above into base with
|
| -// merging the tasks running on blocking pool into one.
|
| -template<typename T>
|
| -void ParseJsonOnBlockingPoolAndRun(
|
| - scoped_refptr<base::TaskRunner> blocking_task_runner,
|
| - const base::Callback<void(GDataErrorCode, scoped_ptr<T>)>& callback,
|
| - GDataErrorCode error,
|
| - scoped_ptr<base::Value> value) {
|
| - DCHECK(!callback.is_null());
|
| -
|
| - if (!value) {
|
| - callback.Run(error, scoped_ptr<T>());
|
| - return;
|
| - }
|
| -
|
| - base::PostTaskAndReplyWithResult(
|
| - blocking_task_runner,
|
| - FROM_HERE,
|
| - base::Bind(&ParseJsonOnBlockingPool<T>, base::Passed(&value)),
|
| - base::Bind(&ParseJsonOnBlockingPoolAndRunAfterBlockingPoolTask<T>,
|
| - callback, error));
|
| -}
|
| -
|
| // Parses the JSON value to FileResource instance and runs |callback| on the
|
| // UI thread once parsing is done.
|
| // This is customized version of ParseJsonAndRun defined above to adapt the
|
| @@ -126,17 +61,16 @@ scoped_ptr<base::DictionaryValue> CreateParentValue(
|
|
|
| namespace drive {
|
|
|
| -//============================ DriveApiDataRequest ===========================
|
| +//============================ DriveApiPartialFieldRequest ====================
|
|
|
| -DriveApiDataRequest::DriveApiDataRequest(RequestSender* sender,
|
| - const GetDataCallback& callback)
|
| - : GetDataRequest(sender, callback) {
|
| +DriveApiPartialFieldRequest::DriveApiPartialFieldRequest(
|
| + RequestSender* sender) : UrlFetchRequestBase(sender) {
|
| }
|
|
|
| -DriveApiDataRequest::~DriveApiDataRequest() {
|
| +DriveApiPartialFieldRequest::~DriveApiPartialFieldRequest() {
|
| }
|
|
|
| -GURL DriveApiDataRequest::GetURL() const {
|
| +GURL DriveApiPartialFieldRequest::GetURL() const {
|
| GURL url = GetURLInternal();
|
| if (!fields_.empty())
|
| url = net::AppendOrReplaceQueryParameter(url, "fields", fields_);
|
| @@ -149,9 +83,7 @@ FilesGetRequest::FilesGetRequest(
|
| RequestSender* sender,
|
| const DriveApiUrlGenerator& url_generator,
|
| const FileResourceCallback& callback)
|
| - : DriveApiDataRequest(
|
| - sender,
|
| - base::Bind(&ParseJsonAndRun<FileResource>, callback)),
|
| + : DriveApiDataRequest<FileResource>(sender, callback),
|
| url_generator_(url_generator) {
|
| DCHECK(!callback.is_null());
|
| }
|
| @@ -168,9 +100,7 @@ FilesAuthorizeRequest::FilesAuthorizeRequest(
|
| RequestSender* sender,
|
| const DriveApiUrlGenerator& url_generator,
|
| const FileResourceCallback& callback)
|
| - : DriveApiDataRequest(
|
| - sender,
|
| - base::Bind(&ParseJsonAndRun<FileResource>, callback)),
|
| + : DriveApiDataRequest<FileResource>(sender, callback),
|
| url_generator_(url_generator) {
|
| DCHECK(!callback.is_null());
|
| }
|
| @@ -191,9 +121,7 @@ FilesInsertRequest::FilesInsertRequest(
|
| RequestSender* sender,
|
| const DriveApiUrlGenerator& url_generator,
|
| const FileResourceCallback& callback)
|
| - : DriveApiDataRequest(
|
| - sender,
|
| - base::Bind(&ParseJsonAndRun<FileResource>, callback)),
|
| + : DriveApiDataRequest<FileResource>(sender, callback),
|
| url_generator_(url_generator) {
|
| DCHECK(!callback.is_null());
|
| }
|
| @@ -250,9 +178,7 @@ FilesPatchRequest::FilesPatchRequest(
|
| RequestSender* sender,
|
| const DriveApiUrlGenerator& url_generator,
|
| const FileResourceCallback& callback)
|
| - : DriveApiDataRequest(
|
| - sender,
|
| - base::Bind(&ParseJsonAndRun<FileResource>, callback)),
|
| + : DriveApiDataRequest<FileResource>(sender, callback),
|
| url_generator_(url_generator),
|
| set_modified_date_(false),
|
| update_viewed_date_(true) {
|
| @@ -320,9 +246,7 @@ FilesCopyRequest::FilesCopyRequest(
|
| RequestSender* sender,
|
| const DriveApiUrlGenerator& url_generator,
|
| const FileResourceCallback& callback)
|
| - : DriveApiDataRequest(
|
| - sender,
|
| - base::Bind(&ParseJsonAndRun<FileResource>, callback)),
|
| + : DriveApiDataRequest<FileResource>(sender, callback),
|
| url_generator_(url_generator) {
|
| DCHECK(!callback.is_null());
|
| }
|
| @@ -375,11 +299,7 @@ FilesListRequest::FilesListRequest(
|
| RequestSender* sender,
|
| const DriveApiUrlGenerator& url_generator,
|
| const FileListCallback& callback)
|
| - : DriveApiDataRequest(
|
| - sender,
|
| - base::Bind(&ParseJsonOnBlockingPoolAndRun<FileList>,
|
| - make_scoped_refptr(sender->blocking_task_runner()),
|
| - callback)),
|
| + : DriveApiDataRequest<FileList>(sender, callback),
|
| url_generator_(url_generator),
|
| max_results_(100) {
|
| DCHECK(!callback.is_null());
|
| @@ -396,11 +316,7 @@ GURL FilesListRequest::GetURLInternal() const {
|
| FilesListNextPageRequest::FilesListNextPageRequest(
|
| RequestSender* sender,
|
| const FileListCallback& callback)
|
| - : DriveApiDataRequest(
|
| - sender,
|
| - base::Bind(&ParseJsonOnBlockingPoolAndRun<FileList>,
|
| - make_scoped_refptr(sender->blocking_task_runner()),
|
| - callback)) {
|
| + : DriveApiDataRequest<FileList>(sender, callback) {
|
| DCHECK(!callback.is_null());
|
| }
|
|
|
| @@ -445,9 +361,7 @@ FilesTrashRequest::FilesTrashRequest(
|
| RequestSender* sender,
|
| const DriveApiUrlGenerator& url_generator,
|
| const FileResourceCallback& callback)
|
| - : DriveApiDataRequest(
|
| - sender,
|
| - base::Bind(&ParseJsonAndRun<FileResource>, callback)),
|
| + : DriveApiDataRequest<FileResource>(sender, callback),
|
| url_generator_(url_generator) {
|
| DCHECK(!callback.is_null());
|
| }
|
| @@ -468,9 +382,7 @@ AboutGetRequest::AboutGetRequest(
|
| RequestSender* sender,
|
| const DriveApiUrlGenerator& url_generator,
|
| const AboutResourceCallback& callback)
|
| - : DriveApiDataRequest(
|
| - sender,
|
| - base::Bind(&ParseJsonAndRun<AboutResource>, callback)),
|
| + : DriveApiDataRequest<AboutResource>(sender, callback),
|
| url_generator_(url_generator) {
|
| DCHECK(!callback.is_null());
|
| }
|
| @@ -487,11 +399,7 @@ ChangesListRequest::ChangesListRequest(
|
| RequestSender* sender,
|
| const DriveApiUrlGenerator& url_generator,
|
| const ChangeListCallback& callback)
|
| - : DriveApiDataRequest(
|
| - sender,
|
| - base::Bind(&ParseJsonOnBlockingPoolAndRun<ChangeList>,
|
| - make_scoped_refptr(sender->blocking_task_runner()),
|
| - callback)),
|
| + : DriveApiDataRequest<ChangeList>(sender, callback),
|
| url_generator_(url_generator),
|
| include_deleted_(true),
|
| max_results_(100),
|
| @@ -511,11 +419,7 @@ GURL ChangesListRequest::GetURLInternal() const {
|
| ChangesListNextPageRequest::ChangesListNextPageRequest(
|
| RequestSender* sender,
|
| const ChangeListCallback& callback)
|
| - : DriveApiDataRequest(
|
| - sender,
|
| - base::Bind(&ParseJsonOnBlockingPoolAndRun<ChangeList>,
|
| - make_scoped_refptr(sender->blocking_task_runner()),
|
| - callback)) {
|
| + : DriveApiDataRequest<ChangeList>(sender, callback) {
|
| DCHECK(!callback.is_null());
|
| }
|
|
|
| @@ -533,9 +437,7 @@ AppsListRequest::AppsListRequest(
|
| const DriveApiUrlGenerator& url_generator,
|
| bool use_internal_endpoint,
|
| const AppListCallback& callback)
|
| - : DriveApiDataRequest(
|
| - sender,
|
| - base::Bind(&ParseJsonAndRun<AppList>, callback)),
|
| + : DriveApiDataRequest<AppList>(sender, callback),
|
| url_generator_(url_generator),
|
| use_internal_endpoint_(use_internal_endpoint) {
|
| DCHECK(!callback.is_null());
|
|
|