| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef GOOGLE_APIS_DRIVE_DRIVE_API_REQUESTS_H_ | 5 #ifndef GOOGLE_APIS_DRIVE_DRIVE_API_REQUESTS_H_ |
| 6 #define GOOGLE_APIS_DRIVE_DRIVE_API_REQUESTS_H_ | 6 #define GOOGLE_APIS_DRIVE_DRIVE_API_REQUESTS_H_ |
| 7 | 7 |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 |
| 10 #include <memory> |
| 9 #include <string> | 11 #include <string> |
| 10 #include <utility> | 12 #include <utility> |
| 11 #include <vector> | 13 #include <vector> |
| 12 | 14 |
| 13 #include "base/callback_forward.h" | 15 #include "base/callback_forward.h" |
| 14 #include "base/location.h" | 16 #include "base/location.h" |
| 15 #include "base/macros.h" | 17 #include "base/macros.h" |
| 16 #include "base/memory/scoped_ptr.h" | |
| 17 #include "base/sequenced_task_runner.h" | 18 #include "base/sequenced_task_runner.h" |
| 18 #include "base/task_runner_util.h" | 19 #include "base/task_runner_util.h" |
| 19 #include "base/time/time.h" | 20 #include "base/time/time.h" |
| 20 #include "base/values.h" | 21 #include "base/values.h" |
| 21 #include "google_apis/drive/base_requests.h" | 22 #include "google_apis/drive/base_requests.h" |
| 22 #include "google_apis/drive/drive_api_parser.h" | 23 #include "google_apis/drive/drive_api_parser.h" |
| 23 #include "google_apis/drive/drive_api_url_generator.h" | 24 #include "google_apis/drive/drive_api_url_generator.h" |
| 24 #include "google_apis/drive/drive_common_callbacks.h" | 25 #include "google_apis/drive/drive_common_callbacks.h" |
| 25 | 26 |
| 26 namespace google_apis { | 27 namespace google_apis { |
| 27 | 28 |
| 28 // Callback used for requests that the server returns FileList data | 29 // Callback used for requests that the server returns FileList data |
| 29 // formatted into JSON value. | 30 // formatted into JSON value. |
| 30 typedef base::Callback<void(DriveApiErrorCode error, | 31 typedef base::Callback<void(DriveApiErrorCode error, |
| 31 scoped_ptr<FileList> entry)> FileListCallback; | 32 std::unique_ptr<FileList> entry)> |
| 33 FileListCallback; |
| 32 | 34 |
| 33 // Callback used for requests that the server returns ChangeList data | 35 // Callback used for requests that the server returns ChangeList data |
| 34 // formatted into JSON value. | 36 // formatted into JSON value. |
| 35 typedef base::Callback<void(DriveApiErrorCode error, | 37 typedef base::Callback<void(DriveApiErrorCode error, |
| 36 scoped_ptr<ChangeList> entry)> ChangeListCallback; | 38 std::unique_ptr<ChangeList> entry)> |
| 39 ChangeListCallback; |
| 37 | 40 |
| 38 namespace drive { | 41 namespace drive { |
| 39 | 42 |
| 40 // Represents a property for a file or a directory. | 43 // Represents a property for a file or a directory. |
| 41 // https://developers.google.com/drive/v2/reference/properties | 44 // https://developers.google.com/drive/v2/reference/properties |
| 42 class Property { | 45 class Property { |
| 43 public: | 46 public: |
| 44 Property(); | 47 Property(); |
| 45 ~Property(); | 48 ~Property(); |
| 46 | 49 |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 114 }; | 117 }; |
| 115 | 118 |
| 116 //============================ DriveApiDataRequest =========================== | 119 //============================ DriveApiDataRequest =========================== |
| 117 | 120 |
| 118 // The base class of Drive API related requests that receive a JSON response | 121 // The base class of Drive API related requests that receive a JSON response |
| 119 // representing |DataType|. | 122 // representing |DataType|. |
| 120 template<class DataType> | 123 template<class DataType> |
| 121 class DriveApiDataRequest : public DriveApiPartialFieldRequest { | 124 class DriveApiDataRequest : public DriveApiPartialFieldRequest { |
| 122 public: | 125 public: |
| 123 typedef base::Callback<void(DriveApiErrorCode error, | 126 typedef base::Callback<void(DriveApiErrorCode error, |
| 124 scoped_ptr<DataType> data)> Callback; | 127 std::unique_ptr<DataType> data)> |
| 128 Callback; |
| 125 | 129 |
| 126 // |callback| is called when the request finishes either by success or by | 130 // |callback| is called when the request finishes either by success or by |
| 127 // failure. On success, a JSON Value object is passed. It must not be null. | 131 // failure. On success, a JSON Value object is passed. It must not be null. |
| 128 DriveApiDataRequest(RequestSender* sender, const Callback& callback) | 132 DriveApiDataRequest(RequestSender* sender, const Callback& callback) |
| 129 : DriveApiPartialFieldRequest(sender), | 133 : DriveApiPartialFieldRequest(sender), |
| 130 callback_(callback), | 134 callback_(callback), |
| 131 weak_ptr_factory_(this) { | 135 weak_ptr_factory_(this) { |
| 132 DCHECK(!callback_.is_null()); | 136 DCHECK(!callback_.is_null()); |
| 133 } | 137 } |
| 134 ~DriveApiDataRequest() override {} | 138 ~DriveApiDataRequest() override {} |
| (...skipping 13 matching lines...) Expand all Loading... |
| 148 weak_ptr_factory_.GetWeakPtr(), error)); | 152 weak_ptr_factory_.GetWeakPtr(), error)); |
| 149 break; | 153 break; |
| 150 default: | 154 default: |
| 151 RunCallbackOnPrematureFailure(error); | 155 RunCallbackOnPrematureFailure(error); |
| 152 OnProcessURLFetchResultsComplete(); | 156 OnProcessURLFetchResultsComplete(); |
| 153 break; | 157 break; |
| 154 } | 158 } |
| 155 } | 159 } |
| 156 | 160 |
| 157 void RunCallbackOnPrematureFailure(DriveApiErrorCode error) override { | 161 void RunCallbackOnPrematureFailure(DriveApiErrorCode error) override { |
| 158 callback_.Run(error, scoped_ptr<DataType>()); | 162 callback_.Run(error, std::unique_ptr<DataType>()); |
| 159 } | 163 } |
| 160 | 164 |
| 161 private: | 165 private: |
| 162 // Parses the |json| string by using DataType::CreateFrom. | 166 // Parses the |json| string by using DataType::CreateFrom. |
| 163 static scoped_ptr<DataType> Parse(const std::string& json) { | 167 static std::unique_ptr<DataType> Parse(const std::string& json) { |
| 164 scoped_ptr<base::Value> value = ParseJson(json); | 168 std::unique_ptr<base::Value> value = ParseJson(json); |
| 165 return value ? DataType::CreateFrom(*value) : scoped_ptr<DataType>(); | 169 return value ? DataType::CreateFrom(*value) : std::unique_ptr<DataType>(); |
| 166 } | 170 } |
| 167 | 171 |
| 168 // Receives the parsed result and invokes the callback. | 172 // Receives the parsed result and invokes the callback. |
| 169 void OnDataParsed(DriveApiErrorCode error, scoped_ptr<DataType> value) { | 173 void OnDataParsed(DriveApiErrorCode error, std::unique_ptr<DataType> value) { |
| 170 if (!value) | 174 if (!value) |
| 171 error = DRIVE_PARSE_ERROR; | 175 error = DRIVE_PARSE_ERROR; |
| 172 callback_.Run(error, std::move(value)); | 176 callback_.Run(error, std::move(value)); |
| 173 OnProcessURLFetchResultsComplete(); | 177 OnProcessURLFetchResultsComplete(); |
| 174 } | 178 } |
| 175 | 179 |
| 176 const Callback callback_; | 180 const Callback callback_; |
| 177 | 181 |
| 178 // Note: This should remain the last member so it'll be destroyed and | 182 // Note: This should remain the last member so it'll be destroyed and |
| 179 // invalidate its weak pointers before any other members are destroyed. | 183 // invalidate its weak pointers before any other members are destroyed. |
| (...skipping 740 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 920 std::string parent_resource_id_; | 924 std::string parent_resource_id_; |
| 921 std::string title_; | 925 std::string title_; |
| 922 base::Time modified_date_; | 926 base::Time modified_date_; |
| 923 base::Time last_viewed_by_me_date_; | 927 base::Time last_viewed_by_me_date_; |
| 924 Properties properties_; | 928 Properties properties_; |
| 925 | 929 |
| 926 DISALLOW_COPY_AND_ASSIGN(InitiateUploadExistingFileRequest); | 930 DISALLOW_COPY_AND_ASSIGN(InitiateUploadExistingFileRequest); |
| 927 }; | 931 }; |
| 928 | 932 |
| 929 // Callback used for ResumeUpload() and GetUploadStatus(). | 933 // Callback used for ResumeUpload() and GetUploadStatus(). |
| 930 typedef base::Callback<void( | 934 typedef base::Callback<void(const UploadRangeResponse& response, |
| 931 const UploadRangeResponse& response, | 935 std::unique_ptr<FileResource> new_resource)> |
| 932 scoped_ptr<FileResource> new_resource)> UploadRangeCallback; | 936 UploadRangeCallback; |
| 933 | 937 |
| 934 //============================ ResumeUploadRequest =========================== | 938 //============================ ResumeUploadRequest =========================== |
| 935 | 939 |
| 936 // Performs the request for resuming the upload of a file. | 940 // Performs the request for resuming the upload of a file. |
| 937 class ResumeUploadRequest : public ResumeUploadRequestBase { | 941 class ResumeUploadRequest : public ResumeUploadRequestBase { |
| 938 public: | 942 public: |
| 939 // See also ResumeUploadRequestBase's comment for parameters meaning. | 943 // See also ResumeUploadRequestBase's comment for parameters meaning. |
| 940 // |callback| must not be null. |progress_callback| may be null. | 944 // |callback| must not be null. |progress_callback| may be null. |
| 941 ResumeUploadRequest(RequestSender* sender, | 945 ResumeUploadRequest(RequestSender* sender, |
| 942 const GURL& upload_location, | 946 const GURL& upload_location, |
| 943 int64_t start_position, | 947 int64_t start_position, |
| 944 int64_t end_position, | 948 int64_t end_position, |
| 945 int64_t content_length, | 949 int64_t content_length, |
| 946 const std::string& content_type, | 950 const std::string& content_type, |
| 947 const base::FilePath& local_file_path, | 951 const base::FilePath& local_file_path, |
| 948 const UploadRangeCallback& callback, | 952 const UploadRangeCallback& callback, |
| 949 const ProgressCallback& progress_callback); | 953 const ProgressCallback& progress_callback); |
| 950 ~ResumeUploadRequest() override; | 954 ~ResumeUploadRequest() override; |
| 951 | 955 |
| 952 protected: | 956 protected: |
| 953 // UploadRangeRequestBase overrides. | 957 // UploadRangeRequestBase overrides. |
| 954 void OnRangeRequestComplete(const UploadRangeResponse& response, | 958 void OnRangeRequestComplete(const UploadRangeResponse& response, |
| 955 scoped_ptr<base::Value> value) override; | 959 std::unique_ptr<base::Value> value) override; |
| 956 // content::UrlFetcherDelegate overrides. | 960 // content::UrlFetcherDelegate overrides. |
| 957 void OnURLFetchUploadProgress(const net::URLFetcher* source, | 961 void OnURLFetchUploadProgress(const net::URLFetcher* source, |
| 958 int64_t current, | 962 int64_t current, |
| 959 int64_t total) override; | 963 int64_t total) override; |
| 960 | 964 |
| 961 private: | 965 private: |
| 962 const UploadRangeCallback callback_; | 966 const UploadRangeCallback callback_; |
| 963 const ProgressCallback progress_callback_; | 967 const ProgressCallback progress_callback_; |
| 964 | 968 |
| 965 DISALLOW_COPY_AND_ASSIGN(ResumeUploadRequest); | 969 DISALLOW_COPY_AND_ASSIGN(ResumeUploadRequest); |
| 966 }; | 970 }; |
| 967 | 971 |
| 968 //========================== GetUploadStatusRequest ========================== | 972 //========================== GetUploadStatusRequest ========================== |
| 969 | 973 |
| 970 // Performs the request to fetch the current upload status of a file. | 974 // Performs the request to fetch the current upload status of a file. |
| 971 class GetUploadStatusRequest : public GetUploadStatusRequestBase { | 975 class GetUploadStatusRequest : public GetUploadStatusRequestBase { |
| 972 public: | 976 public: |
| 973 // See also GetUploadStatusRequestBase's comment for parameters meaning. | 977 // See also GetUploadStatusRequestBase's comment for parameters meaning. |
| 974 // |callback| must not be null. | 978 // |callback| must not be null. |
| 975 GetUploadStatusRequest(RequestSender* sender, | 979 GetUploadStatusRequest(RequestSender* sender, |
| 976 const GURL& upload_url, | 980 const GURL& upload_url, |
| 977 int64_t content_length, | 981 int64_t content_length, |
| 978 const UploadRangeCallback& callback); | 982 const UploadRangeCallback& callback); |
| 979 ~GetUploadStatusRequest() override; | 983 ~GetUploadStatusRequest() override; |
| 980 | 984 |
| 981 protected: | 985 protected: |
| 982 // UploadRangeRequestBase overrides. | 986 // UploadRangeRequestBase overrides. |
| 983 void OnRangeRequestComplete(const UploadRangeResponse& response, | 987 void OnRangeRequestComplete(const UploadRangeResponse& response, |
| 984 scoped_ptr<base::Value> value) override; | 988 std::unique_ptr<base::Value> value) override; |
| 985 | 989 |
| 986 private: | 990 private: |
| 987 const UploadRangeCallback callback_; | 991 const UploadRangeCallback callback_; |
| 988 | 992 |
| 989 DISALLOW_COPY_AND_ASSIGN(GetUploadStatusRequest); | 993 DISALLOW_COPY_AND_ASSIGN(GetUploadStatusRequest); |
| 990 }; | 994 }; |
| 991 | 995 |
| 992 //======================= MultipartUploadNewFileDelegate ======================= | 996 //======================= MultipartUploadNewFileDelegate ======================= |
| 993 | 997 |
| 994 // This class performs the request for initiating the upload of a new file. | 998 // This class performs the request for initiating the upload of a new file. |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1146 net::URLFetcher::RequestType GetRequestType() const override; | 1150 net::URLFetcher::RequestType GetRequestType() const override; |
| 1147 std::vector<std::string> GetExtraRequestHeaders() const override; | 1151 std::vector<std::string> GetExtraRequestHeaders() const override; |
| 1148 void Prepare(const PrepareCallback& callback) override; | 1152 void Prepare(const PrepareCallback& callback) override; |
| 1149 bool GetContentData(std::string* upload_content_type, | 1153 bool GetContentData(std::string* upload_content_type, |
| 1150 std::string* upload_content) override; | 1154 std::string* upload_content) override; |
| 1151 void RunCallbackOnPrematureFailure(DriveApiErrorCode code) override; | 1155 void RunCallbackOnPrematureFailure(DriveApiErrorCode code) override; |
| 1152 void ProcessURLFetchResults(const net::URLFetcher* source) override; | 1156 void ProcessURLFetchResults(const net::URLFetcher* source) override; |
| 1153 void OnURLFetchUploadProgress(const net::URLFetcher* source, | 1157 void OnURLFetchUploadProgress(const net::URLFetcher* source, |
| 1154 int64_t current, | 1158 int64_t current, |
| 1155 int64_t total) override; | 1159 int64_t total) override; |
| 1156 scoped_ptr<BatchableDelegate> delegate_; | 1160 std::unique_ptr<BatchableDelegate> delegate_; |
| 1157 | 1161 |
| 1158 // Note: This should remain the last member so it'll be destroyed and | 1162 // Note: This should remain the last member so it'll be destroyed and |
| 1159 // invalidate its weak pointers before any other members are destroyed. | 1163 // invalidate its weak pointers before any other members are destroyed. |
| 1160 base::WeakPtrFactory<SingleBatchableDelegateRequest> weak_ptr_factory_; | 1164 base::WeakPtrFactory<SingleBatchableDelegateRequest> weak_ptr_factory_; |
| 1161 | 1165 |
| 1162 DISALLOW_COPY_AND_ASSIGN(SingleBatchableDelegateRequest); | 1166 DISALLOW_COPY_AND_ASSIGN(SingleBatchableDelegateRequest); |
| 1163 }; | 1167 }; |
| 1164 | 1168 |
| 1165 //========================== BatchUploadRequest ========================== | 1169 //========================== BatchUploadRequest ========================== |
| 1166 | 1170 |
| 1167 class BatchUploadChildEntry { | 1171 class BatchUploadChildEntry { |
| 1168 public: | 1172 public: |
| 1169 explicit BatchUploadChildEntry(BatchableDelegate* request); | 1173 explicit BatchUploadChildEntry(BatchableDelegate* request); |
| 1170 ~BatchUploadChildEntry(); | 1174 ~BatchUploadChildEntry(); |
| 1171 scoped_ptr<BatchableDelegate> request; | 1175 std::unique_ptr<BatchableDelegate> request; |
| 1172 bool prepared; | 1176 bool prepared; |
| 1173 int64_t data_offset; | 1177 int64_t data_offset; |
| 1174 int64_t data_size; | 1178 int64_t data_size; |
| 1175 | 1179 |
| 1176 private: | 1180 private: |
| 1177 DISALLOW_COPY_AND_ASSIGN(BatchUploadChildEntry); | 1181 DISALLOW_COPY_AND_ASSIGN(BatchUploadChildEntry); |
| 1178 }; | 1182 }; |
| 1179 | 1183 |
| 1180 class BatchUploadRequest : public UrlFetchRequestBase { | 1184 class BatchUploadRequest : public UrlFetchRequestBase { |
| 1181 public: | 1185 public: |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1255 // invalidate its weak pointers before any other members are destroyed. | 1259 // invalidate its weak pointers before any other members are destroyed. |
| 1256 base::WeakPtrFactory<BatchUploadRequest> weak_ptr_factory_; | 1260 base::WeakPtrFactory<BatchUploadRequest> weak_ptr_factory_; |
| 1257 | 1261 |
| 1258 DISALLOW_COPY_AND_ASSIGN(BatchUploadRequest); | 1262 DISALLOW_COPY_AND_ASSIGN(BatchUploadRequest); |
| 1259 }; | 1263 }; |
| 1260 | 1264 |
| 1261 } // namespace drive | 1265 } // namespace drive |
| 1262 } // namespace google_apis | 1266 } // namespace google_apis |
| 1263 | 1267 |
| 1264 #endif // GOOGLE_APIS_DRIVE_DRIVE_API_REQUESTS_H_ | 1268 #endif // GOOGLE_APIS_DRIVE_DRIVE_API_REQUESTS_H_ |
| OLD | NEW |