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 // This file provides base classes used to issue HTTP requests for Google | 5 // This file provides base classes used to issue HTTP requests for Google |
6 // APIs. | 6 // APIs. |
7 | 7 |
8 #ifndef GOOGLE_APIS_DRIVE_BASE_REQUESTS_H_ | 8 #ifndef GOOGLE_APIS_DRIVE_BASE_REQUESTS_H_ |
9 #define GOOGLE_APIS_DRIVE_BASE_REQUESTS_H_ | 9 #define GOOGLE_APIS_DRIVE_BASE_REQUESTS_H_ |
10 | 10 |
11 #include <string> | 11 #include <string> |
12 #include <vector> | 12 #include <vector> |
13 | 13 |
14 #include "base/callback.h" | 14 #include "base/callback.h" |
15 #include "base/files/file_path.h" | 15 #include "base/files/file_path.h" |
16 #include "base/memory/weak_ptr.h" | 16 #include "base/memory/weak_ptr.h" |
17 #include "base/threading/thread_checker.h" | 17 #include "base/threading/thread_checker.h" |
18 #include "google_apis/drive/gdata_errorcode.h" | 18 #include "google_apis/drive/drive_api_error_codes.h" |
19 #include "net/url_request/url_fetcher.h" | 19 #include "net/url_request/url_fetcher.h" |
20 #include "net/url_request/url_fetcher_delegate.h" | 20 #include "net/url_request/url_fetcher_delegate.h" |
21 #include "net/url_request/url_fetcher_response_writer.h" | 21 #include "net/url_request/url_fetcher_response_writer.h" |
22 #include "url/gurl.h" | 22 #include "url/gurl.h" |
23 | 23 |
24 namespace base { | 24 namespace base { |
25 class Value; | 25 class Value; |
26 } // namespace base | 26 } // namespace base |
27 | 27 |
28 namespace google_apis { | 28 namespace google_apis { |
29 | 29 |
30 class FileResource; | 30 class FileResource; |
31 class RequestSender; | 31 class RequestSender; |
32 | 32 |
33 // Callback used for requests that the server returns FileResource data | 33 // Callback used for requests that the server returns FileResource data |
34 // formatted into JSON value. | 34 // formatted into JSON value. |
35 typedef base::Callback<void(GDataErrorCode error, | 35 typedef base::Callback<void(DriveApiErrorCode error, |
36 scoped_ptr<FileResource> entry)> | 36 scoped_ptr<FileResource> entry)> |
37 FileResourceCallback; | 37 FileResourceCallback; |
38 | 38 |
39 // Callback used for DownloadFileRequest and ResumeUploadRequestBase. | 39 // Callback used for DownloadFileRequest and ResumeUploadRequestBase. |
40 typedef base::Callback<void(int64 progress, int64 total)> ProgressCallback; | 40 typedef base::Callback<void(int64 progress, int64 total)> ProgressCallback; |
41 | 41 |
42 // Callback used to get the content from DownloadFileRequest. | 42 // Callback used to get the content from DownloadFileRequest. |
43 typedef base::Callback<void( | 43 typedef base::Callback<void( |
44 GDataErrorCode error, | 44 DriveApiErrorCode error, |
45 scoped_ptr<std::string> content)> GetContentCallback; | 45 scoped_ptr<std::string> content)> GetContentCallback; |
46 | 46 |
47 // Parses JSON passed in |json|. Returns NULL on failure. | 47 // Parses JSON passed in |json|. Returns NULL on failure. |
48 scoped_ptr<base::Value> ParseJson(const std::string& json); | 48 scoped_ptr<base::Value> ParseJson(const std::string& json); |
49 | 49 |
50 //======================= AuthenticatedRequestInterface ====================== | 50 //======================= AuthenticatedRequestInterface ====================== |
51 | 51 |
52 // An interface class for implementing a request which requires OAuth2 | 52 // An interface class for implementing a request which requires OAuth2 |
53 // authentication. | 53 // authentication. |
54 class AuthenticatedRequestInterface { | 54 class AuthenticatedRequestInterface { |
(...skipping 10 matching lines...) Expand all Loading... |
65 // |callback| is called when re-authentication is needed for a certain | 65 // |callback| is called when re-authentication is needed for a certain |
66 // number of times (see kMaxReAuthenticateAttemptsPerRequest in .cc). | 66 // number of times (see kMaxReAuthenticateAttemptsPerRequest in .cc). |
67 // The callback should retry by calling Start() again with a new access | 67 // The callback should retry by calling Start() again with a new access |
68 // token, or just call OnAuthFailed() if a retry is not attempted. | 68 // token, or just call OnAuthFailed() if a retry is not attempted. |
69 // |callback| must not be null. | 69 // |callback| must not be null. |
70 virtual void Start(const std::string& access_token, | 70 virtual void Start(const std::string& access_token, |
71 const std::string& custom_user_agent, | 71 const std::string& custom_user_agent, |
72 const ReAuthenticateCallback& callback) = 0; | 72 const ReAuthenticateCallback& callback) = 0; |
73 | 73 |
74 // Invoked when the authentication failed with an error code |code|. | 74 // Invoked when the authentication failed with an error code |code|. |
75 virtual void OnAuthFailed(GDataErrorCode code) = 0; | 75 virtual void OnAuthFailed(DriveApiErrorCode code) = 0; |
76 | 76 |
77 // Gets a weak pointer to this request object. Since requests may be | 77 // Gets a weak pointer to this request object. Since requests may be |
78 // deleted when it is canceled by user action, for posting asynchronous tasks | 78 // deleted when it is canceled by user action, for posting asynchronous tasks |
79 // on the authentication request object, weak pointers have to be used. | 79 // on the authentication request object, weak pointers have to be used. |
80 // TODO(kinaba): crbug.com/134814 use more clean life time management than | 80 // TODO(kinaba): crbug.com/134814 use more clean life time management than |
81 // using weak pointers. | 81 // using weak pointers. |
82 virtual base::WeakPtr<AuthenticatedRequestInterface> GetWeakPtr() = 0; | 82 virtual base::WeakPtr<AuthenticatedRequestInterface> GetWeakPtr() = 0; |
83 | 83 |
84 // Cancels the request. It will invoke the callback object passed in | 84 // Cancels the request. It will invoke the callback object passed in |
85 // each request's constructor with error code GDATA_CANCELLED. | 85 // each request's constructor with error code DRIVE_CANCELLED. |
86 virtual void Cancel() = 0; | 86 virtual void Cancel() = 0; |
87 }; | 87 }; |
88 | 88 |
89 //=========================== ResponseWriter ================================== | 89 //=========================== ResponseWriter ================================== |
90 | 90 |
91 // Saves the response for the request to a file or string. | 91 // Saves the response for the request to a file or string. |
92 class ResponseWriter : public net::URLFetcherResponseWriter { | 92 class ResponseWriter : public net::URLFetcherResponseWriter { |
93 public: | 93 public: |
94 // If file_path is not empty, the response will be saved with file_writer_, | 94 // If file_path is not empty, the response will be saved with file_writer_, |
95 // otherwise it will be saved to data_. | 95 // otherwise it will be saved to data_. |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
174 // is read. | 174 // is read. |
175 virtual void GetOutputFilePath(base::FilePath* local_file_path, | 175 virtual void GetOutputFilePath(base::FilePath* local_file_path, |
176 GetContentCallback* get_content_callback); | 176 GetContentCallback* get_content_callback); |
177 | 177 |
178 // Invoked by OnURLFetchComplete when the request completes without an | 178 // Invoked by OnURLFetchComplete when the request completes without an |
179 // authentication error. Must be implemented by a derived class. | 179 // authentication error. Must be implemented by a derived class. |
180 virtual void ProcessURLFetchResults(const net::URLFetcher* source) = 0; | 180 virtual void ProcessURLFetchResults(const net::URLFetcher* source) = 0; |
181 | 181 |
182 // Invoked by this base class upon an authentication error or cancel by | 182 // Invoked by this base class upon an authentication error or cancel by |
183 // a user request. Must be implemented by a derived class. | 183 // a user request. Must be implemented by a derived class. |
184 virtual void RunCallbackOnPrematureFailure(GDataErrorCode code) = 0; | 184 virtual void RunCallbackOnPrematureFailure(DriveApiErrorCode code) = 0; |
185 | 185 |
186 // Invoked from derived classes when ProcessURLFetchResults() is completed. | 186 // Invoked from derived classes when ProcessURLFetchResults() is completed. |
187 void OnProcessURLFetchResultsComplete(); | 187 void OnProcessURLFetchResultsComplete(); |
188 | 188 |
189 // Returns an appropriate GDataErrorCode based on the HTTP response code and | 189 // Returns an appropriate DriveApiErrorCode based on the HTTP response code |
190 // the status of the URLFetcher. | 190 // and the status of the URLFetcher. |
191 GDataErrorCode GetErrorCode(); | 191 DriveApiErrorCode GetErrorCode(); |
192 | 192 |
193 // Returns true if called on the thread where the constructor was called. | 193 // Returns true if called on the thread where the constructor was called. |
194 bool CalledOnValidThread(); | 194 bool CalledOnValidThread(); |
195 | 195 |
196 // Returns the writer which is used to save the response for the request. | 196 // Returns the writer which is used to save the response for the request. |
197 ResponseWriter* response_writer() const { return response_writer_; } | 197 ResponseWriter* response_writer() const { return response_writer_; } |
198 | 198 |
199 // Returns the task runner that should be used for blocking tasks. | 199 // Returns the task runner that should be used for blocking tasks. |
200 base::SequencedTaskRunner* blocking_task_runner() const; | 200 base::SequencedTaskRunner* blocking_task_runner() const; |
201 | 201 |
202 private: | 202 private: |
203 // URLFetcherDelegate overrides. | 203 // URLFetcherDelegate overrides. |
204 void OnURLFetchComplete(const net::URLFetcher* source) override; | 204 void OnURLFetchComplete(const net::URLFetcher* source) override; |
205 | 205 |
206 // AuthenticatedRequestInterface overrides. | 206 // AuthenticatedRequestInterface overrides. |
207 void OnAuthFailed(GDataErrorCode code) override; | 207 void OnAuthFailed(DriveApiErrorCode code) override; |
208 | 208 |
209 ReAuthenticateCallback re_authenticate_callback_; | 209 ReAuthenticateCallback re_authenticate_callback_; |
210 int re_authenticate_count_; | 210 int re_authenticate_count_; |
211 scoped_ptr<net::URLFetcher> url_fetcher_; | 211 scoped_ptr<net::URLFetcher> url_fetcher_; |
212 ResponseWriter* response_writer_; // Owned by |url_fetcher_|. | 212 ResponseWriter* response_writer_; // Owned by |url_fetcher_|. |
213 RequestSender* sender_; | 213 RequestSender* sender_; |
214 GDataErrorCode error_code_; | 214 DriveApiErrorCode error_code_; |
215 | 215 |
216 base::ThreadChecker thread_checker_; | 216 base::ThreadChecker thread_checker_; |
217 | 217 |
218 // Note: This should remain the last member so it'll be destroyed and | 218 // Note: This should remain the last member so it'll be destroyed and |
219 // invalidate its weak pointers before any other members are destroyed. | 219 // invalidate its weak pointers before any other members are destroyed. |
220 base::WeakPtrFactory<UrlFetchRequestBase> weak_ptr_factory_; | 220 base::WeakPtrFactory<UrlFetchRequestBase> weak_ptr_factory_; |
221 | 221 |
222 DISALLOW_COPY_AND_ASSIGN(UrlFetchRequestBase); | 222 DISALLOW_COPY_AND_ASSIGN(UrlFetchRequestBase); |
223 }; | 223 }; |
224 | 224 |
225 //============================ EntryActionRequest ============================ | 225 //============================ EntryActionRequest ============================ |
226 | 226 |
227 // Callback type for requests that return only error status, like: Delete/Move. | 227 // Callback type for requests that return only error status, like: Delete/Move. |
228 typedef base::Callback<void(GDataErrorCode error)> EntryActionCallback; | 228 typedef base::Callback<void(DriveApiErrorCode error)> EntryActionCallback; |
229 | 229 |
230 // This class performs a simple action over a given entry (document/file). | 230 // This class performs a simple action over a given entry (document/file). |
231 // It is meant to be used for requests that return no JSON blobs. | 231 // It is meant to be used for requests that return no JSON blobs. |
232 class EntryActionRequest : public UrlFetchRequestBase { | 232 class EntryActionRequest : public UrlFetchRequestBase { |
233 public: | 233 public: |
234 // |callback| is called when the request is finished either by success or by | 234 // |callback| is called when the request is finished either by success or by |
235 // failure. It must not be null. | 235 // failure. It must not be null. |
236 EntryActionRequest(RequestSender* sender, | 236 EntryActionRequest(RequestSender* sender, |
237 const EntryActionCallback& callback); | 237 const EntryActionCallback& callback); |
238 ~EntryActionRequest() override; | 238 ~EntryActionRequest() override; |
239 | 239 |
240 protected: | 240 protected: |
241 // Overridden from UrlFetchRequestBase. | 241 // Overridden from UrlFetchRequestBase. |
242 void ProcessURLFetchResults(const net::URLFetcher* source) override; | 242 void ProcessURLFetchResults(const net::URLFetcher* source) override; |
243 void RunCallbackOnPrematureFailure(GDataErrorCode code) override; | 243 void RunCallbackOnPrematureFailure(DriveApiErrorCode code) override; |
244 | 244 |
245 private: | 245 private: |
246 const EntryActionCallback callback_; | 246 const EntryActionCallback callback_; |
247 | 247 |
248 DISALLOW_COPY_AND_ASSIGN(EntryActionRequest); | 248 DISALLOW_COPY_AND_ASSIGN(EntryActionRequest); |
249 }; | 249 }; |
250 | 250 |
251 //=========================== InitiateUploadRequestBase======================= | 251 //=========================== InitiateUploadRequestBase======================= |
252 | 252 |
253 // Callback type for DriveServiceInterface::InitiateUpload. | 253 // Callback type for DriveServiceInterface::InitiateUpload. |
254 typedef base::Callback<void(GDataErrorCode error, | 254 typedef base::Callback<void(DriveApiErrorCode error, |
255 const GURL& upload_url)> InitiateUploadCallback; | 255 const GURL& upload_url)> InitiateUploadCallback; |
256 | 256 |
257 // This class provides base implementation for performing the request for | 257 // This class provides base implementation for performing the request for |
258 // initiating the upload of a file. | 258 // initiating the upload of a file. |
259 // |callback| will be called with the obtained upload URL. The URL will be | 259 // |callback| will be called with the obtained upload URL. The URL will be |
260 // used with requests for resuming the file uploading. | 260 // used with requests for resuming the file uploading. |
261 // | 261 // |
262 // Here's the flow of uploading: | 262 // Here's the flow of uploading: |
263 // 1) Get the upload URL with a class inheriting InitiateUploadRequestBase. | 263 // 1) Get the upload URL with a class inheriting InitiateUploadRequestBase. |
264 // 2) Upload the first 1GB (see kUploadChunkSize in drive_uploader.cc) | 264 // 2) Upload the first 1GB (see kUploadChunkSize in drive_uploader.cc) |
265 // of the target file to the upload URL | 265 // of the target file to the upload URL |
266 // 3) If there is more data to upload, go to 2). | 266 // 3) If there is more data to upload, go to 2). |
267 // | 267 // |
268 class InitiateUploadRequestBase : public UrlFetchRequestBase { | 268 class InitiateUploadRequestBase : public UrlFetchRequestBase { |
269 protected: | 269 protected: |
270 // |callback| will be called with the upload URL, where upload data is | 270 // |callback| will be called with the upload URL, where upload data is |
271 // uploaded to with ResumeUploadRequestBase. It must not be null. | 271 // uploaded to with ResumeUploadRequestBase. It must not be null. |
272 // |content_type| and |content_length| should be the attributes of the | 272 // |content_type| and |content_length| should be the attributes of the |
273 // uploading file. | 273 // uploading file. |
274 InitiateUploadRequestBase(RequestSender* sender, | 274 InitiateUploadRequestBase(RequestSender* sender, |
275 const InitiateUploadCallback& callback, | 275 const InitiateUploadCallback& callback, |
276 const std::string& content_type, | 276 const std::string& content_type, |
277 int64 content_length); | 277 int64 content_length); |
278 ~InitiateUploadRequestBase() override; | 278 ~InitiateUploadRequestBase() override; |
279 | 279 |
280 // UrlFetchRequestBase overrides. | 280 // UrlFetchRequestBase overrides. |
281 void ProcessURLFetchResults(const net::URLFetcher* source) override; | 281 void ProcessURLFetchResults(const net::URLFetcher* source) override; |
282 void RunCallbackOnPrematureFailure(GDataErrorCode code) override; | 282 void RunCallbackOnPrematureFailure(DriveApiErrorCode code) override; |
283 std::vector<std::string> GetExtraRequestHeaders() const override; | 283 std::vector<std::string> GetExtraRequestHeaders() const override; |
284 | 284 |
285 private: | 285 private: |
286 const InitiateUploadCallback callback_; | 286 const InitiateUploadCallback callback_; |
287 const std::string content_type_; | 287 const std::string content_type_; |
288 const int64 content_length_; | 288 const int64 content_length_; |
289 | 289 |
290 DISALLOW_COPY_AND_ASSIGN(InitiateUploadRequestBase); | 290 DISALLOW_COPY_AND_ASSIGN(InitiateUploadRequestBase); |
291 }; | 291 }; |
292 | 292 |
293 //========================== UploadRangeRequestBase ========================== | 293 //========================== UploadRangeRequestBase ========================== |
294 | 294 |
295 // Struct for response to ResumeUpload and GetUploadStatus. | 295 // Struct for response to ResumeUpload and GetUploadStatus. |
296 struct UploadRangeResponse { | 296 struct UploadRangeResponse { |
297 UploadRangeResponse(); | 297 UploadRangeResponse(); |
298 UploadRangeResponse(GDataErrorCode code, | 298 UploadRangeResponse(DriveApiErrorCode code, |
299 int64 start_position_received, | 299 int64 start_position_received, |
300 int64 end_position_received); | 300 int64 end_position_received); |
301 ~UploadRangeResponse(); | 301 ~UploadRangeResponse(); |
302 | 302 |
303 GDataErrorCode code; | 303 DriveApiErrorCode code; |
304 // The values of "Range" header returned from the server. The values are | 304 // The values of "Range" header returned from the server. The values are |
305 // used to continue uploading more data. These are set to -1 if an upload | 305 // used to continue uploading more data. These are set to -1 if an upload |
306 // is complete. | 306 // is complete. |
307 // |start_position_received| is inclusive and |end_position_received| is | 307 // |start_position_received| is inclusive and |end_position_received| is |
308 // exclusive to follow the common C++ manner, although the response from | 308 // exclusive to follow the common C++ manner, although the response from |
309 // the server has "Range" header in inclusive format at both sides. | 309 // the server has "Range" header in inclusive format at both sides. |
310 int64 start_position_received; | 310 int64 start_position_received; |
311 int64 end_position_received; | 311 int64 end_position_received; |
312 }; | 312 }; |
313 | 313 |
314 // Base class for a URL fetch request expecting the response containing the | 314 // Base class for a URL fetch request expecting the response containing the |
315 // current uploading range. This class processes the response containing | 315 // current uploading range. This class processes the response containing |
316 // "Range" header and invoke OnRangeRequestComplete. | 316 // "Range" header and invoke OnRangeRequestComplete. |
317 class UploadRangeRequestBase : public UrlFetchRequestBase { | 317 class UploadRangeRequestBase : public UrlFetchRequestBase { |
318 protected: | 318 protected: |
319 // |upload_url| is the URL of where to upload the file to. | 319 // |upload_url| is the URL of where to upload the file to. |
320 UploadRangeRequestBase(RequestSender* sender, const GURL& upload_url); | 320 UploadRangeRequestBase(RequestSender* sender, const GURL& upload_url); |
321 ~UploadRangeRequestBase() override; | 321 ~UploadRangeRequestBase() override; |
322 | 322 |
323 // UrlFetchRequestBase overrides. | 323 // UrlFetchRequestBase overrides. |
324 GURL GetURL() const override; | 324 GURL GetURL() const override; |
325 net::URLFetcher::RequestType GetRequestType() const override; | 325 net::URLFetcher::RequestType GetRequestType() const override; |
326 void ProcessURLFetchResults(const net::URLFetcher* source) override; | 326 void ProcessURLFetchResults(const net::URLFetcher* source) override; |
327 void RunCallbackOnPrematureFailure(GDataErrorCode code) override; | 327 void RunCallbackOnPrematureFailure(DriveApiErrorCode code) override; |
328 | 328 |
329 // This method will be called when the request is done, regardless of | 329 // This method will be called when the request is done, regardless of |
330 // whether it is succeeded or failed. | 330 // whether it is succeeded or failed. |
331 // | 331 // |
332 // 1) If there is more data to upload, |code| of |response| is set to | 332 // 1) If there is more data to upload, |code| of |response| is set to |
333 // HTTP_RESUME_INCOMPLETE, and positions are set appropriately. Also, |value| | 333 // HTTP_RESUME_INCOMPLETE, and positions are set appropriately. Also, |value| |
334 // will be set to NULL. | 334 // will be set to NULL. |
335 // 2) If the upload is complete, |code| is set to HTTP_CREATED for a new file | 335 // 2) If the upload is complete, |code| is set to HTTP_CREATED for a new file |
336 // or HTTP_SUCCESS for an existing file. Positions are set to -1, and |value| | 336 // or HTTP_SUCCESS for an existing file. Positions are set to -1, and |value| |
337 // is set to a parsed JSON value representing the uploaded file. | 337 // is set to a parsed JSON value representing the uploaded file. |
338 // 3) If a premature failure is found, |code| is set to a value representing | 338 // 3) If a premature failure is found, |code| is set to a value representing |
339 // the situation. Positions are set to 0, and |value| is set to NULL. | 339 // the situation. Positions are set to 0, and |value| is set to NULL. |
340 // | 340 // |
341 // See also the comments for UploadRangeResponse. | 341 // See also the comments for UploadRangeResponse. |
342 // Note: Subclasses should have responsibility to run some callback | 342 // Note: Subclasses should have responsibility to run some callback |
343 // in this method to notify the finish status to its clients (or ignore it | 343 // in this method to notify the finish status to its clients (or ignore it |
344 // under its responsibility). | 344 // under its responsibility). |
345 virtual void OnRangeRequestComplete( | 345 virtual void OnRangeRequestComplete( |
346 const UploadRangeResponse& response, scoped_ptr<base::Value> value) = 0; | 346 const UploadRangeResponse& response, scoped_ptr<base::Value> value) = 0; |
347 | 347 |
348 private: | 348 private: |
349 // Called when ParseJson() is completed. | 349 // Called when ParseJson() is completed. |
350 void OnDataParsed(GDataErrorCode code, scoped_ptr<base::Value> value); | 350 void OnDataParsed(DriveApiErrorCode code, scoped_ptr<base::Value> value); |
351 | 351 |
352 const GURL upload_url_; | 352 const GURL upload_url_; |
353 | 353 |
354 // Note: This should remain the last member so it'll be destroyed and | 354 // Note: This should remain the last member so it'll be destroyed and |
355 // invalidate its weak pointers before any other members are destroyed. | 355 // invalidate its weak pointers before any other members are destroyed. |
356 base::WeakPtrFactory<UploadRangeRequestBase> weak_ptr_factory_; | 356 base::WeakPtrFactory<UploadRangeRequestBase> weak_ptr_factory_; |
357 | 357 |
358 DISALLOW_COPY_AND_ASSIGN(UploadRangeRequestBase); | 358 DISALLOW_COPY_AND_ASSIGN(UploadRangeRequestBase); |
359 }; | 359 }; |
360 | 360 |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
464 | 464 |
465 // Overridden from AuthenticatedRequestInterface. | 465 // Overridden from AuthenticatedRequestInterface. |
466 void Start(const std::string& access_token, | 466 void Start(const std::string& access_token, |
467 const std::string& custom_user_agent, | 467 const std::string& custom_user_agent, |
468 const ReAuthenticateCallback& callback) override; | 468 const ReAuthenticateCallback& callback) override; |
469 | 469 |
470 // Overridden from UrlFetchRequestBase. | 470 // Overridden from UrlFetchRequestBase. |
471 bool GetContentData(std::string* upload_content_type, | 471 bool GetContentData(std::string* upload_content_type, |
472 std::string* upload_content) override; | 472 std::string* upload_content) override; |
473 void ProcessURLFetchResults(const net::URLFetcher* source) override; | 473 void ProcessURLFetchResults(const net::URLFetcher* source) override; |
474 void RunCallbackOnPrematureFailure(GDataErrorCode code) override; | 474 void RunCallbackOnPrematureFailure(DriveApiErrorCode code) override; |
475 | 475 |
476 // content::UrlFetcherDelegate overrides. | 476 // content::UrlFetcherDelegate overrides. |
477 void OnURLFetchUploadProgress(const net::URLFetcher* source, | 477 void OnURLFetchUploadProgress(const net::URLFetcher* source, |
478 int64 current, | 478 int64 current, |
479 int64 total) override; | 479 int64 total) override; |
480 | 480 |
481 // Parses the response value and invokes |callback_| with |FileResource|. | 481 // Parses the response value and invokes |callback_| with |FileResource|. |
482 void OnDataParsed(GDataErrorCode code, scoped_ptr<base::Value> value); | 482 void OnDataParsed(DriveApiErrorCode code, scoped_ptr<base::Value> value); |
483 | 483 |
484 // Whether to the request has modified date information or not. | 484 // Whether to the request has modified date information or not. |
485 bool has_modified_date() const { return has_modified_date_; } | 485 bool has_modified_date() const { return has_modified_date_; } |
486 | 486 |
487 private: | 487 private: |
488 // Continues to rest part of |Start| method after determining boundary string | 488 // Continues to rest part of |Start| method after determining boundary string |
489 // of multipart/related. | 489 // of multipart/related. |
490 void OnPrepareUploadContent(const std::string& access_token, | 490 void OnPrepareUploadContent(const std::string& access_token, |
491 const std::string& custom_user_agent, | 491 const std::string& custom_user_agent, |
492 const ReAuthenticateCallback& callback, | 492 const ReAuthenticateCallback& callback, |
(...skipping 18 matching lines...) Expand all Loading... |
511 // Note: This should remain the last member so it'll be destroyed and | 511 // Note: This should remain the last member so it'll be destroyed and |
512 // invalidate its weak pointers before any other members are destroyed. | 512 // invalidate its weak pointers before any other members are destroyed. |
513 base::WeakPtrFactory<MultipartUploadRequestBase> weak_ptr_factory_; | 513 base::WeakPtrFactory<MultipartUploadRequestBase> weak_ptr_factory_; |
514 | 514 |
515 DISALLOW_COPY_AND_ASSIGN(MultipartUploadRequestBase); | 515 DISALLOW_COPY_AND_ASSIGN(MultipartUploadRequestBase); |
516 }; | 516 }; |
517 | 517 |
518 //============================ DownloadFileRequest =========================== | 518 //============================ DownloadFileRequest =========================== |
519 | 519 |
520 // Callback type for receiving the completion of DownloadFileRequest. | 520 // Callback type for receiving the completion of DownloadFileRequest. |
521 typedef base::Callback<void(GDataErrorCode error, | 521 typedef base::Callback<void(DriveApiErrorCode error, |
522 const base::FilePath& temp_file)> | 522 const base::FilePath& temp_file)> |
523 DownloadActionCallback; | 523 DownloadActionCallback; |
524 | 524 |
525 // This is a base class for performing the request for downloading a file. | 525 // This is a base class for performing the request for downloading a file. |
526 class DownloadFileRequestBase : public UrlFetchRequestBase { | 526 class DownloadFileRequestBase : public UrlFetchRequestBase { |
527 public: | 527 public: |
528 // download_action_callback: | 528 // download_action_callback: |
529 // This callback is called when the download is complete. Must not be null. | 529 // This callback is called when the download is complete. Must not be null. |
530 // | 530 // |
531 // get_content_callback: | 531 // get_content_callback: |
(...skipping 18 matching lines...) Expand all Loading... |
550 const GURL& download_url, | 550 const GURL& download_url, |
551 const base::FilePath& output_file_path); | 551 const base::FilePath& output_file_path); |
552 ~DownloadFileRequestBase() override; | 552 ~DownloadFileRequestBase() override; |
553 | 553 |
554 protected: | 554 protected: |
555 // UrlFetchRequestBase overrides. | 555 // UrlFetchRequestBase overrides. |
556 GURL GetURL() const override; | 556 GURL GetURL() const override; |
557 void GetOutputFilePath(base::FilePath* local_file_path, | 557 void GetOutputFilePath(base::FilePath* local_file_path, |
558 GetContentCallback* get_content_callback) override; | 558 GetContentCallback* get_content_callback) override; |
559 void ProcessURLFetchResults(const net::URLFetcher* source) override; | 559 void ProcessURLFetchResults(const net::URLFetcher* source) override; |
560 void RunCallbackOnPrematureFailure(GDataErrorCode code) override; | 560 void RunCallbackOnPrematureFailure(DriveApiErrorCode code) override; |
561 | 561 |
562 // net::URLFetcherDelegate overrides. | 562 // net::URLFetcherDelegate overrides. |
563 void OnURLFetchDownloadProgress(const net::URLFetcher* source, | 563 void OnURLFetchDownloadProgress(const net::URLFetcher* source, |
564 int64 current, | 564 int64 current, |
565 int64 total) override; | 565 int64 total) override; |
566 | 566 |
567 private: | 567 private: |
568 const DownloadActionCallback download_action_callback_; | 568 const DownloadActionCallback download_action_callback_; |
569 const GetContentCallback get_content_callback_; | 569 const GetContentCallback get_content_callback_; |
570 const ProgressCallback progress_callback_; | 570 const ProgressCallback progress_callback_; |
571 const GURL download_url_; | 571 const GURL download_url_; |
572 const base::FilePath output_file_path_; | 572 const base::FilePath output_file_path_; |
573 | 573 |
574 DISALLOW_COPY_AND_ASSIGN(DownloadFileRequestBase); | 574 DISALLOW_COPY_AND_ASSIGN(DownloadFileRequestBase); |
575 }; | 575 }; |
576 | 576 |
577 } // namespace google_apis | 577 } // namespace google_apis |
578 | 578 |
579 #endif // GOOGLE_APIS_DRIVE_BASE_REQUESTS_H_ | 579 #endif // GOOGLE_APIS_DRIVE_BASE_REQUESTS_H_ |
OLD | NEW |