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

Side by Side Diff: chrome/browser/google_apis/base_requests.cc

Issue 17415007: Get rid of RequestRegistry (part 3): remove Drive path from request objects. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase. Created 7 years, 6 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 | Annotate | Revision Log
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/google_apis/base_requests.h" 5 #include "chrome/browser/google_apis/base_requests.h"
6 6
7 #include "base/json/json_reader.h" 7 #include "base/json/json_reader.h"
8 #include "base/strings/string_number_conversions.h" 8 #include "base/strings/string_number_conversions.h"
9 #include "base/strings/stringprintf.h" 9 #include "base/strings/stringprintf.h"
10 #include "base/task_runner_util.h" 10 #include "base/task_runner_util.h"
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 net::URLRequestContextGetter* url_request_context_getter) 97 net::URLRequestContextGetter* url_request_context_getter)
98 : RequestRegistry::Request(runner->request_registry()), 98 : RequestRegistry::Request(runner->request_registry()),
99 url_request_context_getter_(url_request_context_getter), 99 url_request_context_getter_(url_request_context_getter),
100 re_authenticate_count_(0), 100 re_authenticate_count_(0),
101 started_(false), 101 started_(false),
102 save_temp_file_(false), 102 save_temp_file_(false),
103 weak_ptr_factory_(this) { 103 weak_ptr_factory_(this) {
104 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 104 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
105 } 105 }
106 106
107 UrlFetchRequestBase::UrlFetchRequestBase(
108 RequestSender* runner,
109 net::URLRequestContextGetter* url_request_context_getter,
110 const base::FilePath& path)
111 : RequestRegistry::Request(runner->request_registry(), path),
112 url_request_context_getter_(url_request_context_getter),
113 re_authenticate_count_(0),
114 started_(false),
115 save_temp_file_(false),
116 weak_ptr_factory_(this) {
117 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
118 }
119
120 UrlFetchRequestBase::~UrlFetchRequestBase() {} 107 UrlFetchRequestBase::~UrlFetchRequestBase() {}
121 108
122 void UrlFetchRequestBase::Start(const std::string& access_token, 109 void UrlFetchRequestBase::Start(const std::string& access_token,
123 const std::string& custom_user_agent, 110 const std::string& custom_user_agent,
124 const ReAuthenticateCallback& callback) { 111 const ReAuthenticateCallback& callback) {
125 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 112 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
126 DCHECK(url_request_context_getter_); 113 DCHECK(url_request_context_getter_);
127 DCHECK(!access_token.empty()); 114 DCHECK(!access_token.empty());
128 DCHECK(!callback.is_null()); 115 DCHECK(!callback.is_null());
129 DCHECK(re_authenticate_callback_.is_null()); 116 DCHECK(re_authenticate_callback_.is_null());
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after
395 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 382 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
396 callback_.Run(fetch_error_code, value.Pass()); 383 callback_.Run(fetch_error_code, value.Pass());
397 } 384 }
398 385
399 //========================= InitiateUploadRequestBase ======================== 386 //========================= InitiateUploadRequestBase ========================
400 387
401 InitiateUploadRequestBase::InitiateUploadRequestBase( 388 InitiateUploadRequestBase::InitiateUploadRequestBase(
402 RequestSender* runner, 389 RequestSender* runner,
403 net::URLRequestContextGetter* url_request_context_getter, 390 net::URLRequestContextGetter* url_request_context_getter,
404 const InitiateUploadCallback& callback, 391 const InitiateUploadCallback& callback,
405 const base::FilePath& drive_file_path,
406 const std::string& content_type, 392 const std::string& content_type,
407 int64 content_length) 393 int64 content_length)
408 : UrlFetchRequestBase(runner, 394 : UrlFetchRequestBase(runner, url_request_context_getter),
409 url_request_context_getter,
410 drive_file_path),
411 callback_(callback), 395 callback_(callback),
412 drive_file_path_(drive_file_path),
413 content_type_(content_type), 396 content_type_(content_type),
414 content_length_(content_length) { 397 content_length_(content_length) {
415 DCHECK(!callback_.is_null()); 398 DCHECK(!callback_.is_null());
416 DCHECK(!content_type_.empty()); 399 DCHECK(!content_type_.empty());
417 DCHECK_GE(content_length_, 0); 400 DCHECK_GE(content_length_, 0);
418 } 401 }
419 402
420 InitiateUploadRequestBase::~InitiateUploadRequestBase() {} 403 InitiateUploadRequestBase::~InitiateUploadRequestBase() {}
421 404
422 void InitiateUploadRequestBase::ProcessURLFetchResults( 405 void InitiateUploadRequestBase::ProcessURLFetchResults(
423 const URLFetcher* source) { 406 const URLFetcher* source) {
424 GDataErrorCode code = GetErrorCode(source); 407 GDataErrorCode code = GetErrorCode(source);
425 408
426 std::string upload_location; 409 std::string upload_location;
427 if (code == HTTP_SUCCESS) { 410 if (code == HTTP_SUCCESS) {
428 // Retrieve value of the first "Location" header. 411 // Retrieve value of the first "Location" header.
429 source->GetResponseHeaders()->EnumerateHeader(NULL, 412 source->GetResponseHeaders()->EnumerateHeader(NULL,
430 kUploadResponseLocation, 413 kUploadResponseLocation,
431 &upload_location); 414 &upload_location);
432 } 415 }
433 VLOG(1) << "Got response for [" << drive_file_path_.value()
434 << "]: code=" << code
435 << ", location=[" << upload_location << "]";
436 416
437 callback_.Run(code, GURL(upload_location)); 417 callback_.Run(code, GURL(upload_location));
438 OnProcessURLFetchResultsComplete(code == HTTP_SUCCESS); 418 OnProcessURLFetchResultsComplete(code == HTTP_SUCCESS);
439 } 419 }
440 420
441 void InitiateUploadRequestBase::RunCallbackOnPrematureFailure( 421 void InitiateUploadRequestBase::RunCallbackOnPrematureFailure(
442 GDataErrorCode code) { 422 GDataErrorCode code) {
443 callback_.Run(code, GURL()); 423 callback_.Run(code, GURL());
444 } 424 }
445 425
(...skipping 23 matching lines...) Expand all
469 } 449 }
470 450
471 UploadRangeResponse::~UploadRangeResponse() { 451 UploadRangeResponse::~UploadRangeResponse() {
472 } 452 }
473 453
474 //========================== UploadRangeRequestBase ========================== 454 //========================== UploadRangeRequestBase ==========================
475 455
476 UploadRangeRequestBase::UploadRangeRequestBase( 456 UploadRangeRequestBase::UploadRangeRequestBase(
477 RequestSender* runner, 457 RequestSender* runner,
478 net::URLRequestContextGetter* url_request_context_getter, 458 net::URLRequestContextGetter* url_request_context_getter,
479 const base::FilePath& drive_file_path,
480 const GURL& upload_url) 459 const GURL& upload_url)
481 : UrlFetchRequestBase(runner, 460 : UrlFetchRequestBase(runner, url_request_context_getter),
482 url_request_context_getter,
483 drive_file_path),
484 drive_file_path_(drive_file_path),
485 upload_url_(upload_url), 461 upload_url_(upload_url),
486 weak_ptr_factory_(this) { 462 weak_ptr_factory_(this) {
487 } 463 }
488 464
489 UploadRangeRequestBase::~UploadRangeRequestBase() {} 465 UploadRangeRequestBase::~UploadRangeRequestBase() {}
490 466
491 GURL UploadRangeRequestBase::GetURL() const { 467 GURL UploadRangeRequestBase::GetURL() const {
492 // This is very tricky to get json from this request. To do that, &alt=json 468 // This is very tricky to get json from this request. To do that, &alt=json
493 // has to be appended not here but in InitiateUploadRequestBase::GetURL(). 469 // has to be appended not here but in InitiateUploadRequestBase::GetURL().
494 return upload_url_; 470 return upload_url_;
(...skipping 26 matching lines...) Expand all
521 // Range header represents the range inclusively, while we are treating 497 // Range header represents the range inclusively, while we are treating
522 // ranges exclusively (i.e., end_position_received should be one passed 498 // ranges exclusively (i.e., end_position_received should be one passed
523 // the last valid index). So "+ 1" is added. 499 // the last valid index). So "+ 1" is added.
524 start_position_received = ranges[0].first_byte_position(); 500 start_position_received = ranges[0].first_byte_position();
525 end_position_received = ranges[0].last_byte_position() + 1; 501 end_position_received = ranges[0].last_byte_position() + 1;
526 } 502 }
527 } 503 }
528 // The Range header has the received data range, so the start position 504 // The Range header has the received data range, so the start position
529 // should be always 0. 505 // should be always 0.
530 DCHECK_EQ(start_position_received, 0); 506 DCHECK_EQ(start_position_received, 0);
531 DVLOG(1) << "Got response for [" << drive_file_path_.value()
532 << "]: code=" << code
533 << ", range_hdr=[" << range_received
534 << "], range_parsed=" << start_position_received
535 << "," << end_position_received;
536 507
537 OnRangeRequestComplete(UploadRangeResponse(code, 508 OnRangeRequestComplete(UploadRangeResponse(code,
538 start_position_received, 509 start_position_received,
539 end_position_received), 510 end_position_received),
540 scoped_ptr<base::Value>()); 511 scoped_ptr<base::Value>());
541 512
542 OnProcessURLFetchResultsComplete(true); 513 OnProcessURLFetchResultsComplete(true);
543 } else { 514 } else {
544 // There might be explanation of unexpected error code in response. 515 // There might be explanation of unexpected error code in response.
545 std::string response_content; 516 std::string response_content;
546 source->GetResponseAsString(&response_content); 517 source->GetResponseAsString(&response_content);
547 DVLOG(1) << "Got response for [" << drive_file_path_.value()
548 << "]: code=" << code
549 << ", content=[\n" << response_content << "\n]";
550 518
551 ParseJson(response_content, 519 ParseJson(response_content,
552 base::Bind(&UploadRangeRequestBase::OnDataParsed, 520 base::Bind(&UploadRangeRequestBase::OnDataParsed,
553 weak_ptr_factory_.GetWeakPtr(), 521 weak_ptr_factory_.GetWeakPtr(),
554 code)); 522 code));
555 } 523 }
556 } 524 }
557 525
558 void UploadRangeRequestBase::OnDataParsed(GDataErrorCode code, 526 void UploadRangeRequestBase::OnDataParsed(GDataErrorCode code,
559 scoped_ptr<base::Value> value) { 527 scoped_ptr<base::Value> value) {
560 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 528 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
561 529
562 OnRangeRequestComplete(UploadRangeResponse(code, -1, -1), value.Pass()); 530 OnRangeRequestComplete(UploadRangeResponse(code, -1, -1), value.Pass());
563 OnProcessURLFetchResultsComplete( 531 OnProcessURLFetchResultsComplete(
564 code == HTTP_CREATED || code == HTTP_SUCCESS); 532 code == HTTP_CREATED || code == HTTP_SUCCESS);
565 } 533 }
566 534
567 void UploadRangeRequestBase::RunCallbackOnPrematureFailure( 535 void UploadRangeRequestBase::RunCallbackOnPrematureFailure(
568 GDataErrorCode code) { 536 GDataErrorCode code) {
569 OnRangeRequestComplete( 537 OnRangeRequestComplete(
570 UploadRangeResponse(code, 0, 0), scoped_ptr<base::Value>()); 538 UploadRangeResponse(code, 0, 0), scoped_ptr<base::Value>());
571 } 539 }
572 540
573 //========================== ResumeUploadRequestBase ========================= 541 //========================== ResumeUploadRequestBase =========================
574 542
575 ResumeUploadRequestBase::ResumeUploadRequestBase( 543 ResumeUploadRequestBase::ResumeUploadRequestBase(
576 RequestSender* runner, 544 RequestSender* runner,
577 net::URLRequestContextGetter* url_request_context_getter, 545 net::URLRequestContextGetter* url_request_context_getter,
578 const base::FilePath& drive_file_path,
579 const GURL& upload_location, 546 const GURL& upload_location,
580 int64 start_position, 547 int64 start_position,
581 int64 end_position, 548 int64 end_position,
582 int64 content_length, 549 int64 content_length,
583 const std::string& content_type, 550 const std::string& content_type,
584 const base::FilePath& local_file_path) 551 const base::FilePath& local_file_path)
585 : UploadRangeRequestBase(runner, 552 : UploadRangeRequestBase(runner,
586 url_request_context_getter, 553 url_request_context_getter,
587 drive_file_path,
588 upload_location), 554 upload_location),
589 start_position_(start_position), 555 start_position_(start_position),
590 end_position_(end_position), 556 end_position_(end_position),
591 content_length_(content_length), 557 content_length_(content_length),
592 content_type_(content_type), 558 content_type_(content_type),
593 local_file_path_(local_file_path) { 559 local_file_path_(local_file_path) {
594 DCHECK_LE(start_position_, end_position_); 560 DCHECK_LE(start_position_, end_position_);
595 } 561 }
596 562
597 ResumeUploadRequestBase::~ResumeUploadRequestBase() {} 563 ResumeUploadRequestBase::~ResumeUploadRequestBase() {}
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
638 *range_length = end_position_ - start_position_; 604 *range_length = end_position_ - start_position_;
639 *upload_content_type = content_type_; 605 *upload_content_type = content_type_;
640 return true; 606 return true;
641 } 607 }
642 608
643 //======================== GetUploadStatusRequestBase ======================== 609 //======================== GetUploadStatusRequestBase ========================
644 610
645 GetUploadStatusRequestBase::GetUploadStatusRequestBase( 611 GetUploadStatusRequestBase::GetUploadStatusRequestBase(
646 RequestSender* runner, 612 RequestSender* runner,
647 net::URLRequestContextGetter* url_request_context_getter, 613 net::URLRequestContextGetter* url_request_context_getter,
648 const base::FilePath& drive_file_path,
649 const GURL& upload_url, 614 const GURL& upload_url,
650 int64 content_length) 615 int64 content_length)
651 : UploadRangeRequestBase(runner, 616 : UploadRangeRequestBase(runner,
652 url_request_context_getter, 617 url_request_context_getter,
653 drive_file_path,
654 upload_url), 618 upload_url),
655 content_length_(content_length) {} 619 content_length_(content_length) {}
656 620
657 GetUploadStatusRequestBase::~GetUploadStatusRequestBase() {} 621 GetUploadStatusRequestBase::~GetUploadStatusRequestBase() {}
658 622
659 std::vector<std::string> 623 std::vector<std::string>
660 GetUploadStatusRequestBase::GetExtraRequestHeaders() const { 624 GetUploadStatusRequestBase::GetExtraRequestHeaders() const {
661 // The header looks like 625 // The header looks like
662 // Content-Range: bytes */<content_length> 626 // Content-Range: bytes */<content_length>
663 // for example: 627 // for example:
664 // Content-Range: bytes */13851821 628 // Content-Range: bytes */13851821
665 DCHECK_GE(content_length_, 0); 629 DCHECK_GE(content_length_, 0);
666 630
667 std::vector<std::string> headers; 631 std::vector<std::string> headers;
668 headers.push_back( 632 headers.push_back(
669 std::string(kUploadContentRange) + "*/" + 633 std::string(kUploadContentRange) + "*/" +
670 base::Int64ToString(content_length_)); 634 base::Int64ToString(content_length_));
671 return headers; 635 return headers;
672 } 636 }
673 637
674 //============================ DownloadFileRequest =========================== 638 //============================ DownloadFileRequest ===========================
675 639
676 DownloadFileRequest::DownloadFileRequest( 640 DownloadFileRequest::DownloadFileRequest(
677 RequestSender* runner, 641 RequestSender* runner,
678 net::URLRequestContextGetter* url_request_context_getter, 642 net::URLRequestContextGetter* url_request_context_getter,
679 const DownloadActionCallback& download_action_callback, 643 const DownloadActionCallback& download_action_callback,
680 const GetContentCallback& get_content_callback, 644 const GetContentCallback& get_content_callback,
681 const ProgressCallback& progress_callback, 645 const ProgressCallback& progress_callback,
682 const GURL& download_url, 646 const GURL& download_url,
683 const base::FilePath& drive_file_path,
684 const base::FilePath& output_file_path) 647 const base::FilePath& output_file_path)
685 : UrlFetchRequestBase(runner, 648 : UrlFetchRequestBase(runner, url_request_context_getter),
686 url_request_context_getter,
687 drive_file_path),
688 download_action_callback_(download_action_callback), 649 download_action_callback_(download_action_callback),
689 get_content_callback_(get_content_callback), 650 get_content_callback_(get_content_callback),
690 progress_callback_(progress_callback), 651 progress_callback_(progress_callback),
691 download_url_(download_url) { 652 download_url_(download_url) {
692 DCHECK(!download_action_callback_.is_null()); 653 DCHECK(!download_action_callback_.is_null());
693 // get_content_callback may be null. 654 // get_content_callback may be null.
694 655
695 // Make sure we download the content into a temp file. 656 // Make sure we download the content into a temp file.
696 if (output_file_path.empty()) 657 if (output_file_path.empty())
697 set_save_temp_file(true); 658 set_save_temp_file(true);
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
737 698
738 download_action_callback_.Run(code, temp_file); 699 download_action_callback_.Run(code, temp_file);
739 OnProcessURLFetchResultsComplete(code == HTTP_SUCCESS); 700 OnProcessURLFetchResultsComplete(code == HTTP_SUCCESS);
740 } 701 }
741 702
742 void DownloadFileRequest::RunCallbackOnPrematureFailure(GDataErrorCode code) { 703 void DownloadFileRequest::RunCallbackOnPrematureFailure(GDataErrorCode code) {
743 download_action_callback_.Run(code, base::FilePath()); 704 download_action_callback_.Run(code, base::FilePath());
744 } 705 }
745 706
746 } // namespace google_apis 707 } // namespace google_apis
OLDNEW
« no previous file with comments | « chrome/browser/google_apis/base_requests.h ('k') | chrome/browser/google_apis/base_requests_server_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698