| 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 |