Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(27)

Side by Side Diff: chrome/browser/drive/drive_uploader.cc

Issue 881403003: Rename gdata_errorcode.h to drive_api_error_codes.h (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix typos in BUILD.gn Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 #include "chrome/browser/drive/drive_uploader.h" 5 #include "chrome/browser/drive/drive_uploader.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback.h" 10 #include "base/callback.h"
11 #include "base/files/file_util.h" 11 #include "base/files/file_util.h"
12 #include "base/strings/string_number_conversions.h" 12 #include "base/strings/string_number_conversions.h"
13 #include "base/task_runner_util.h" 13 #include "base/task_runner_util.h"
14 #include "chrome/browser/drive/drive_service_interface.h" 14 #include "chrome/browser/drive/drive_service_interface.h"
15 #include "content/public/browser/power_save_blocker.h" 15 #include "content/public/browser/power_save_blocker.h"
16 #include "google_apis/drive/drive_api_parser.h" 16 #include "google_apis/drive/drive_api_parser.h"
17 17
18 using google_apis::CancelCallback; 18 using google_apis::CancelCallback;
19 using google_apis::FileResource; 19 using google_apis::FileResource;
20 using google_apis::GDATA_CANCELLED; 20 using google_apis::DRIVE_CANCELLED;
mtomasz 2015/01/29 06:18:02 nit: ditto
21 using google_apis::GDataErrorCode; 21 using google_apis::DriveApiErrorCode;
22 using google_apis::GDATA_NO_SPACE; 22 using google_apis::DRIVE_NO_SPACE;
23 using google_apis::HTTP_CONFLICT; 23 using google_apis::HTTP_CONFLICT;
24 using google_apis::HTTP_CREATED; 24 using google_apis::HTTP_CREATED;
25 using google_apis::HTTP_FORBIDDEN; 25 using google_apis::HTTP_FORBIDDEN;
26 using google_apis::HTTP_NOT_FOUND; 26 using google_apis::HTTP_NOT_FOUND;
27 using google_apis::HTTP_PRECONDITION; 27 using google_apis::HTTP_PRECONDITION;
28 using google_apis::HTTP_RESUME_INCOMPLETE; 28 using google_apis::HTTP_RESUME_INCOMPLETE;
29 using google_apis::HTTP_SUCCESS; 29 using google_apis::HTTP_SUCCESS;
30 using google_apis::ProgressCallback; 30 using google_apis::ProgressCallback;
31 using google_apis::UploadRangeResponse; 31 using google_apis::UploadRangeResponse;
32 32
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 bool get_file_size_result) { 226 bool get_file_size_result) {
227 DCHECK(thread_checker_.CalledOnValidThread()); 227 DCHECK(thread_checker_.CalledOnValidThread());
228 228
229 if (!get_file_size_result) { 229 if (!get_file_size_result) {
230 UploadFailed(upload_file_info.Pass(), HTTP_NOT_FOUND); 230 UploadFailed(upload_file_info.Pass(), HTTP_NOT_FOUND);
231 return; 231 return;
232 } 232 }
233 DCHECK_GE(upload_file_info->content_length, 0); 233 DCHECK_GE(upload_file_info->content_length, 0);
234 234
235 if (upload_file_info->cancelled) { 235 if (upload_file_info->cancelled) {
236 UploadFailed(upload_file_info.Pass(), GDATA_CANCELLED); 236 UploadFailed(upload_file_info.Pass(), DRIVE_CANCELLED);
237 return; 237 return;
238 } 238 }
239 start_initiate_upload_callback.Run(upload_file_info.Pass()); 239 start_initiate_upload_callback.Run(upload_file_info.Pass());
240 } 240 }
241 241
242 void DriveUploader::CallUploadServiceAPINewFile( 242 void DriveUploader::CallUploadServiceAPINewFile(
243 const std::string& parent_resource_id, 243 const std::string& parent_resource_id,
244 const std::string& title, 244 const std::string& title,
245 const UploadNewFileOptions& options, 245 const UploadNewFileOptions& options,
246 scoped_ptr<UploadFileInfo> upload_file_info) { 246 scoped_ptr<UploadFileInfo> upload_file_info) {
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 info_ptr->cancel_callback = drive_service_->InitiateUploadExistingFile( 283 info_ptr->cancel_callback = drive_service_->InitiateUploadExistingFile(
284 info_ptr->content_type, info_ptr->content_length, resource_id, options, 284 info_ptr->content_type, info_ptr->content_length, resource_id, options,
285 base::Bind(&DriveUploader::OnUploadLocationReceived, 285 base::Bind(&DriveUploader::OnUploadLocationReceived,
286 weak_ptr_factory_.GetWeakPtr(), 286 weak_ptr_factory_.GetWeakPtr(),
287 base::Passed(&upload_file_info))); 287 base::Passed(&upload_file_info)));
288 } 288 }
289 } 289 }
290 290
291 void DriveUploader::OnUploadLocationReceived( 291 void DriveUploader::OnUploadLocationReceived(
292 scoped_ptr<UploadFileInfo> upload_file_info, 292 scoped_ptr<UploadFileInfo> upload_file_info,
293 GDataErrorCode code, 293 DriveApiErrorCode code,
294 const GURL& upload_location) { 294 const GURL& upload_location) {
295 DCHECK(thread_checker_.CalledOnValidThread()); 295 DCHECK(thread_checker_.CalledOnValidThread());
296 296
297 DVLOG(1) << "Got upload location [" << upload_location.spec() 297 DVLOG(1) << "Got upload location [" << upload_location.spec()
298 << "] for [" << upload_file_info->file_path.value() << "]"; 298 << "] for [" << upload_file_info->file_path.value() << "]";
299 299
300 if (code != HTTP_SUCCESS) { 300 if (code != HTTP_SUCCESS) {
301 if (code == HTTP_PRECONDITION) 301 if (code == HTTP_PRECONDITION)
302 code = HTTP_CONFLICT; // ETag mismatch. 302 code = HTTP_CONFLICT; // ETag mismatch.
303 UploadFailed(upload_file_info.Pass(), code); 303 UploadFailed(upload_file_info.Pass(), code);
(...skipping 21 matching lines...) Expand all
325 325
326 void DriveUploader::UploadNextChunk( 326 void DriveUploader::UploadNextChunk(
327 scoped_ptr<UploadFileInfo> upload_file_info) { 327 scoped_ptr<UploadFileInfo> upload_file_info) {
328 DCHECK(thread_checker_.CalledOnValidThread()); 328 DCHECK(thread_checker_.CalledOnValidThread());
329 DCHECK(upload_file_info); 329 DCHECK(upload_file_info);
330 DCHECK_GE(upload_file_info->next_start_position, 0); 330 DCHECK_GE(upload_file_info->next_start_position, 0);
331 DCHECK_LE(upload_file_info->next_start_position, 331 DCHECK_LE(upload_file_info->next_start_position,
332 upload_file_info->content_length); 332 upload_file_info->content_length);
333 333
334 if (upload_file_info->cancelled) { 334 if (upload_file_info->cancelled) {
335 UploadFailed(upload_file_info.Pass(), GDATA_CANCELLED); 335 UploadFailed(upload_file_info.Pass(), DRIVE_CANCELLED);
336 return; 336 return;
337 } 337 }
338 338
339 // Limit the size of data uploaded per each request by kUploadChunkSize. 339 // Limit the size of data uploaded per each request by kUploadChunkSize.
340 const int64 end_position = std::min( 340 const int64 end_position = std::min(
341 upload_file_info->content_length, 341 upload_file_info->content_length,
342 upload_file_info->next_start_position + kUploadChunkSize); 342 upload_file_info->next_start_position + kUploadChunkSize);
343 343
344 UploadFileInfo* info_ptr = upload_file_info.get(); 344 UploadFileInfo* info_ptr = upload_file_info.get();
345 info_ptr->cancel_callback = drive_service_->ResumeUpload( 345 info_ptr->cancel_callback = drive_service_->ResumeUpload(
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
394 // (meaning that the data is uploaded from the beginning of the file), 394 // (meaning that the data is uploaded from the beginning of the file),
395 // proceed to upload the next chunk. 395 // proceed to upload the next chunk.
396 if (response.code != HTTP_RESUME_INCOMPLETE || 396 if (response.code != HTTP_RESUME_INCOMPLETE ||
397 response.start_position_received != 0) { 397 response.start_position_received != 0) {
398 DVLOG(1) 398 DVLOG(1)
399 << "UploadNextChunk http code=" << response.code 399 << "UploadNextChunk http code=" << response.code
400 << ", start_position_received=" << response.start_position_received 400 << ", start_position_received=" << response.start_position_received
401 << ", end_position_received=" << response.end_position_received; 401 << ", end_position_received=" << response.end_position_received;
402 UploadFailed( 402 UploadFailed(
403 upload_file_info.Pass(), 403 upload_file_info.Pass(),
404 response.code == HTTP_FORBIDDEN ? GDATA_NO_SPACE : response.code); 404 response.code == HTTP_FORBIDDEN ? DRIVE_NO_SPACE : response.code);
405 return; 405 return;
406 } 406 }
407 407
408 DVLOG(1) << "Received range " << response.start_position_received 408 DVLOG(1) << "Received range " << response.start_position_received
409 << "-" << response.end_position_received 409 << "-" << response.end_position_received
410 << " for [" << upload_file_info->file_path.value() << "]"; 410 << " for [" << upload_file_info->file_path.value() << "]";
411 411
412 upload_file_info->next_start_position = response.end_position_received; 412 upload_file_info->next_start_position = response.end_position_received;
413 UploadNextChunk(upload_file_info.Pass()); 413 UploadNextChunk(upload_file_info.Pass());
414 } 414 }
415 415
416 void DriveUploader::OnUploadProgress(const ProgressCallback& callback, 416 void DriveUploader::OnUploadProgress(const ProgressCallback& callback,
417 int64 start_position, 417 int64 start_position,
418 int64 total_size, 418 int64 total_size,
419 int64 progress_of_chunk, 419 int64 progress_of_chunk,
420 int64 total_of_chunk) { 420 int64 total_of_chunk) {
421 if (!callback.is_null()) 421 if (!callback.is_null())
422 callback.Run(start_position + progress_of_chunk, total_size); 422 callback.Run(start_position + progress_of_chunk, total_size);
423 } 423 }
424 424
425 void DriveUploader::UploadFailed(scoped_ptr<UploadFileInfo> upload_file_info, 425 void DriveUploader::UploadFailed(scoped_ptr<UploadFileInfo> upload_file_info,
426 GDataErrorCode error) { 426 DriveApiErrorCode error) {
427 DCHECK(thread_checker_.CalledOnValidThread()); 427 DCHECK(thread_checker_.CalledOnValidThread());
428 428
429 DVLOG(1) << "Upload failed " << upload_file_info->DebugString(); 429 DVLOG(1) << "Upload failed " << upload_file_info->DebugString();
430 430
431 if (upload_file_info->next_start_position < 0) { 431 if (upload_file_info->next_start_position < 0) {
432 // Discard the upload location because no request could succeed with it. 432 // Discard the upload location because no request could succeed with it.
433 // Maybe it's obsolete. 433 // Maybe it's obsolete.
434 upload_file_info->upload_location = GURL(); 434 upload_file_info->upload_location = GURL();
435 } 435 }
436 436
437 upload_file_info->completion_callback.Run( 437 upload_file_info->completion_callback.Run(
438 error, upload_file_info->upload_location, scoped_ptr<FileResource>()); 438 error, upload_file_info->upload_location, scoped_ptr<FileResource>());
439 } 439 }
440 440
441 void DriveUploader::OnMultipartUploadComplete( 441 void DriveUploader::OnMultipartUploadComplete(
442 scoped_ptr<UploadFileInfo> upload_file_info, 442 scoped_ptr<UploadFileInfo> upload_file_info,
443 google_apis::GDataErrorCode error, 443 google_apis::DriveApiErrorCode error,
444 scoped_ptr<FileResource> entry) { 444 scoped_ptr<FileResource> entry) {
445 DCHECK(thread_checker_.CalledOnValidThread()); 445 DCHECK(thread_checker_.CalledOnValidThread());
446 446
447 if (error == HTTP_CREATED || error == HTTP_SUCCESS) { 447 if (error == HTTP_CREATED || error == HTTP_SUCCESS) {
448 DVLOG(1) << "Successfully created uploaded file=[" 448 DVLOG(1) << "Successfully created uploaded file=["
449 << upload_file_info->file_path.value() << "]"; 449 << upload_file_info->file_path.value() << "]";
450 // Done uploading. 450 // Done uploading.
451 upload_file_info->completion_callback.Run( 451 upload_file_info->completion_callback.Run(
452 HTTP_SUCCESS, upload_file_info->upload_location, entry.Pass()); 452 HTTP_SUCCESS, upload_file_info->upload_location, entry.Pass());
453 } else { 453 } else {
454 DVLOG(1) << "Upload failed " << upload_file_info->DebugString(); 454 DVLOG(1) << "Upload failed " << upload_file_info->DebugString();
455 if (error == HTTP_PRECONDITION) 455 if (error == HTTP_PRECONDITION)
456 error = HTTP_CONFLICT; // ETag mismatch. 456 error = HTTP_CONFLICT; // ETag mismatch.
457 upload_file_info->completion_callback.Run( 457 upload_file_info->completion_callback.Run(
458 error, upload_file_info->upload_location, scoped_ptr<FileResource>()); 458 error, upload_file_info->upload_location, scoped_ptr<FileResource>());
459 } 459 }
460 } 460 }
461 461
462 } // namespace drive 462 } // namespace drive
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698