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..0b9bf2e1013fcfddbee9c2dc886762af96f0cf56 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" |
@@ -714,6 +715,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; |