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

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

Issue 10299002: Stop refcounting URLRequestContext. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: More fixes Created 8 years, 7 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 "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 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 void URLRequest::Delegate::OnSSLCertificateError(URLRequest* request, 125 void URLRequest::Delegate::OnSSLCertificateError(URLRequest* request,
126 const SSLInfo& ssl_info, 126 const SSLInfo& ssl_info,
127 bool is_hsts_ok) { 127 bool is_hsts_ok) {
128 request->Cancel(); 128 request->Cancel();
129 } 129 }
130 130
131 /////////////////////////////////////////////////////////////////////////////// 131 ///////////////////////////////////////////////////////////////////////////////
132 // URLRequest 132 // URLRequest
133 133
134 URLRequest::URLRequest(const GURL& url, Delegate* delegate) 134 URLRequest::URLRequest(const GURL& url, Delegate* delegate)
135 : url_chain_(1, url), 135 : context_(NULL),
136 url_chain_(1, url),
136 method_("GET"), 137 method_("GET"),
137 load_flags_(LOAD_NORMAL), 138 load_flags_(LOAD_NORMAL),
138 delegate_(delegate), 139 delegate_(delegate),
139 is_pending_(false), 140 is_pending_(false),
140 redirect_limit_(kMaxRedirects), 141 redirect_limit_(kMaxRedirects),
141 final_upload_progress_(0), 142 final_upload_progress_(0),
142 priority_(LOWEST), 143 priority_(LOWEST),
143 identifier_(GenerateURLRequestIdentifier()), 144 identifier_(GenerateURLRequestIdentifier()),
144 blocked_on_delegate_(false), 145 blocked_on_delegate_(false),
145 ALLOW_THIS_IN_INITIALIZER_LIST(before_request_callback_( 146 ALLOW_THIS_IN_INITIALIZER_LIST(before_request_callback_(
(...skipping 569 matching lines...) Expand 10 before | Expand all | Expand 10 after
715 716
716 if (!final_upload_progress_) 717 if (!final_upload_progress_)
717 final_upload_progress_ = job_->GetUploadProgress(); 718 final_upload_progress_ = job_->GetUploadProgress();
718 719
719 PrepareToRestart(); 720 PrepareToRestart();
720 Start(); 721 Start();
721 return OK; 722 return OK;
722 } 723 }
723 724
724 const URLRequestContext* URLRequest::context() const { 725 const URLRequestContext* URLRequest::context() const {
725 return context_.get(); 726 return context_;
726 } 727 }
727 728
728 void URLRequest::set_context(const URLRequestContext* context) { 729 void URLRequest::set_context(const URLRequestContext* context) {
eroman 2012/05/04 04:27:02 sidecomment: are there any legitimate use cases fo
729 // Update the URLRequest lists in the URLRequestContext. 730 // Update the URLRequest lists in the URLRequestContext.
730 if (context_) { 731 if (context_) {
731 std::set<const URLRequest*>* url_requests = context_->url_requests(); 732 std::set<const URLRequest*>* url_requests = context_->url_requests();
732 CHECK(ContainsKey(*url_requests, this)); 733 CHECK(ContainsKey(*url_requests, this));
733 url_requests->erase(this); 734 url_requests->erase(this);
734 } 735 }
735 736
736 if (context) { 737 if (context) {
737 std::set<const URLRequest*>* url_requests = context->url_requests(); 738 std::set<const URLRequest*>* url_requests = context->url_requests();
738 CHECK(!ContainsKey(*url_requests, this)); 739 CHECK(!ContainsKey(*url_requests, this));
739 url_requests->insert(this); 740 url_requests->insert(this);
740 } 741 }
741 742
742 scoped_refptr<const URLRequestContext> prev_context = context_; 743 const URLRequestContext* prev_context = context_;
743 744
744 context_ = context; 745 context_ = context;
745 746
746 // If the context this request belongs to has changed, update the tracker. 747 // If the context this request belongs to has changed, update the tracker.
747 if (prev_context != context) { 748 if (prev_context != context) {
748 int net_error = OK; 749 int net_error = OK;
749 // Log error only on failure, not cancellation, as even successful requests 750 // Log error only on failure, not cancellation, as even successful requests
750 // are "cancelled" on destruction. 751 // are "cancelled" on destruction.
751 if (status_.status() == URLRequestStatus::FAILED) 752 if (status_.status() == URLRequestStatus::FAILED)
752 net_error = status_.error(); 753 net_error = status_.error();
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
889 890
890 void URLRequest::SetUnblockedOnDelegate() { 891 void URLRequest::SetUnblockedOnDelegate() {
891 if (!blocked_on_delegate_) 892 if (!blocked_on_delegate_)
892 return; 893 return;
893 blocked_on_delegate_ = false; 894 blocked_on_delegate_ = false;
894 load_state_param_.clear(); 895 load_state_param_.clear();
895 net_log_.EndEvent(NetLog::TYPE_URL_REQUEST_BLOCKED_ON_DELEGATE, NULL); 896 net_log_.EndEvent(NetLog::TYPE_URL_REQUEST_BLOCKED_ON_DELEGATE, NULL);
896 } 897 }
897 898
898 } // namespace net 899 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698