Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(821)

Unified Diff: net/socket/client_socket_pool_manager.cc

Issue 14749006: [WIP] Pretend-to-preconnect for {mouse,touch}-event triggers. Base URL: https://chromium.googlesource.com/chromium/src.git@preconnect-pretend
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/socket/client_socket_pool_manager.cc
diff --git a/net/socket/client_socket_pool_manager.cc b/net/socket/client_socket_pool_manager.cc
index 71b9d6d6f5895230a0d7bae8083c930f3372e911..1b78ef9c42dad62ad3cebda4c505686581bc2b8a 100644
--- a/net/socket/client_socket_pool_manager.cc
+++ b/net/socket/client_socket_pool_manager.cc
@@ -64,6 +64,17 @@ COMPILE_ASSERT(arraysize(g_max_sockets_per_proxy_server) ==
HttpNetworkSession::NUM_SOCKET_POOL_TYPES,
max_sockets_per_proxy_server_length_mismatch);
+int PretendToRequestSocketsForPool(ClientSocketPool* pool,
+ const std::string& group_name,
+ int num_sockets) {
+ int idle_count = pool->IdleSocketCountInGroup(group_name);
+
+ int would_have_been_connected = num_sockets - idle_count;
mmenke 2013/05/01 16:55:08 This count isn't correct. We actually use NumActi
+ if (would_have_been_connected > 0)
+ would_have_been_connected = 0;
+ return would_have_been_connected;
+}
+
// The meat of the implementation for the InitSocketHandleForHttpRequest,
// InitSocketHandleForRawConnect and PreconnectSocketsForHttpRequest methods.
int InitSocketPoolHelper(const GURL& request_url,
@@ -79,6 +90,7 @@ int InitSocketPoolHelper(const GURL& request_url,
bool force_tunnel,
const BoundNetLog& net_log,
int num_preconnect_streams,
+ bool pretend_to_preconnect,
ClientSocketHandle* socket_handle,
const OnHostResolutionCallback& resolution_callback,
const CompletionCallback& callback) {
@@ -238,8 +250,13 @@ int InitSocketPoolHelper(const GURL& request_url,
}
if (num_preconnect_streams) {
+ if (pretend_to_preconnect)
+ return PretendToRequestSocketsForPool(
+ ssl_pool, connection_group, num_preconnect_streams);
+
RequestSocketsForPool(ssl_pool, connection_group, ssl_params,
num_preconnect_streams, net_log);
+
return OK;
}
@@ -256,6 +273,10 @@ int InitSocketPoolHelper(const GURL& request_url,
HttpNetworkSession::NORMAL_SOCKET_POOL,
*proxy_host_port);
if (num_preconnect_streams) {
+ if (pretend_to_preconnect)
+ return PretendToRequestSocketsForPool(
+ pool, connection_group, num_preconnect_streams);
+
RequestSocketsForPool(pool, connection_group, http_proxy_params,
num_preconnect_streams, net_log);
return OK;
@@ -272,6 +293,10 @@ int InitSocketPoolHelper(const GURL& request_url,
HttpNetworkSession::NORMAL_SOCKET_POOL,
*proxy_host_port);
if (num_preconnect_streams) {
+ if (pretend_to_preconnect)
+ return PretendToRequestSocketsForPool(
+ pool, connection_group, num_preconnect_streams);
+
RequestSocketsForPool(pool, connection_group, socks_params,
num_preconnect_streams, net_log);
return OK;
@@ -287,6 +312,10 @@ int InitSocketPoolHelper(const GURL& request_url,
TransportClientSocketPool* pool =
session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL);
if (num_preconnect_streams) {
+ if (pretend_to_preconnect)
+ return PretendToRequestSocketsForPool(
+ pool, connection_group, num_preconnect_streams);
+
RequestSocketsForPool(pool, connection_group, tcp_params,
num_preconnect_streams, net_log);
return OK;
@@ -383,7 +412,7 @@ int InitSocketHandleForHttpRequest(
return InitSocketPoolHelper(
request_url, request_extra_headers, request_load_flags, request_priority,
session, proxy_info, force_spdy_over_ssl, want_spdy_over_npn,
- ssl_config_for_origin, ssl_config_for_proxy, false, net_log, 0,
+ ssl_config_for_origin, ssl_config_for_proxy, false, net_log, 0, true,
socket_handle, resolution_callback, callback);
}
@@ -406,7 +435,7 @@ int InitSocketHandleForRawConnect(
return InitSocketPoolHelper(
request_url, request_extra_headers, request_load_flags, request_priority,
session, proxy_info, false, false, ssl_config_for_origin,
- ssl_config_for_proxy, true, net_log, 0, socket_handle,
+ ssl_config_for_proxy, true, net_log, 0, true, socket_handle,
OnHostResolutionCallback(), callback);
}
@@ -427,7 +456,28 @@ int PreconnectSocketsForHttpRequest(
request_url, request_extra_headers, request_load_flags, request_priority,
session, proxy_info, force_spdy_over_ssl, want_spdy_over_npn,
ssl_config_for_origin, ssl_config_for_proxy, false, net_log,
- num_preconnect_streams, NULL, OnHostResolutionCallback(),
+ num_preconnect_streams, true, NULL, OnHostResolutionCallback(),
+ CompletionCallback());
+}
+
+int PretendToPreconnectSocketsForHttpRequest(
+ const GURL& request_url,
+ const HttpRequestHeaders& request_extra_headers,
+ int request_load_flags,
+ RequestPriority request_priority,
+ HttpNetworkSession* session,
+ const ProxyInfo& proxy_info,
+ bool force_spdy_over_ssl,
+ bool want_spdy_over_npn,
+ const SSLConfig& ssl_config_for_origin,
+ const SSLConfig& ssl_config_for_proxy,
+ const BoundNetLog& net_log,
+ int num_preconnect_streams) {
+ return InitSocketPoolHelper(
+ request_url, request_extra_headers, request_load_flags, request_priority,
+ session, proxy_info, force_spdy_over_ssl, want_spdy_over_npn,
+ ssl_config_for_origin, ssl_config_for_proxy, false, net_log,
+ num_preconnect_streams, false, NULL, OnHostResolutionCallback(),
CompletionCallback());
}
« net/http/http_stream_factory_impl_job.cc ('K') | « net/socket/client_socket_pool_manager.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698