| 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 165ea53a7a9d7639a7bd4c1c0a456455b0136317..f5db5f40ac2db6ce78175e6bf7d35919ad59b9db 100644
|
| --- a/net/socket/client_socket_pool_base.cc
|
| +++ b/net/socket/client_socket_pool_base.cc
|
| @@ -450,7 +450,8 @@ int ClientSocketPoolBaseHelper::RequestSocketInternal(
|
| connect_job->connect_timing(), handle, base::TimeDelta(),
|
| group, request.net_log());
|
| } else {
|
| - AddIdleSocket(connect_job->PassSocket(), group);
|
| + AddIdleSocket(connect_job->PassSocket(), group,
|
| + connect_job->connect_timing());
|
| }
|
| } else if (rv == ERR_IO_PENDING) {
|
| // If we don't have any sockets in this group, set a timer for potentially
|
| @@ -542,7 +543,7 @@ bool ClientSocketPoolBaseHelper::AssignIdleSocketToRequest(
|
| idle_socket.socket->ClearConnectionAttempts();
|
|
|
| HandOutSocket(std::unique_ptr<StreamSocket>(idle_socket.socket), reuse_type,
|
| - LoadTimingInfo::ConnectTiming(), request.handle(), idle_time,
|
| + idle_socket.connect_timing, request.handle(), idle_time,
|
| group, request.net_log());
|
| return true;
|
| }
|
| @@ -568,7 +569,8 @@ void ClientSocketPoolBaseHelper::CancelRequest(
|
| if (socket) {
|
| if (result != OK)
|
| socket->Disconnect();
|
| - ReleaseSocket(handle->group_name(), std::move(socket), handle->id());
|
| + ReleaseSocket(handle->group_name(), std::move(socket), handle->id(),
|
| + handle->connect_timing());
|
| }
|
| return;
|
| }
|
| @@ -800,7 +802,8 @@ void ClientSocketPoolBaseHelper::DecrementIdleCount() {
|
| void ClientSocketPoolBaseHelper::ReleaseSocket(
|
| const std::string& group_name,
|
| std::unique_ptr<StreamSocket> socket,
|
| - int id) {
|
| + int id,
|
| + const LoadTimingInfo::ConnectTiming& connect_timing) {
|
| GroupMap::iterator i = group_map_.find(group_name);
|
| CHECK(i != group_map_.end());
|
|
|
| @@ -816,7 +819,7 @@ void ClientSocketPoolBaseHelper::ReleaseSocket(
|
| id == pool_generation_number_;
|
| if (can_reuse) {
|
| // Add it to the idle list.
|
| - AddIdleSocket(std::move(socket), group);
|
| + AddIdleSocket(std::move(socket), group, connect_timing);
|
| OnAvailableSocketSlot(group_name, group);
|
| } else {
|
| socket.reset();
|
| @@ -929,7 +932,7 @@ void ClientSocketPoolBaseHelper::OnConnectJobComplete(
|
| request->net_log().EndEvent(NetLogEventType::SOCKET_POOL);
|
| InvokeUserCallbackLater(request->handle(), request->callback(), result);
|
| } else {
|
| - AddIdleSocket(std::move(socket), group);
|
| + AddIdleSocket(std::move(socket), group, connect_timing);
|
| OnAvailableSocketSlot(group_name, group);
|
| CheckForStalledSocketGroups();
|
| }
|
| @@ -1041,7 +1044,7 @@ void ClientSocketPoolBaseHelper::HandOutSocket(
|
| UMA_HISTOGRAM_COUNTS_1000("Net.Socket.IdleSocketReuseTime",
|
| idle_time.InSeconds());
|
| UMA_HISTOGRAM_TIMES(
|
| - "Net.Socket.IdleSocketTimeSaving",
|
| + "Net.Socket.IdleSocketTimeSaving2",
|
| connect_timing.connect_end - connect_timing.connect_start);
|
| }
|
|
|
| @@ -1062,11 +1065,13 @@ void ClientSocketPoolBaseHelper::HandOutSocket(
|
|
|
| void ClientSocketPoolBaseHelper::AddIdleSocket(
|
| std::unique_ptr<StreamSocket> socket,
|
| - Group* group) {
|
| + Group* group,
|
| + const LoadTimingInfo::ConnectTiming& connect_timing) {
|
| DCHECK(socket);
|
| IdleSocket idle_socket;
|
| idle_socket.socket = socket.release();
|
| idle_socket.start_time = base::TimeTicks::Now();
|
| + idle_socket.connect_timing = connect_timing;
|
|
|
| group->mutable_idle_sockets()->push_back(idle_socket);
|
| IncrementIdleCount();
|
|
|