summaryrefslogtreecommitdiffstats
path: root/net/socket
diff options
context:
space:
mode:
authormef@chromium.org <mef@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-17 18:01:40 +0000
committermef@chromium.org <mef@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-17 18:01:40 +0000
commite6d017658f1f60b06eebff1b0ac5ba6751b8daa7 (patch)
tree570100639ba4ce142591694b297b0218d55e54a5 /net/socket
parent8fcb7fa663d0ec60859e931c01929baa64ee47e4 (diff)
downloadchromium_src-e6d017658f1f60b06eebff1b0ac5ba6751b8daa7.zip
chromium_src-e6d017658f1f60b06eebff1b0ac5ba6751b8daa7.tar.gz
chromium_src-e6d017658f1f60b06eebff1b0ac5ba6751b8daa7.tar.bz2
ChannelID-less Connections in Chrome should be more granular.
Added enum PrivacyMode (Enabled/Disabled) to mark connections which should not use ChannelID even if it is globally enabled. PrivacyMode is enabled if user blocks sending or saving cookies to/from particular server, taking in account third party cookie settings as well. See crbug.com/223191 for design doc. Segmented client socket pools according to privacy mode setting used for particular connection (added 'pm/' prefix to pool key. Introduced SpdySessionKey structure and added PrivacyMode to the key of SpdySessionPool. Added propagation of Privacy Mode setting from Web Sockets. Added check of Privacy Mode to predictor and pre-connect logic. BUG=223191 TEST=unit_tests gtest_filter=ChromeNetworkDelegatePrivacyModeTest* Review URL: https://chromiumcodereview.appspot.com/13008028 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@200852 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/socket')
-rw-r--r--net/socket/client_socket_pool_manager.cc16
-rw-r--r--net/socket/client_socket_pool_manager.h3
-rw-r--r--net/socket/ssl_client_socket_pool_unittest.cc36
3 files changed, 34 insertions, 21 deletions
diff --git a/net/socket/client_socket_pool_manager.cc b/net/socket/client_socket_pool_manager.cc
index 71b9d6d..cd4f10f 100644
--- a/net/socket/client_socket_pool_manager.cc
+++ b/net/socket/client_socket_pool_manager.cc
@@ -77,6 +77,7 @@ int InitSocketPoolHelper(const GURL& request_url,
const SSLConfig& ssl_config_for_origin,
const SSLConfig& ssl_config_for_proxy,
bool force_tunnel,
+ PrivacyMode privacy_mode,
const BoundNetLog& net_log,
int num_preconnect_streams,
ClientSocketHandle* socket_handle,
@@ -227,6 +228,10 @@ int InitSocketPoolHelper(const GURL& request_url,
load_flags,
force_spdy_over_ssl,
want_spdy_over_npn);
+ // Change group name if privacy mode is enabled.
+ if (privacy_mode == kPrivacyModeEnabled)
+ connection_group = "pm/" + connection_group;
+
SSLClientSocketPool* ssl_pool = NULL;
if (proxy_info.is_direct()) {
ssl_pool = session->GetSSLSocketPool(
@@ -375,6 +380,7 @@ int InitSocketHandleForHttpRequest(
bool want_spdy_over_npn,
const SSLConfig& ssl_config_for_origin,
const SSLConfig& ssl_config_for_proxy,
+ PrivacyMode privacy_mode,
const BoundNetLog& net_log,
ClientSocketHandle* socket_handle,
const OnHostResolutionCallback& resolution_callback,
@@ -383,8 +389,8 @@ 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,
- socket_handle, resolution_callback, callback);
+ ssl_config_for_origin, ssl_config_for_proxy, false, privacy_mode, net_log,
+ 0, socket_handle, resolution_callback, callback);
}
int InitSocketHandleForRawConnect(
@@ -393,6 +399,7 @@ int InitSocketHandleForRawConnect(
const ProxyInfo& proxy_info,
const SSLConfig& ssl_config_for_origin,
const SSLConfig& ssl_config_for_proxy,
+ PrivacyMode privacy_mode,
const BoundNetLog& net_log,
ClientSocketHandle* socket_handle,
const CompletionCallback& callback) {
@@ -406,7 +413,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, privacy_mode, net_log, 0, socket_handle,
OnHostResolutionCallback(), callback);
}
@@ -421,12 +428,13 @@ int PreconnectSocketsForHttpRequest(
bool want_spdy_over_npn,
const SSLConfig& ssl_config_for_origin,
const SSLConfig& ssl_config_for_proxy,
+ PrivacyMode privacy_mode,
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,
+ ssl_config_for_origin, ssl_config_for_proxy, false, privacy_mode, net_log,
num_preconnect_streams, NULL, OnHostResolutionCallback(),
CompletionCallback());
}
diff --git a/net/socket/client_socket_pool_manager.h b/net/socket/client_socket_pool_manager.h
index a92d218..434a463 100644
--- a/net/socket/client_socket_pool_manager.h
+++ b/net/socket/client_socket_pool_manager.h
@@ -100,6 +100,7 @@ int InitSocketHandleForHttpRequest(
bool want_spdy_over_npn,
const SSLConfig& ssl_config_for_origin,
const SSLConfig& ssl_config_for_proxy,
+ PrivacyMode privacy_mode,
const BoundNetLog& net_log,
ClientSocketHandle* socket_handle,
const OnHostResolutionCallback& resolution_callback,
@@ -115,6 +116,7 @@ NET_EXPORT int InitSocketHandleForRawConnect(
const ProxyInfo& proxy_info,
const SSLConfig& ssl_config_for_origin,
const SSLConfig& ssl_config_for_proxy,
+ PrivacyMode privacy_mode,
const BoundNetLog& net_log,
ClientSocketHandle* socket_handle,
const CompletionCallback& callback);
@@ -132,6 +134,7 @@ int PreconnectSocketsForHttpRequest(
bool want_spdy_over_npn,
const SSLConfig& ssl_config_for_origin,
const SSLConfig& ssl_config_for_proxy,
+ PrivacyMode privacy_mode,
const BoundNetLog& net_log,
int num_preconnect_streams);
diff --git a/net/socket/ssl_client_socket_pool_unittest.cc b/net/socket/ssl_client_socket_pool_unittest.cc
index fe7e3d2..fbfa338 100644
--- a/net/socket/ssl_client_socket_pool_unittest.cc
+++ b/net/socket/ssl_client_socket_pool_unittest.cc
@@ -720,7 +720,7 @@ TEST_F(SSLClientSocketPoolTest, IPPooling) {
struct TestHosts {
std::string name;
std::string iplist;
- HostPortProxyPair pair;
+ SpdySessionKey key;
AddressList addresses;
} test_hosts[] = {
{ "www.webkit.org", "192.0.2.33,192.168.0.1,192.168.0.5" },
@@ -739,9 +739,10 @@ TEST_F(SSLClientSocketPoolTest, IPPooling) {
host_resolver_.Resolve(info, &test_hosts[i].addresses, CompletionCallback(),
NULL, BoundNetLog());
- // Setup a HostPortProxyPair
- test_hosts[i].pair = HostPortProxyPair(
- HostPortPair(test_hosts[i].name, kTestPort), ProxyServer::Direct());
+ // Setup a SpdySessionKey
+ test_hosts[i].key = SpdySessionKey(
+ HostPortPair(test_hosts[i].name, kTestPort), ProxyServer::Direct(),
+ kPrivacyModeDisabled);
}
MockRead reads[] = {
@@ -782,17 +783,17 @@ TEST_F(SSLClientSocketPoolTest, IPPooling) {
// TODO(rtenneti): MockClientSocket::GetPeerAddress returns 0 as the port
// number. Fix it to return port 80 and then use GetPeerAddress to AddAlias.
SpdySessionPoolPeer pool_peer(session_->spdy_session_pool());
- pool_peer.AddAlias(test_hosts[0].addresses.front(), test_hosts[0].pair);
+ pool_peer.AddAlias(test_hosts[0].addresses.front(), test_hosts[0].key);
scoped_refptr<SpdySession> spdy_session;
rv = session_->spdy_session_pool()->GetSpdySessionFromSocket(
- test_hosts[0].pair, handle.release(), BoundNetLog(), 0,
+ test_hosts[0].key, handle.release(), BoundNetLog(), 0,
&spdy_session, true);
EXPECT_EQ(0, rv);
- EXPECT_TRUE(session_->spdy_session_pool()->HasSession(test_hosts[0].pair));
- EXPECT_FALSE(session_->spdy_session_pool()->HasSession(test_hosts[1].pair));
- EXPECT_TRUE(session_->spdy_session_pool()->HasSession(test_hosts[2].pair));
+ EXPECT_TRUE(session_->spdy_session_pool()->HasSession(test_hosts[0].key));
+ EXPECT_FALSE(session_->spdy_session_pool()->HasSession(test_hosts[1].key));
+ EXPECT_TRUE(session_->spdy_session_pool()->HasSession(test_hosts[2].key));
session_->spdy_session_pool()->CloseAllSessions();
}
@@ -803,7 +804,7 @@ void SSLClientSocketPoolTest::TestIPPoolingDisabled(
struct TestHosts {
std::string name;
std::string iplist;
- HostPortProxyPair pair;
+ SpdySessionKey key;
AddressList addresses;
} test_hosts[] = {
{ "www.webkit.org", "192.0.2.33,192.168.0.1,192.168.0.5" },
@@ -823,9 +824,10 @@ void SSLClientSocketPoolTest::TestIPPoolingDisabled(
callback.callback(), NULL, BoundNetLog());
EXPECT_EQ(OK, callback.GetResult(rv));
- // Setup a HostPortProxyPair
- test_hosts[i].pair = HostPortProxyPair(
- HostPortPair(test_hosts[i].name, kTestPort), ProxyServer::Direct());
+ // Setup a SpdySessionKey
+ test_hosts[i].key = SpdySessionKey(
+ HostPortPair(test_hosts[i].name, kTestPort), ProxyServer::Direct(),
+ kPrivacyModeDisabled);
}
MockRead reads[] = {
@@ -861,16 +863,16 @@ void SSLClientSocketPoolTest::TestIPPoolingDisabled(
// TODO(rtenneti): MockClientSocket::GetPeerAddress returns 0 as the port
// number. Fix it to return port 80 and then use GetPeerAddress to AddAlias.
SpdySessionPoolPeer pool_peer(session_->spdy_session_pool());
- pool_peer.AddAlias(test_hosts[0].addresses.front(), test_hosts[0].pair);
+ pool_peer.AddAlias(test_hosts[0].addresses.front(), test_hosts[0].key);
scoped_refptr<SpdySession> spdy_session;
rv = session_->spdy_session_pool()->GetSpdySessionFromSocket(
- test_hosts[0].pair, handle.release(), BoundNetLog(), 0,
+ test_hosts[0].key, handle.release(), BoundNetLog(), 0,
&spdy_session, true);
EXPECT_EQ(0, rv);
- EXPECT_TRUE(session_->spdy_session_pool()->HasSession(test_hosts[0].pair));
- EXPECT_FALSE(session_->spdy_session_pool()->HasSession(test_hosts[1].pair));
+ EXPECT_TRUE(session_->spdy_session_pool()->HasSession(test_hosts[0].key));
+ EXPECT_FALSE(session_->spdy_session_pool()->HasSession(test_hosts[1].key));
session_->spdy_session_pool()->CloseAllSessions();
}