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

Unified Diff: net/url_request/url_request.cc

Issue 10559036: Added URLRequestContext to constructor for URLRequest. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: merged with latest version, fixed some bugs Created 8 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 side-by-side diff with in-line comments
Download patch
Index: net/url_request/url_request.cc
diff --git a/net/url_request/url_request.cc b/net/url_request/url_request.cc
index 33cb827a6d348522f9c00f70309c2076d38059d4..5e0e6b7de75c754b12dee1ee50ec225cba292614 100644
--- a/net/url_request/url_request.cc
+++ b/net/url_request/url_request.cc
@@ -132,8 +132,12 @@ void URLRequest::Delegate::OnSSLCertificateError(URLRequest* request,
///////////////////////////////////////////////////////////////////////////////
// URLRequest
-URLRequest::URLRequest(const GURL& url, Delegate* delegate)
- : context_(NULL),
+URLRequest::URLRequest(const GURL& url,
+ Delegate* delegate,
+ const URLRequestContext* context)
+ : context_(context),
+ net_log_(BoundNetLog::Make(context->net_log(),
+ NetLog::SOURCE_URL_REQUEST)),
url_chain_(1, url),
method_("GET"),
referrer_policy_(CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE),
@@ -157,6 +161,11 @@ URLRequest::URLRequest(const GURL& url, Delegate* delegate)
"The current MessageLoop must exist";
DCHECK_EQ(MessageLoop::TYPE_IO, MessageLoop::current()->type()) <<
"The current MessageLoop must be TYPE_IO";
+
+ CHECK(context);
+ context->url_requests()->insert(this);
+
+ net_log_.BeginEvent(NetLog::TYPE_REQUEST_ALIVE);
}
URLRequest::~URLRequest() {
@@ -171,7 +180,15 @@ URLRequest::~URLRequest() {
if (job_)
OrphanJob();
- set_context(NULL);
+ bool deleted = context_->url_requests()->erase(this);
+ CHECK(deleted);
+
+ int net_error = OK;
+ // Log error only on failure, not cancellation, as even successful requests
+ // are "cancelled" on destruction.
+ if (status_.status() == URLRequestStatus::FAILED)
+ net_error = status_.error();
+ net_log_.EndEventWithNetErrorCode(NetLog::TYPE_REQUEST_ALIVE, net_error);
}
// static
@@ -727,42 +744,6 @@ const URLRequestContext* URLRequest::context() const {
return context_;
}
-void URLRequest::set_context(const URLRequestContext* context) {
- // Update the URLRequest lists in the URLRequestContext.
- if (context_) {
- std::set<const URLRequest*>* url_requests = context_->url_requests();
- CHECK(ContainsKey(*url_requests, this));
- url_requests->erase(this);
- }
-
- if (context) {
- std::set<const URLRequest*>* url_requests = context->url_requests();
- CHECK(!ContainsKey(*url_requests, this));
- url_requests->insert(this);
- }
-
- const URLRequestContext* prev_context = context_;
-
- context_ = context;
-
- // If the context this request belongs to has changed, update the tracker.
- if (prev_context != context) {
- int net_error = OK;
- // Log error only on failure, not cancellation, as even successful requests
- // are "cancelled" on destruction.
- if (status_.status() == URLRequestStatus::FAILED)
- net_error = status_.error();
- net_log_.EndEventWithNetErrorCode(NetLog::TYPE_REQUEST_ALIVE, net_error);
- net_log_ = BoundNetLog();
-
- if (context) {
- net_log_ = BoundNetLog::Make(context->net_log(),
- NetLog::SOURCE_URL_REQUEST);
- net_log_.BeginEvent(NetLog::TYPE_REQUEST_ALIVE);
- }
- }
-}
-
int64 URLRequest::GetExpectedContentSize() const {
int64 expected_content_size = -1;
if (job_)

Powered by Google App Engine
This is Rietveld 408576698