| Index: net/url_request/url_request_context.cc
|
| diff --git a/net/url_request/url_request_context.cc b/net/url_request/url_request_context.cc
|
| index 0ec1db63efcd31e5648fe898b009bf4dda0b5730..c7e44779ca906c5423145e2ffb66d82166427df3 100644
|
| --- a/net/url_request/url_request_context.cc
|
| +++ b/net/url_request/url_request_context.cc
|
| @@ -9,6 +9,7 @@
|
| #include "base/compiler_specific.h"
|
| #include "base/debug/alias.h"
|
| #include "base/memory/ptr_util.h"
|
| +#include "base/metrics/histogram_macros.h"
|
| #include "base/strings/string_util.h"
|
| #include "base/strings/stringprintf.h"
|
| #include "base/threading/thread_task_runner_handle.h"
|
| @@ -48,10 +49,10 @@ URLRequestContext::URLRequestContext()
|
| sdch_manager_(nullptr),
|
| network_quality_estimator_(nullptr),
|
| reporting_service_(nullptr),
|
| - url_requests_(new std::set<const URLRequest*>),
|
| enable_brotli_(false),
|
| check_cleartext_permitted_(false),
|
| - name_(nullptr) {
|
| + name_(nullptr),
|
| + largest_outstanding_requests_count_seen_(0) {
|
| base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider(
|
| this, "URLRequestContext", base::ThreadTaskRunnerHandle::Get());
|
| }
|
| @@ -122,13 +123,27 @@ void URLRequestContext::set_cookie_store(CookieStore* cookie_store) {
|
| cookie_store_ = cookie_store;
|
| }
|
|
|
| +void URLRequestContext::InsertURLRequest(const URLRequest* request) const {
|
| + url_requests_.insert(request);
|
| + if (url_requests_.size() > largest_outstanding_requests_count_seen_) {
|
| + largest_outstanding_requests_count_seen_ = url_requests_.size();
|
| + UMA_HISTOGRAM_COUNTS_1M("Net.URLRequestContext.OutstandingRequests",
|
| + largest_outstanding_requests_count_seen_);
|
| + }
|
| +}
|
| +
|
| +void URLRequestContext::RemoveURLRequest(const URLRequest* request) const {
|
| + DCHECK_EQ(1u, url_requests_.count(request));
|
| + url_requests_.erase(request);
|
| +}
|
| +
|
| void URLRequestContext::AssertNoURLRequests() const {
|
| - int num_requests = url_requests_->size();
|
| + int num_requests = url_requests_.size();
|
| if (num_requests != 0) {
|
| // We're leaking URLRequests :( Dump the URL of the first one and record how
|
| // many we leaked so we have an idea of how bad it is.
|
| char url_buf[128];
|
| - const URLRequest* request = *url_requests_->begin();
|
| + const URLRequest* request = *url_requests_.begin();
|
| base::strlcpy(url_buf, request->url().spec().c_str(), arraysize(url_buf));
|
| int load_flags = request->load_flags();
|
| base::debug::Alias(url_buf);
|
| @@ -154,7 +169,7 @@ bool URLRequestContext::OnMemoryDump(
|
| pmd->CreateAllocatorDump(dump_name);
|
| dump->AddScalar(base::trace_event::MemoryAllocatorDump::kNameObjectCount,
|
| base::trace_event::MemoryAllocatorDump::kUnitsObjects,
|
| - url_requests_->size());
|
| + url_requests_.size());
|
| HttpTransactionFactory* transaction_factory = http_transaction_factory();
|
| if (transaction_factory) {
|
| HttpNetworkSession* network_session = transaction_factory->GetSession();
|
|
|