| Index: net/socket/client_socket_pool_base.cc
|
| diff --git a/net/socket/client_socket_pool_base.cc b/net/socket/client_socket_pool_base.cc
|
| index 4e88c745acfe97a4d9ce1f47d05b309df42905c5..3cc931b6e98fde00d61db48aeb3bbf972d364c56 100644
|
| --- a/net/socket/client_socket_pool_base.cc
|
| +++ b/net/socket/client_socket_pool_base.cc
|
| @@ -23,6 +23,10 @@
|
| #include "net/log/net_log_event_type.h"
|
| #include "net/log/net_log_source.h"
|
|
|
| +#include "base/trace_event/memory_allocator_dump.h"
|
| +#include "base/trace_event/process_memory_dump.h"
|
| +#include "base/strings/stringprintf.h"
|
| +
|
| using base::TimeDelta;
|
|
|
| namespace net {
|
| @@ -495,6 +499,8 @@ bool ClientSocketPoolBaseHelper::AssignIdleSocketToRequest(
|
| if (idle_socket.socket->WasEverUsed())
|
| idle_socket.socket->ClearConnectionAttempts();
|
|
|
| + idle_socket.socket->OnRemovedFromPool();
|
| +
|
| HandOutSocket(std::unique_ptr<StreamSocket>(idle_socket.socket), reuse_type,
|
| LoadTimingInfo::ConnectTiming(), request.handle(), idle_time,
|
| group, request.net_log());
|
| @@ -651,6 +657,20 @@ ClientSocketPoolBaseHelper::GetInfoAsValue(const std::string& name,
|
| return dict;
|
| }
|
|
|
| +void ClientSocketPoolBaseHelper::PopulateAllocatorDump(
|
| + base::trace_event::MemoryAllocatorDump* dump) const {
|
| + base::trace_event::MemoryAllocatorDump* socket_pool_dump =
|
| + dump->process_memory_dump()->CreateAllocatorDump(base::StringPrintf(
|
| + "%s/socket_pool", dump->absolute_name().c_str()));
|
| + for (GroupMap::const_iterator it = group_map_.begin(); it != group_map_.end();
|
| + ++it) {
|
| + const std::list<IdleSocket> sockets = it->second->idle_sockets();
|
| + for (auto socket : sockets) {
|
| + socket.socket->PopulateAllocatorDump(socket_pool_dump);
|
| + }
|
| + }
|
| +}
|
| +
|
| bool ClientSocketPoolBaseHelper::IdleSocket::IsUsable() const {
|
| if (socket->WasEverUsed())
|
| return socket->IsConnectedAndIdle();
|
| @@ -1010,6 +1030,7 @@ void ClientSocketPoolBaseHelper::AddIdleSocket(
|
| std::unique_ptr<StreamSocket> socket,
|
| Group* group) {
|
| DCHECK(socket);
|
| + socket->OnAddedToPool();
|
| IdleSocket idle_socket;
|
| idle_socket.socket = socket.release();
|
| idle_socket.start_time = base::TimeTicks::Now();
|
|
|