| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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_context.h" | 5 #include "net/url_request/url_request_context.h" |
| 6 | 6 |
| 7 #include <inttypes.h> | 7 #include <inttypes.h> |
| 8 | 8 |
| 9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" |
| 10 #include "base/debug/alias.h" | 10 #include "base/debug/alias.h" |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 42 cert_transparency_verifier_(nullptr), | 42 cert_transparency_verifier_(nullptr), |
| 43 ct_policy_enforcer_(nullptr), | 43 ct_policy_enforcer_(nullptr), |
| 44 http_transaction_factory_(nullptr), | 44 http_transaction_factory_(nullptr), |
| 45 job_factory_(nullptr), | 45 job_factory_(nullptr), |
| 46 throttler_manager_(nullptr), | 46 throttler_manager_(nullptr), |
| 47 backoff_manager_(nullptr), | 47 backoff_manager_(nullptr), |
| 48 sdch_manager_(nullptr), | 48 sdch_manager_(nullptr), |
| 49 network_quality_estimator_(nullptr), | 49 network_quality_estimator_(nullptr), |
| 50 url_requests_(new std::set<const URLRequest*>), | 50 url_requests_(new std::set<const URLRequest*>), |
| 51 enable_brotli_(false), | 51 enable_brotli_(false), |
| 52 check_cleartext_permitted_(false) { | 52 check_cleartext_permitted_(false), |
| 53 name_(nullptr) { |
| 53 base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider( | 54 base::trace_event::MemoryDumpManager::GetInstance()->RegisterDumpProvider( |
| 54 this, "URLRequestContext", base::ThreadTaskRunnerHandle::Get()); | 55 this, "URLRequestContext", base::ThreadTaskRunnerHandle::Get()); |
| 55 } | 56 } |
| 56 | 57 |
| 57 URLRequestContext::~URLRequestContext() { | 58 URLRequestContext::~URLRequestContext() { |
| 58 AssertNoURLRequests(); | 59 AssertNoURLRequests(); |
| 59 base::trace_event::MemoryDumpManager::GetInstance()->UnregisterDumpProvider( | 60 base::trace_event::MemoryDumpManager::GetInstance()->UnregisterDumpProvider( |
| 60 this); | 61 this); |
| 61 } | 62 } |
| 62 | 63 |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 132 base::debug::Alias(&num_requests); | 133 base::debug::Alias(&num_requests); |
| 133 base::debug::Alias(&load_flags); | 134 base::debug::Alias(&load_flags); |
| 134 CHECK(false) << "Leaked " << num_requests << " URLRequest(s). First URL: " | 135 CHECK(false) << "Leaked " << num_requests << " URLRequest(s). First URL: " |
| 135 << request->url().spec().c_str() << "."; | 136 << request->url().spec().c_str() << "."; |
| 136 } | 137 } |
| 137 } | 138 } |
| 138 | 139 |
| 139 bool URLRequestContext::OnMemoryDump( | 140 bool URLRequestContext::OnMemoryDump( |
| 140 const base::trace_event::MemoryDumpArgs& args, | 141 const base::trace_event::MemoryDumpArgs& args, |
| 141 base::trace_event::ProcessMemoryDump* pmd) { | 142 base::trace_event::ProcessMemoryDump* pmd) { |
| 142 if (name_.empty()) | 143 if (!name_) |
| 143 name_ = "unknown"; | 144 name_ = "unknown"; |
| 144 | 145 |
| 145 SSLClientSocketImpl::DumpSSLClientSessionMemoryStats(pmd); | 146 SSLClientSocketImpl::DumpSSLClientSessionMemoryStats(pmd); |
| 146 | 147 |
| 147 std::string dump_name = base::StringPrintf( | 148 std::string dump_name = |
| 148 "net/url_request_context_0x%" PRIxPTR, reinterpret_cast<uintptr_t>(this)); | 149 base::StringPrintf("net/url_request_context/%s/0x%" PRIxPTR, name_, |
| 150 reinterpret_cast<uintptr_t>(this)); |
| 149 base::trace_event::MemoryAllocatorDump* dump = | 151 base::trace_event::MemoryAllocatorDump* dump = |
| 150 pmd->CreateAllocatorDump(dump_name); | 152 pmd->CreateAllocatorDump(dump_name); |
| 151 dump->AddScalar(base::trace_event::MemoryAllocatorDump::kNameObjectCount, | 153 dump->AddScalar(base::trace_event::MemoryAllocatorDump::kNameObjectCount, |
| 152 base::trace_event::MemoryAllocatorDump::kUnitsObjects, | 154 base::trace_event::MemoryAllocatorDump::kUnitsObjects, |
| 153 url_requests_->size()); | 155 url_requests_->size()); |
| 154 if (args.level_of_detail != | |
| 155 base::trace_event::MemoryDumpLevelOfDetail::BACKGROUND) { | |
| 156 dump->AddString("origin", | |
| 157 base::trace_event::MemoryAllocatorDump::kTypeString, name_); | |
| 158 } | |
| 159 HttpTransactionFactory* transaction_factory = http_transaction_factory(); | 156 HttpTransactionFactory* transaction_factory = http_transaction_factory(); |
| 160 if (transaction_factory) { | 157 if (transaction_factory) { |
| 161 HttpNetworkSession* network_session = transaction_factory->GetSession(); | 158 HttpNetworkSession* network_session = transaction_factory->GetSession(); |
| 162 if (network_session) | 159 if (network_session) |
| 163 network_session->DumpMemoryStats(pmd, dump->absolute_name()); | 160 network_session->DumpMemoryStats(pmd, dump->absolute_name()); |
| 164 HttpCache* http_cache = transaction_factory->GetCache(); | 161 HttpCache* http_cache = transaction_factory->GetCache(); |
| 165 if (http_cache) | 162 if (http_cache) |
| 166 http_cache->DumpMemoryStats(pmd, dump->absolute_name()); | 163 http_cache->DumpMemoryStats(pmd, dump->absolute_name()); |
| 167 } | 164 } |
| 168 if (sdch_manager_) | 165 if (sdch_manager_) |
| 169 sdch_manager_->DumpMemoryStats(pmd, dump_name); | 166 sdch_manager_->DumpMemoryStats(pmd, dump_name); |
| 170 return true; | 167 return true; |
| 171 } | 168 } |
| 172 | 169 |
| 173 } // namespace net | 170 } // namespace net |
| OLD | NEW |