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

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

Issue 6698009: Add request_id to HttpRequestInfo and pass it to the NetworkDelegate for events. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: test fixes Created 9 years, 9 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/compiler_specific.h" 7 #include "base/compiler_specific.h"
8 #include "base/message_loop.h" 8 #include "base/message_loop.h"
9 #include "base/metrics/stats_counters.h" 9 #include "base/metrics/stats_counters.h"
10 #include "base/singleton.h" 10 #include "base/singleton.h"
(...skipping 25 matching lines...) Expand all
36 // Discard headers which have meaning in POST (Content-Length, Content-Type, 36 // Discard headers which have meaning in POST (Content-Length, Content-Type,
37 // Origin). 37 // Origin).
38 void StripPostSpecificHeaders(net::HttpRequestHeaders* headers) { 38 void StripPostSpecificHeaders(net::HttpRequestHeaders* headers) {
39 // These are headers that may be attached to a POST. 39 // These are headers that may be attached to a POST.
40 headers->RemoveHeader(net::HttpRequestHeaders::kContentLength); 40 headers->RemoveHeader(net::HttpRequestHeaders::kContentLength);
41 headers->RemoveHeader(net::HttpRequestHeaders::kContentType); 41 headers->RemoveHeader(net::HttpRequestHeaders::kContentType);
42 headers->RemoveHeader(net::HttpRequestHeaders::kOrigin); 42 headers->RemoveHeader(net::HttpRequestHeaders::kOrigin);
43 } 43 }
44 44
45 // This counter keeps track of the identifiers used for URL requests so far. 45 // This counter keeps track of the identifiers used for URL requests so far.
46 uint64 g_next_url_request_identifier = 0; 46 // 0 is reserved to represent an invalid ID.
47 uint64 g_next_url_request_identifier = 1;
47 48
48 // This lock protects g_next_url_request_identifier. 49 // This lock protects g_next_url_request_identifier.
49 base::Lock g_next_url_request_identifier_lock; 50 base::Lock g_next_url_request_identifier_lock;
50 51
51 // Returns an prior unused identifier for URL requests. 52 // Returns an prior unused identifier for URL requests.
52 uint64 GenerateURLRequestIdentifier() { 53 uint64 GenerateURLRequestIdentifier() {
53 base::AutoLock lock(g_next_url_request_identifier_lock); 54 base::AutoLock lock(g_next_url_request_identifier_lock);
54 return g_next_url_request_identifier++; 55 return g_next_url_request_identifier++;
55 } 56 }
56 57
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
124 SIMPLE_STATS_COUNTER("URLRequestCount"); 125 SIMPLE_STATS_COUNTER("URLRequestCount");
125 126
126 // Sanity check out environment. 127 // Sanity check out environment.
127 DCHECK(MessageLoop::current()) << 128 DCHECK(MessageLoop::current()) <<
128 "The current MessageLoop must exist"; 129 "The current MessageLoop must exist";
129 DCHECK_EQ(MessageLoop::TYPE_IO, MessageLoop::current()->type()) << 130 DCHECK_EQ(MessageLoop::TYPE_IO, MessageLoop::current()->type()) <<
130 "The current MessageLoop must be TYPE_IO"; 131 "The current MessageLoop must be TYPE_IO";
131 } 132 }
132 133
133 URLRequest::~URLRequest() { 134 URLRequest::~URLRequest() {
135 if (context_ && context_->network_delegate())
136 context_->network_delegate()->NotifyURLRequestDestroyed(this);
137
134 if (before_request_callback_) 138 if (before_request_callback_)
135 before_request_callback_->Cancel(); 139 before_request_callback_->Cancel();
136 140
137 Cancel(); 141 Cancel();
138 142
139 if (job_) 143 if (job_)
140 OrphanJob(); 144 OrphanJob();
141 145
142 set_context(NULL); 146 set_context(NULL);
143 } 147 }
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
356 return ret; 360 return ret;
357 } 361 }
358 362
359 void URLRequest::Start() { 363 void URLRequest::Start() {
360 response_info_.request_time = Time::Now(); 364 response_info_.request_time = Time::Now();
361 365
362 if (context_ && context_->network_delegate()) { 366 if (context_ && context_->network_delegate()) {
363 before_request_callback_ = new CancelableCompletionCallback<URLRequest>( 367 before_request_callback_ = new CancelableCompletionCallback<URLRequest>(
364 this, &URLRequest::BeforeRequestComplete); 368 this, &URLRequest::BeforeRequestComplete);
365 if (context_->network_delegate()->NotifyBeforeURLRequest( 369 if (context_->network_delegate()->NotifyBeforeURLRequest(
366 this, before_request_callback_)) { 370 this, before_request_callback_) == net::ERR_IO_PENDING) {
367 before_request_callback_->AddRef(); // balanced in BeforeRequestComplete 371 before_request_callback_->AddRef(); // balanced in BeforeRequestComplete
368 net_log_.BeginEvent(NetLog::TYPE_URL_REQUEST_BLOCKED_ON_EXTENSION, NULL); 372 net_log_.BeginEvent(NetLog::TYPE_URL_REQUEST_BLOCKED_ON_EXTENSION, NULL);
369 return; // paused 373 return; // paused
370 } 374 }
371 } 375 }
372 376
373 StartJob(URLRequestJobManager::GetInstance()->CreateJob(this)); 377 StartJob(URLRequestJobManager::GetInstance()->CreateJob(this));
374 } 378 }
375 379
376 /////////////////////////////////////////////////////////////////////////////// 380 ///////////////////////////////////////////////////////////////////////////////
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after
664 if (found != user_data_.end()) 668 if (found != user_data_.end())
665 return found->second.get(); 669 return found->second.get();
666 return NULL; 670 return NULL;
667 } 671 }
668 672
669 void URLRequest::SetUserData(const void* key, UserData* data) { 673 void URLRequest::SetUserData(const void* key, UserData* data) {
670 user_data_[key] = linked_ptr<UserData>(data); 674 user_data_[key] = linked_ptr<UserData>(data);
671 } 675 }
672 676
673 } // namespace net 677 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698