Chromium Code Reviews| 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 1e3dc4ead60cf6f6e5bfbeb349b0808af2e2db36..b269e04a9e25b43f5311ef08d9de56af5c3b35f2 100644 |
| --- a/net/url_request/url_request_context.cc |
| +++ b/net/url_request/url_request_context.cc |
| @@ -8,9 +8,15 @@ |
| #include "base/debug/alias.h" |
| #include "base/memory/ptr_util.h" |
| #include "base/strings/string_util.h" |
| +#include "base/strings/stringprintf.h" |
| +#include "base/trace_event/memory_allocator_dump.h" |
| +#include "base/trace_event/memory_dump_manager.h" |
| +#include "base/trace_event/process_memory_dump.h" |
| +#include "net/base/sdch_manager.h" |
| #include "net/cookies/cookie_store.h" |
| #include "net/dns/host_resolver.h" |
| #include "net/http/http_transaction_factory.h" |
| +#include "net/socket/ssl_client_socket_impl.h" |
| #include "net/url_request/http_user_agent_settings.h" |
| #include "net/url_request/url_request.h" |
| @@ -37,10 +43,15 @@ URLRequestContext::URLRequestContext() |
| sdch_manager_(nullptr), |
| network_quality_estimator_(nullptr), |
| url_requests_(new std::set<const URLRequest*>), |
| - enable_brotli_(false) {} |
| + enable_brotli_(false) { |
| + base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider( |
| + this, "URLRequestContext", base::ThreadTaskRunnerHandle::Get()); |
| +} |
| URLRequestContext::~URLRequestContext() { |
| AssertNoURLRequests(); |
| + base::trace_event::MemoryDumpManager::GetInstance()->UnregisterDumpProvider( |
| + this); |
| } |
| void URLRequestContext::CopyFrom(const URLRequestContext* other) { |
| @@ -108,4 +119,28 @@ void URLRequestContext::AssertNoURLRequests() const { |
| } |
| } |
| +bool URLRequestContext::OnMemoryDump( |
| + const base::trace_event::MemoryDumpArgs& args, |
| + base::trace_event::ProcessMemoryDump* pmd) { |
| + if (name_string_.empty()) |
| + name_string_ = "uninitialized"; |
|
eroman
2016/11/29 22:22:51
nit: how about something more like <unnamed> or <u
xunjieli
2016/11/30 16:02:03
Done.
|
| + base::trace_event::MemoryAllocatorDump* dump = |
| + pmd->CreateAllocatorDump(base::StringPrintf( |
| + "net/url_request_context/%s_%p", name_string_.c_str(), this)); |
| + for (auto url_request : *url_requests_.get()) { |
|
eroman
2016/11/29 22:22:51
nit: auto* (came up on some chromium-dev style th
xunjieli
2016/11/30 16:02:03
Done. Thanks for the helpful pointer I found https
|
| + url_request->DumpMemoryStats(dump); |
| + } |
| + |
| + HttpTransactionFactory* transaction_factory = http_transaction_factory(); |
| + if (transaction_factory) { |
| + HttpNetworkSession* network_session = transaction_factory->GetSession(); |
| + if (network_session) |
| + network_session->DumpMemoryStats(dump); |
| + } |
| + SSLClientSocketImpl::DumpSSLClientSessionMemoryStats(pmd); |
| + if (sdch_manager_) |
| + sdch_manager_->DumpMemoryStats(pmd); |
| + return true; |
| +} |
| + |
| } // namespace net |