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 // TODO(ukai): code is similar with http_network_transaction.cc. We should | 5 // TODO(ukai): code is similar with http_network_transaction.cc. We should |
6 // think about ways to share code, if possible. | 6 // think about ways to share code, if possible. |
7 | 7 |
8 #include "net/socket_stream/socket_stream.h" | 8 #include "net/socket_stream/socket_stream.h" |
9 | 9 |
10 #include <set> | 10 #include <set> |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
87 SocketStream::ResponseHeaders::~ResponseHeaders() { data_ = NULL; } | 87 SocketStream::ResponseHeaders::~ResponseHeaders() { data_ = NULL; } |
88 | 88 |
89 SocketStream::SocketStream(const GURL& url, Delegate* delegate) | 89 SocketStream::SocketStream(const GURL& url, Delegate* delegate) |
90 : delegate_(delegate), | 90 : delegate_(delegate), |
91 url_(url), | 91 url_(url), |
92 max_pending_send_allowed_(kMaxPendingSendAllowed), | 92 max_pending_send_allowed_(kMaxPendingSendAllowed), |
93 context_(NULL), | 93 context_(NULL), |
94 next_state_(STATE_NONE), | 94 next_state_(STATE_NONE), |
95 host_resolver_(NULL), | 95 host_resolver_(NULL), |
96 cert_verifier_(NULL), | 96 cert_verifier_(NULL), |
| 97 transport_security_state_(NULL), |
97 server_bound_cert_service_(NULL), | 98 server_bound_cert_service_(NULL), |
98 factory_(ClientSocketFactory::GetDefaultFactory()), | 99 factory_(ClientSocketFactory::GetDefaultFactory()), |
99 proxy_mode_(kDirectConnection), | 100 proxy_mode_(kDirectConnection), |
100 proxy_url_(url), | 101 proxy_url_(url), |
101 pac_request_(NULL), | 102 pac_request_(NULL), |
102 privacy_mode_(kPrivacyModeDisabled), | 103 privacy_mode_(kPrivacyModeDisabled), |
103 // Unretained() is required; without it, Bind() creates a circular | 104 // Unretained() is required; without it, Bind() creates a circular |
104 // dependency and the SocketStream object will not be freed. | 105 // dependency and the SocketStream object will not be freed. |
105 io_callback_(base::Bind(&SocketStream::OnIOCompleted, | 106 io_callback_(base::Bind(&SocketStream::OnIOCompleted, |
106 base::Unretained(this))), | 107 base::Unretained(this))), |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
152 context->net_log(), | 153 context->net_log(), |
153 NetLog::SOURCE_SOCKET_STREAM); | 154 NetLog::SOURCE_SOCKET_STREAM); |
154 | 155 |
155 net_log_.BeginEvent(NetLog::TYPE_REQUEST_ALIVE); | 156 net_log_.BeginEvent(NetLog::TYPE_REQUEST_ALIVE); |
156 } | 157 } |
157 } | 158 } |
158 | 159 |
159 if (context_) { | 160 if (context_) { |
160 host_resolver_ = context_->host_resolver(); | 161 host_resolver_ = context_->host_resolver(); |
161 cert_verifier_ = context_->cert_verifier(); | 162 cert_verifier_ = context_->cert_verifier(); |
| 163 transport_security_state_ = context_->transport_security_state(); |
162 server_bound_cert_service_ = context_->server_bound_cert_service(); | 164 server_bound_cert_service_ = context_->server_bound_cert_service(); |
163 } | 165 } |
164 } | 166 } |
165 | 167 |
166 void SocketStream::CheckPrivacyMode() { | 168 void SocketStream::CheckPrivacyMode() { |
167 if (context_ && context_->network_delegate()) { | 169 if (context_ && context_->network_delegate()) { |
168 bool enable = context_->network_delegate()->CanEnablePrivacyMode(url_, | 170 bool enable = context_->network_delegate()->CanEnablePrivacyMode(url_, |
169 url_); | 171 url_); |
170 privacy_mode_ = enable ? kPrivacyModeEnabled : kPrivacyModeDisabled; | 172 privacy_mode_ = enable ? kPrivacyModeEnabled : kPrivacyModeDisabled; |
171 // Disable Channel ID if privacy mode is enabled. | 173 // Disable Channel ID if privacy mode is enabled. |
(...skipping 813 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
985 } else { | 987 } else { |
986 next_state_ = STATE_CLOSE; | 988 next_state_ = STATE_CLOSE; |
987 } | 989 } |
988 return result; | 990 return result; |
989 } | 991 } |
990 | 992 |
991 int SocketStream::DoSecureProxyConnect() { | 993 int SocketStream::DoSecureProxyConnect() { |
992 DCHECK(factory_); | 994 DCHECK(factory_); |
993 SSLClientSocketContext ssl_context; | 995 SSLClientSocketContext ssl_context; |
994 ssl_context.cert_verifier = cert_verifier_; | 996 ssl_context.cert_verifier = cert_verifier_; |
| 997 ssl_context.transport_security_state = transport_security_state_; |
995 ssl_context.server_bound_cert_service = server_bound_cert_service_; | 998 ssl_context.server_bound_cert_service = server_bound_cert_service_; |
996 socket_.reset(factory_->CreateSSLClientSocket( | 999 socket_.reset(factory_->CreateSSLClientSocket( |
997 socket_.release(), | 1000 socket_.release(), |
998 proxy_info_.proxy_server().host_port_pair(), | 1001 proxy_info_.proxy_server().host_port_pair(), |
999 proxy_ssl_config_, | 1002 proxy_ssl_config_, |
1000 ssl_context)); | 1003 ssl_context)); |
1001 next_state_ = STATE_SECURE_PROXY_CONNECT_COMPLETE; | 1004 next_state_ = STATE_SECURE_PROXY_CONNECT_COMPLETE; |
1002 metrics_->OnCountConnectionType(SocketStreamMetrics::SECURE_PROXY_CONNECTION); | 1005 metrics_->OnCountConnectionType(SocketStreamMetrics::SECURE_PROXY_CONNECTION); |
1003 return socket_->Connect(io_callback_); | 1006 return socket_->Connect(io_callback_); |
1004 } | 1007 } |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1038 } else { | 1041 } else { |
1039 next_state_ = STATE_CLOSE; | 1042 next_state_ = STATE_CLOSE; |
1040 } | 1043 } |
1041 return result; | 1044 return result; |
1042 } | 1045 } |
1043 | 1046 |
1044 int SocketStream::DoSSLConnect() { | 1047 int SocketStream::DoSSLConnect() { |
1045 DCHECK(factory_); | 1048 DCHECK(factory_); |
1046 SSLClientSocketContext ssl_context; | 1049 SSLClientSocketContext ssl_context; |
1047 ssl_context.cert_verifier = cert_verifier_; | 1050 ssl_context.cert_verifier = cert_verifier_; |
| 1051 ssl_context.transport_security_state = transport_security_state_; |
1048 ssl_context.server_bound_cert_service = server_bound_cert_service_; | 1052 ssl_context.server_bound_cert_service = server_bound_cert_service_; |
1049 socket_.reset(factory_->CreateSSLClientSocket(socket_.release(), | 1053 socket_.reset(factory_->CreateSSLClientSocket(socket_.release(), |
1050 HostPortPair::FromURL(url_), | 1054 HostPortPair::FromURL(url_), |
1051 server_ssl_config_, | 1055 server_ssl_config_, |
1052 ssl_context)); | 1056 ssl_context)); |
1053 next_state_ = STATE_SSL_CONNECT_COMPLETE; | 1057 next_state_ = STATE_SSL_CONNECT_COMPLETE; |
1054 metrics_->OnCountConnectionType(SocketStreamMetrics::SSL_CONNECTION); | 1058 metrics_->OnCountConnectionType(SocketStreamMetrics::SSL_CONNECTION); |
1055 return socket_->Connect(io_callback_); | 1059 return socket_->Connect(io_callback_); |
1056 } | 1060 } |
1057 | 1061 |
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1322 | 1326 |
1323 SSLConfigService* SocketStream::ssl_config_service() const { | 1327 SSLConfigService* SocketStream::ssl_config_service() const { |
1324 return context_->ssl_config_service(); | 1328 return context_->ssl_config_service(); |
1325 } | 1329 } |
1326 | 1330 |
1327 ProxyService* SocketStream::proxy_service() const { | 1331 ProxyService* SocketStream::proxy_service() const { |
1328 return context_->proxy_service(); | 1332 return context_->proxy_service(); |
1329 } | 1333 } |
1330 | 1334 |
1331 } // namespace net | 1335 } // namespace net |
OLD | NEW |