Index: net/url_request/url_request.cc |
diff --git a/net/url_request/url_request.cc b/net/url_request/url_request.cc |
index 4c2e2c35385be5fd4baa4fe832b27a35bc6c1822..408e81235aa76b81942e30a9b49b715120ad3c2b 100644 |
--- a/net/url_request/url_request.cc |
+++ b/net/url_request/url_request.cc |
@@ -12,6 +12,7 @@ |
#include "base/memory/singleton.h" |
#include "base/message_loop.h" |
#include "base/metrics/stats_counters.h" |
+#include "base/stl_util.h" |
#include "base/synchronization/lock.h" |
#include "net/base/auth.h" |
#include "net/base/host_port_pair.h" |
@@ -49,6 +50,7 @@ void StripPostSpecificHeaders(HttpRequestHeaders* headers) { |
headers->RemoveHeader(HttpRequestHeaders::kOrigin); |
} |
wtc
2012/04/05 21:37:16
Nit: undo this blank line.
|
+ |
// TODO(battre): Delete this, see http://crbug.com/89321: |
// This counter keeps track of the identifiers used for URL requests so far. |
// 0 is reserved to represent an invalid ID. |
@@ -714,6 +716,19 @@ const URLRequestContext* URLRequest::context() const { |
} |
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); |
+ } |
+ |
scoped_refptr<const URLRequestContext> prev_context = context_; |
context_ = context; |