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

Side by Side Diff: net/url_request/url_request.cc

Issue 15829004: Update net/ to use scoped_refptr<T>::get() rather than implicit "operator T*" (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: license twerk 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
« no previous file with comments | « net/url_request/url_fetcher_response_writer.cc ('k') | net/url_request/url_request_context.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "net/url_request/url_request.h" 5 #include "net/url_request/url_request.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/callback.h" 9 #include "base/callback.h"
10 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after
276 context->url_requests()->insert(this); 276 context->url_requests()->insert(this);
277 277
278 net_log_.BeginEvent(NetLog::TYPE_REQUEST_ALIVE); 278 net_log_.BeginEvent(NetLog::TYPE_REQUEST_ALIVE);
279 } 279 }
280 280
281 URLRequest::~URLRequest() { 281 URLRequest::~URLRequest() {
282 Cancel(); 282 Cancel();
283 283
284 if (network_delegate_) { 284 if (network_delegate_) {
285 network_delegate_->NotifyURLRequestDestroyed(this); 285 network_delegate_->NotifyURLRequestDestroyed(this);
286 if (job_) 286 if (job_.get())
287 job_->NotifyURLRequestDestroyed(); 287 job_->NotifyURLRequestDestroyed();
288 } 288 }
289 289
290 if (job_) 290 if (job_.get())
291 OrphanJob(); 291 OrphanJob();
292 292
293 int deleted = context_->url_requests()->erase(this); 293 int deleted = context_->url_requests()->erase(this);
294 CHECK_EQ(1, deleted); 294 CHECK_EQ(1, deleted);
295 295
296 int net_error = OK; 296 int net_error = OK;
297 // Log error only on failure, not cancellation, as even successful requests 297 // Log error only on failure, not cancellation, as even successful requests
298 // are "cancelled" on destruction. 298 // are "cancelled" on destruction.
299 if (status_.status() == URLRequestStatus::FAILED) 299 if (status_.status() == URLRequestStatus::FAILED)
300 net_error = status_.error(); 300 net_error = status_.error();
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 378
379 // NOTE: This method will likely become non-trivial once the other setters 379 // NOTE: This method will likely become non-trivial once the other setters
380 // for request headers are implemented. 380 // for request headers are implemented.
381 } 381 }
382 382
383 LoadStateWithParam URLRequest::GetLoadState() const { 383 LoadStateWithParam URLRequest::GetLoadState() const {
384 if (blocked_on_delegate_) { 384 if (blocked_on_delegate_) {
385 return LoadStateWithParam(LOAD_STATE_WAITING_FOR_DELEGATE, 385 return LoadStateWithParam(LOAD_STATE_WAITING_FOR_DELEGATE,
386 load_state_param_); 386 load_state_param_);
387 } 387 }
388 return LoadStateWithParam(job_ ? job_->GetLoadState() : LOAD_STATE_IDLE, 388 return LoadStateWithParam(job_.get() ? job_->GetLoadState() : LOAD_STATE_IDLE,
389 base::string16()); 389 base::string16());
390 } 390 }
391 391
392 UploadProgress URLRequest::GetUploadProgress() const { 392 UploadProgress URLRequest::GetUploadProgress() const {
393 if (!job_) { 393 if (!job_.get()) {
394 // We haven't started or the request was cancelled 394 // We haven't started or the request was cancelled
395 return UploadProgress(); 395 return UploadProgress();
396 } 396 }
397 if (final_upload_progress_.position()) { 397 if (final_upload_progress_.position()) {
398 // The first job completed and none of the subsequent series of 398 // The first job completed and none of the subsequent series of
399 // GETs when following redirects will upload anything, so we return the 399 // GETs when following redirects will upload anything, so we return the
400 // cached results from the initial job, the POST. 400 // cached results from the initial job, the POST.
401 return final_upload_progress_; 401 return final_upload_progress_;
402 } 402 }
403 return job_->GetUploadProgress(); 403 return job_->GetUploadProgress();
404 } 404 }
405 405
406 void URLRequest::GetResponseHeaderById(int id, string* value) { 406 void URLRequest::GetResponseHeaderById(int id, string* value) {
407 DCHECK(job_); 407 DCHECK(job_.get());
408 NOTREACHED() << "implement me!"; 408 NOTREACHED() << "implement me!";
409 } 409 }
410 410
411 void URLRequest::GetResponseHeaderByName(const string& name, string* value) { 411 void URLRequest::GetResponseHeaderByName(const string& name, string* value) {
412 DCHECK(value); 412 DCHECK(value);
413 if (response_info_.headers) { 413 if (response_info_.headers.get()) {
414 response_info_.headers->GetNormalizedHeader(name, value); 414 response_info_.headers->GetNormalizedHeader(name, value);
415 } else { 415 } else {
416 value->clear(); 416 value->clear();
417 } 417 }
418 } 418 }
419 419
420 void URLRequest::GetAllResponseHeaders(string* headers) { 420 void URLRequest::GetAllResponseHeaders(string* headers) {
421 DCHECK(headers); 421 DCHECK(headers);
422 if (response_info_.headers) { 422 if (response_info_.headers.get()) {
423 response_info_.headers->GetNormalizedHeaders(headers); 423 response_info_.headers->GetNormalizedHeaders(headers);
424 } else { 424 } else {
425 headers->clear(); 425 headers->clear();
426 } 426 }
427 } 427 }
428 428
429 HostPortPair URLRequest::GetSocketAddress() const { 429 HostPortPair URLRequest::GetSocketAddress() const {
430 DCHECK(job_); 430 DCHECK(job_.get());
431 return job_->GetSocketAddress(); 431 return job_->GetSocketAddress();
432 } 432 }
433 433
434 HttpResponseHeaders* URLRequest::response_headers() const { 434 HttpResponseHeaders* URLRequest::response_headers() const {
435 return response_info_.headers.get(); 435 return response_info_.headers.get();
436 } 436 }
437 437
438 void URLRequest::GetLoadTimingInfo(LoadTimingInfo* load_timing_info) const { 438 void URLRequest::GetLoadTimingInfo(LoadTimingInfo* load_timing_info) const {
439 *load_timing_info = load_timing_info_; 439 *load_timing_info = load_timing_info_;
440 } 440 }
441 441
442 bool URLRequest::GetResponseCookies(ResponseCookies* cookies) { 442 bool URLRequest::GetResponseCookies(ResponseCookies* cookies) {
443 DCHECK(job_); 443 DCHECK(job_.get());
444 return job_->GetResponseCookies(cookies); 444 return job_->GetResponseCookies(cookies);
445 } 445 }
446 446
447 void URLRequest::GetMimeType(string* mime_type) { 447 void URLRequest::GetMimeType(string* mime_type) {
448 DCHECK(job_); 448 DCHECK(job_.get());
449 job_->GetMimeType(mime_type); 449 job_->GetMimeType(mime_type);
450 } 450 }
451 451
452 void URLRequest::GetCharset(string* charset) { 452 void URLRequest::GetCharset(string* charset) {
453 DCHECK(job_); 453 DCHECK(job_.get());
454 job_->GetCharset(charset); 454 job_->GetCharset(charset);
455 } 455 }
456 456
457 int URLRequest::GetResponseCode() { 457 int URLRequest::GetResponseCode() {
458 DCHECK(job_); 458 DCHECK(job_.get());
459 return job_->GetResponseCode(); 459 return job_->GetResponseCode();
460 } 460 }
461 461
462 // static 462 // static
463 void URLRequest::SetDefaultCookiePolicyToBlock() { 463 void URLRequest::SetDefaultCookiePolicyToBlock() {
464 CHECK(!g_url_requests_started); 464 CHECK(!g_url_requests_started);
465 g_default_can_use_cookies = false; 465 g_default_can_use_cookies = false;
466 } 466 }
467 467
468 // static 468 // static
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
541 return; 541 return;
542 } 542 }
543 543
544 StartJob(URLRequestJobManager::GetInstance()->CreateJob( 544 StartJob(URLRequestJobManager::GetInstance()->CreateJob(
545 this, network_delegate_)); 545 this, network_delegate_));
546 } 546 }
547 547
548 /////////////////////////////////////////////////////////////////////////////// 548 ///////////////////////////////////////////////////////////////////////////////
549 549
550 void URLRequest::BeforeRequestComplete(int error) { 550 void URLRequest::BeforeRequestComplete(int error) {
551 DCHECK(!job_); 551 DCHECK(!job_.get());
552 DCHECK_NE(ERR_IO_PENDING, error); 552 DCHECK_NE(ERR_IO_PENDING, error);
553 DCHECK_EQ(network_delegate_, context_->network_delegate()); 553 DCHECK_EQ(network_delegate_, context_->network_delegate());
554 554
555 // Check that there are no callbacks to already canceled requests. 555 // Check that there are no callbacks to already canceled requests.
556 DCHECK_NE(URLRequestStatus::CANCELED, status_.status()); 556 DCHECK_NE(URLRequestStatus::CANCELED, status_.status());
557 557
558 if (blocked_on_delegate_) 558 if (blocked_on_delegate_)
559 SetUnblockedOnDelegate(); 559 SetUnblockedOnDelegate();
560 560
561 if (error != OK) { 561 if (error != OK) {
(...skipping 11 matching lines...) Expand all
573 URLRequestRedirectJob::REDIRECT_307_TEMPORARY_REDIRECT); 573 URLRequestRedirectJob::REDIRECT_307_TEMPORARY_REDIRECT);
574 StartJob(job); 574 StartJob(job);
575 } else { 575 } else {
576 StartJob(URLRequestJobManager::GetInstance()->CreateJob( 576 StartJob(URLRequestJobManager::GetInstance()->CreateJob(
577 this, network_delegate_)); 577 this, network_delegate_));
578 } 578 }
579 } 579 }
580 580
581 void URLRequest::StartJob(URLRequestJob* job) { 581 void URLRequest::StartJob(URLRequestJob* job) {
582 DCHECK(!is_pending_); 582 DCHECK(!is_pending_);
583 DCHECK(!job_); 583 DCHECK(!job_.get());
584 584
585 net_log_.BeginEvent( 585 net_log_.BeginEvent(
586 NetLog::TYPE_URL_REQUEST_START_JOB, 586 NetLog::TYPE_URL_REQUEST_START_JOB,
587 base::Bind(&NetLogURLRequestStartCallback, 587 base::Bind(&NetLogURLRequestStartCallback,
588 &url(), &method_, load_flags_, priority_, 588 &url(), &method_, load_flags_, priority_,
589 upload_data_stream_ ? upload_data_stream_->identifier() : -1)); 589 upload_data_stream_ ? upload_data_stream_->identifier() : -1));
590 590
591 job_ = job; 591 job_ = job;
592 job_->SetExtraRequestHeaders(extra_request_headers_); 592 job_->SetExtraRequestHeaders(extra_request_headers_);
593 job_->SetPriority(priority_); 593 job_->SetPriority(priority_);
594 594
595 if (upload_data_stream_.get()) 595 if (upload_data_stream_.get())
596 job_->SetUpload(upload_data_stream_.get()); 596 job_->SetUpload(upload_data_stream_.get());
597 597
598 is_pending_ = true; 598 is_pending_ = true;
599 is_redirecting_ = false; 599 is_redirecting_ = false;
600 600
601 response_info_.was_cached = false; 601 response_info_.was_cached = false;
602 602
603 // Don't allow errors to be sent from within Start(). 603 // Don't allow errors to be sent from within Start().
604 // TODO(brettw) this may cause NotifyDone to be sent synchronously, 604 // TODO(brettw) this may cause NotifyDone to be sent synchronously,
605 // we probably don't want this: they should be sent asynchronously so 605 // we probably don't want this: they should be sent asynchronously so
606 // the caller does not get reentered. 606 // the caller does not get reentered.
607 job_->Start(); 607 job_->Start();
608 } 608 }
609 609
610 void URLRequest::Restart() { 610 void URLRequest::Restart() {
611 // Should only be called if the original job didn't make any progress. 611 // Should only be called if the original job didn't make any progress.
612 DCHECK(job_ && !job_->has_response_started()); 612 DCHECK(job_.get() && !job_->has_response_started());
613 RestartWithJob(URLRequestJobManager::GetInstance()->CreateJob( 613 RestartWithJob(
614 this, network_delegate_)); 614 URLRequestJobManager::GetInstance()->CreateJob(this, network_delegate_));
615 } 615 }
616 616
617 void URLRequest::RestartWithJob(URLRequestJob *job) { 617 void URLRequest::RestartWithJob(URLRequestJob *job) {
618 DCHECK(job->request() == this); 618 DCHECK(job->request() == this);
619 PrepareToRestart(); 619 PrepareToRestart();
620 StartJob(job); 620 StartJob(job);
621 } 621 }
622 622
623 void URLRequest::Cancel() { 623 void URLRequest::Cancel() {
624 DoCancel(ERR_ABORTED, SSLInfo()); 624 DoCancel(ERR_ABORTED, SSLInfo());
625 } 625 }
626 626
627 void URLRequest::CancelWithError(int error) { 627 void URLRequest::CancelWithError(int error) {
628 DoCancel(error, SSLInfo()); 628 DoCancel(error, SSLInfo());
629 } 629 }
630 630
631 void URLRequest::CancelWithSSLError(int error, const SSLInfo& ssl_info) { 631 void URLRequest::CancelWithSSLError(int error, const SSLInfo& ssl_info) {
632 // This should only be called on a started request. 632 // This should only be called on a started request.
633 if (!is_pending_ || !job_ || job_->has_response_started()) { 633 if (!is_pending_ || !job_.get() || job_->has_response_started()) {
634 NOTREACHED(); 634 NOTREACHED();
635 return; 635 return;
636 } 636 }
637 DoCancel(error, ssl_info); 637 DoCancel(error, ssl_info);
638 } 638 }
639 639
640 void URLRequest::DoCancel(int error, const SSLInfo& ssl_info) { 640 void URLRequest::DoCancel(int error, const SSLInfo& ssl_info) {
641 DCHECK(error < 0); 641 DCHECK(error < 0);
642 642
643 // If the URL request already has an error status, then canceling is a no-op. 643 // If the URL request already has an error status, then canceling is a no-op.
644 // Plus, we don't want to change the error status once it has been set. 644 // Plus, we don't want to change the error status once it has been set.
645 if (status_.is_success()) { 645 if (status_.is_success()) {
646 status_.set_status(URLRequestStatus::CANCELED); 646 status_.set_status(URLRequestStatus::CANCELED);
647 status_.set_error(error); 647 status_.set_error(error);
648 response_info_.ssl_info = ssl_info; 648 response_info_.ssl_info = ssl_info;
649 649
650 // If the request hasn't already been completed, log a cancellation event. 650 // If the request hasn't already been completed, log a cancellation event.
651 if (!has_notified_completion_) { 651 if (!has_notified_completion_) {
652 // Don't log an error code on ERR_ABORTED, since that's redundant. 652 // Don't log an error code on ERR_ABORTED, since that's redundant.
653 net_log_.AddEventWithNetErrorCode(NetLog::TYPE_CANCELLED, 653 net_log_.AddEventWithNetErrorCode(NetLog::TYPE_CANCELLED,
654 error == ERR_ABORTED ? OK : error); 654 error == ERR_ABORTED ? OK : error);
655 } 655 }
656 } 656 }
657 657
658 if (is_pending_ && job_) 658 if (is_pending_ && job_.get())
659 job_->Kill(); 659 job_->Kill();
660 660
661 // We need to notify about the end of this job here synchronously. The 661 // We need to notify about the end of this job here synchronously. The
662 // Job sends an asynchronous notification but by the time this is processed, 662 // Job sends an asynchronous notification but by the time this is processed,
663 // our |context_| is NULL. 663 // our |context_| is NULL.
664 NotifyRequestCompleted(); 664 NotifyRequestCompleted();
665 665
666 // The Job will call our NotifyDone method asynchronously. This is done so 666 // The Job will call our NotifyDone method asynchronously. This is done so
667 // that the Delegate implementation can call Cancel without having to worry 667 // that the Delegate implementation can call Cancel without having to worry
668 // about being called recursively. 668 // about being called recursively.
669 } 669 }
670 670
671 bool URLRequest::Read(IOBuffer* dest, int dest_size, int* bytes_read) { 671 bool URLRequest::Read(IOBuffer* dest, int dest_size, int* bytes_read) {
672 DCHECK(job_); 672 DCHECK(job_.get());
673 DCHECK(bytes_read); 673 DCHECK(bytes_read);
674 *bytes_read = 0; 674 *bytes_read = 0;
675 675
676 // This handles a cancel that happens while paused. 676 // This handles a cancel that happens while paused.
677 // TODO(ahendrickson): DCHECK() that it is not done after 677 // TODO(ahendrickson): DCHECK() that it is not done after
678 // http://crbug.com/115705 is fixed. 678 // http://crbug.com/115705 is fixed.
679 if (job_->is_done()) 679 if (job_->is_done())
680 return false; 680 return false;
681 681
682 if (dest_size == 0) { 682 if (dest_size == 0) {
683 // Caller is not too bright. I guess we've done what they asked. 683 // Caller is not too bright. I guess we've done what they asked.
684 return true; 684 return true;
685 } 685 }
686 686
687 // Once the request fails or is cancelled, read will just return 0 bytes 687 // Once the request fails or is cancelled, read will just return 0 bytes
688 // to indicate end of stream. 688 // to indicate end of stream.
689 if (!status_.is_success()) { 689 if (!status_.is_success()) {
690 return true; 690 return true;
691 } 691 }
692 692
693 bool rv = job_->Read(dest, dest_size, bytes_read); 693 bool rv = job_->Read(dest, dest_size, bytes_read);
694 // If rv is false, the status cannot be success. 694 // If rv is false, the status cannot be success.
695 DCHECK(rv || status_.status() != URLRequestStatus::SUCCESS); 695 DCHECK(rv || status_.status() != URLRequestStatus::SUCCESS);
696 if (rv && *bytes_read <= 0 && status_.is_success()) 696 if (rv && *bytes_read <= 0 && status_.is_success())
697 NotifyRequestCompleted(); 697 NotifyRequestCompleted();
698 return rv; 698 return rv;
699 } 699 }
700 700
701 void URLRequest::StopCaching() { 701 void URLRequest::StopCaching() {
702 DCHECK(job_); 702 DCHECK(job_.get());
703 job_->StopCaching(); 703 job_->StopCaching();
704 } 704 }
705 705
706 void URLRequest::NotifyReceivedRedirect(const GURL& location, 706 void URLRequest::NotifyReceivedRedirect(const GURL& location,
707 bool* defer_redirect) { 707 bool* defer_redirect) {
708 is_redirecting_ = true; 708 is_redirecting_ = true;
709 709
710 URLRequestJob* job = 710 URLRequestJob* job =
711 URLRequestJobManager::GetInstance()->MaybeInterceptRedirect( 711 URLRequestJobManager::GetInstance()->MaybeInterceptRedirect(
712 this, network_delegate_, location); 712 this, network_delegate_, location);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
744 NotifyRequestCompleted(); 744 NotifyRequestCompleted();
745 745
746 delegate_->OnResponseStarted(this); 746 delegate_->OnResponseStarted(this);
747 // Nothing may appear below this line as OnResponseStarted may delete 747 // Nothing may appear below this line as OnResponseStarted may delete
748 // |this|. 748 // |this|.
749 } 749 }
750 } 750 }
751 } 751 }
752 752
753 void URLRequest::FollowDeferredRedirect() { 753 void URLRequest::FollowDeferredRedirect() {
754 CHECK(job_); 754 CHECK(job_.get());
755 CHECK(status_.is_success()); 755 CHECK(status_.is_success());
756 756
757 job_->FollowDeferredRedirect(); 757 job_->FollowDeferredRedirect();
758 } 758 }
759 759
760 void URLRequest::SetAuth(const AuthCredentials& credentials) { 760 void URLRequest::SetAuth(const AuthCredentials& credentials) {
761 DCHECK(job_); 761 DCHECK(job_.get());
762 DCHECK(job_->NeedsAuth()); 762 DCHECK(job_->NeedsAuth());
763 763
764 job_->SetAuth(credentials); 764 job_->SetAuth(credentials);
765 } 765 }
766 766
767 void URLRequest::CancelAuth() { 767 void URLRequest::CancelAuth() {
768 DCHECK(job_); 768 DCHECK(job_.get());
769 DCHECK(job_->NeedsAuth()); 769 DCHECK(job_->NeedsAuth());
770 770
771 job_->CancelAuth(); 771 job_->CancelAuth();
772 } 772 }
773 773
774 void URLRequest::ContinueWithCertificate(X509Certificate* client_cert) { 774 void URLRequest::ContinueWithCertificate(X509Certificate* client_cert) {
775 DCHECK(job_); 775 DCHECK(job_.get());
776 776
777 job_->ContinueWithCertificate(client_cert); 777 job_->ContinueWithCertificate(client_cert);
778 } 778 }
779 779
780 void URLRequest::ContinueDespiteLastError() { 780 void URLRequest::ContinueDespiteLastError() {
781 DCHECK(job_); 781 DCHECK(job_.get());
782 782
783 job_->ContinueDespiteLastError(); 783 job_->ContinueDespiteLastError();
784 } 784 }
785 785
786 void URLRequest::PrepareToRestart() { 786 void URLRequest::PrepareToRestart() {
787 DCHECK(job_); 787 DCHECK(job_.get());
788 788
789 // Close the current URL_REQUEST_START_JOB, since we will be starting a new 789 // Close the current URL_REQUEST_START_JOB, since we will be starting a new
790 // one. 790 // one.
791 net_log_.EndEvent(NetLog::TYPE_URL_REQUEST_START_JOB); 791 net_log_.EndEvent(NetLog::TYPE_URL_REQUEST_START_JOB);
792 792
793 OrphanJob(); 793 OrphanJob();
794 794
795 response_info_ = HttpResponseInfo(); 795 response_info_ = HttpResponseInfo();
796 response_info_.request_time = base::Time::Now(); 796 response_info_.request_time = base::Time::Now();
797 797
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
880 Start(); 880 Start();
881 return OK; 881 return OK;
882 } 882 }
883 883
884 const URLRequestContext* URLRequest::context() const { 884 const URLRequestContext* URLRequest::context() const {
885 return context_; 885 return context_;
886 } 886 }
887 887
888 int64 URLRequest::GetExpectedContentSize() const { 888 int64 URLRequest::GetExpectedContentSize() const {
889 int64 expected_content_size = -1; 889 int64 expected_content_size = -1;
890 if (job_) 890 if (job_.get())
891 expected_content_size = job_->expected_content_size(); 891 expected_content_size = job_->expected_content_size();
892 892
893 return expected_content_size; 893 return expected_content_size;
894 } 894 }
895 895
896 void URLRequest::SetPriority(RequestPriority priority) { 896 void URLRequest::SetPriority(RequestPriority priority) {
897 DCHECK_GE(priority, MINIMUM_PRIORITY); 897 DCHECK_GE(priority, MINIMUM_PRIORITY);
898 DCHECK_LT(priority, NUM_PRIORITIES); 898 DCHECK_LT(priority, NUM_PRIORITIES);
899 if (priority_ == priority) 899 if (priority_ == priority)
900 return; 900 return;
901 901
902 priority_ = priority; 902 priority_ = priority;
903 if (job_) { 903 if (job_.get()) {
904 net_log_.AddEvent(NetLog::TYPE_URL_REQUEST_SET_PRIORITY, 904 net_log_.AddEvent(NetLog::TYPE_URL_REQUEST_SET_PRIORITY,
905 NetLog::IntegerCallback("priority", priority_)); 905 NetLog::IntegerCallback("priority", priority_));
906 job_->SetPriority(priority_); 906 job_->SetPriority(priority_);
907 } 907 }
908 } 908 }
909 909
910 bool URLRequest::GetHSTSRedirect(GURL* redirect_url) const { 910 bool URLRequest::GetHSTSRedirect(GURL* redirect_url) const {
911 const GURL& url = this->url(); 911 const GURL& url = this->url();
912 if (!url.SchemeIs("http")) 912 if (!url.SchemeIs("http"))
913 return false; 913 return false;
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
1038 if (delegate_) 1038 if (delegate_)
1039 delegate_->OnReadCompleted(this, bytes_read); 1039 delegate_->OnReadCompleted(this, bytes_read);
1040 1040
1041 // Nothing below this line as OnReadCompleted may delete |this|. 1041 // Nothing below this line as OnReadCompleted may delete |this|.
1042 } 1042 }
1043 1043
1044 void URLRequest::OnHeadersComplete() { 1044 void URLRequest::OnHeadersComplete() {
1045 // Cache load timing information now, as information will be lost once the 1045 // Cache load timing information now, as information will be lost once the
1046 // socket is closed and the ClientSocketHandle is Reset, which will happen 1046 // socket is closed and the ClientSocketHandle is Reset, which will happen
1047 // once the body is complete. The start times should already be populated. 1047 // once the body is complete. The start times should already be populated.
1048 if (job_) { 1048 if (job_.get()) {
1049 // Keep a copy of the two times the URLRequest sets. 1049 // Keep a copy of the two times the URLRequest sets.
1050 base::TimeTicks request_start = load_timing_info_.request_start; 1050 base::TimeTicks request_start = load_timing_info_.request_start;
1051 base::Time request_start_time = load_timing_info_.request_start_time; 1051 base::Time request_start_time = load_timing_info_.request_start_time;
1052 1052
1053 // Clear load times. Shouldn't be neded, but gives the GetLoadTimingInfo a 1053 // Clear load times. Shouldn't be neded, but gives the GetLoadTimingInfo a
1054 // consistent place to start from. 1054 // consistent place to start from.
1055 load_timing_info_ = LoadTimingInfo(); 1055 load_timing_info_ = LoadTimingInfo();
1056 job_->GetLoadTimingInfo(&load_timing_info_); 1056 job_->GetLoadTimingInfo(&load_timing_info_);
1057 1057
1058 load_timing_info_.request_start = request_start; 1058 load_timing_info_.request_start = request_start;
1059 load_timing_info_.request_start_time = request_start_time; 1059 load_timing_info_.request_start_time = request_start_time;
1060 1060
1061 ConvertRealLoadTimesToBlockingTimes(&load_timing_info_); 1061 ConvertRealLoadTimesToBlockingTimes(&load_timing_info_);
1062 } 1062 }
1063 } 1063 }
1064 1064
1065 void URLRequest::NotifyRequestCompleted() { 1065 void URLRequest::NotifyRequestCompleted() {
1066 // TODO(battre): Get rid of this check, according to willchan it should 1066 // TODO(battre): Get rid of this check, according to willchan it should
1067 // not be needed. 1067 // not be needed.
1068 if (has_notified_completion_) 1068 if (has_notified_completion_)
1069 return; 1069 return;
1070 1070
1071 is_pending_ = false; 1071 is_pending_ = false;
1072 is_redirecting_ = false; 1072 is_redirecting_ = false;
1073 has_notified_completion_ = true; 1073 has_notified_completion_ = true;
1074 if (network_delegate_) 1074 if (network_delegate_)
1075 network_delegate_->NotifyCompleted(this, job_ != NULL); 1075 network_delegate_->NotifyCompleted(this, job_.get() != NULL);
1076 } 1076 }
1077 1077
1078 void URLRequest::SetBlockedOnDelegate() { 1078 void URLRequest::SetBlockedOnDelegate() {
1079 blocked_on_delegate_ = true; 1079 blocked_on_delegate_ = true;
1080 if (!load_state_param_.empty()) { 1080 if (!load_state_param_.empty()) {
1081 net_log_.BeginEvent(NetLog::TYPE_URL_REQUEST_BLOCKED_ON_DELEGATE, 1081 net_log_.BeginEvent(NetLog::TYPE_URL_REQUEST_BLOCKED_ON_DELEGATE,
1082 NetLog::StringCallback("delegate", &load_state_param_)); 1082 NetLog::StringCallback("delegate", &load_state_param_));
1083 } else { 1083 } else {
1084 net_log_.BeginEvent(NetLog::TYPE_URL_REQUEST_BLOCKED_ON_DELEGATE); 1084 net_log_.BeginEvent(NetLog::TYPE_URL_REQUEST_BLOCKED_ON_DELEGATE);
1085 } 1085 }
(...skipping 12 matching lines...) Expand all
1098 new base::debug::StackTrace(NULL, 0); 1098 new base::debug::StackTrace(NULL, 0);
1099 *stack_trace_copy = stack_trace; 1099 *stack_trace_copy = stack_trace;
1100 stack_trace_.reset(stack_trace_copy); 1100 stack_trace_.reset(stack_trace_copy);
1101 } 1101 }
1102 1102
1103 const base::debug::StackTrace* URLRequest::stack_trace() const { 1103 const base::debug::StackTrace* URLRequest::stack_trace() const {
1104 return stack_trace_.get(); 1104 return stack_trace_.get();
1105 } 1105 }
1106 1106
1107 } // namespace net 1107 } // namespace net
OLDNEW
« no previous file with comments | « net/url_request/url_fetcher_response_writer.cc ('k') | net/url_request/url_request_context.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698