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

Side by Side Diff: trunk/src/net/socket_stream/socket_stream.cc

Issue 197463003: Revert 256579 "Allow the content browser client to specify a spe..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 6 years, 9 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 } 80 }
81 81
82 SocketStream::ResponseHeaders::ResponseHeaders() : IOBuffer() {} 82 SocketStream::ResponseHeaders::ResponseHeaders() : IOBuffer() {}
83 83
84 void SocketStream::ResponseHeaders::Realloc(size_t new_size) { 84 void SocketStream::ResponseHeaders::Realloc(size_t new_size) {
85 headers_.reset(static_cast<char*>(realloc(headers_.release(), new_size))); 85 headers_.reset(static_cast<char*>(realloc(headers_.release(), new_size)));
86 } 86 }
87 87
88 SocketStream::ResponseHeaders::~ResponseHeaders() { data_ = NULL; } 88 SocketStream::ResponseHeaders::~ResponseHeaders() { data_ = NULL; }
89 89
90 SocketStream::SocketStream(const GURL& url, Delegate* delegate, 90 SocketStream::SocketStream(const GURL& url, Delegate* delegate)
91 URLRequestContext* context,
92 CookieStore* cookie_store)
93 : delegate_(delegate), 91 : delegate_(delegate),
94 url_(url), 92 url_(url),
95 max_pending_send_allowed_(kMaxPendingSendAllowed), 93 max_pending_send_allowed_(kMaxPendingSendAllowed),
96 context_(context), 94 context_(NULL),
97 next_state_(STATE_NONE), 95 next_state_(STATE_NONE),
98 factory_(ClientSocketFactory::GetDefaultFactory()), 96 factory_(ClientSocketFactory::GetDefaultFactory()),
99 proxy_mode_(kDirectConnection), 97 proxy_mode_(kDirectConnection),
100 proxy_url_(url), 98 proxy_url_(url),
101 pac_request_(NULL), 99 pac_request_(NULL),
102 connection_(new ClientSocketHandle), 100 connection_(new ClientSocketHandle),
103 privacy_mode_(kPrivacyModeDisabled), 101 privacy_mode_(kPrivacyModeDisabled),
104 // Unretained() is required; without it, Bind() creates a circular 102 // Unretained() is required; without it, Bind() creates a circular
105 // dependency and the SocketStream object will not be freed. 103 // dependency and the SocketStream object will not be freed.
106 io_callback_(base::Bind(&SocketStream::OnIOCompleted, 104 io_callback_(base::Bind(&SocketStream::OnIOCompleted,
107 base::Unretained(this))), 105 base::Unretained(this))),
108 read_buf_(NULL), 106 read_buf_(NULL),
109 current_write_buf_(NULL), 107 current_write_buf_(NULL),
110 waiting_for_write_completion_(false), 108 waiting_for_write_completion_(false),
111 closing_(false), 109 closing_(false),
112 server_closed_(false), 110 server_closed_(false),
113 metrics_(new SocketStreamMetrics(url)), 111 metrics_(new SocketStreamMetrics(url)) {
114 cookie_store_(cookie_store) {
115 DCHECK(base::MessageLoop::current()) 112 DCHECK(base::MessageLoop::current())
116 << "The current base::MessageLoop must exist"; 113 << "The current base::MessageLoop must exist";
117 DCHECK(base::MessageLoopForIO::IsCurrent()) 114 DCHECK(base::MessageLoopForIO::IsCurrent())
118 << "The current base::MessageLoop must be TYPE_IO"; 115 << "The current base::MessageLoop must be TYPE_IO";
119 DCHECK(delegate_); 116 DCHECK(delegate_);
120
121 if (context_) {
122 if (!cookie_store_)
123 cookie_store_ = context_->cookie_store();
124
125 net_log_ = BoundNetLog::Make(
126 context->net_log(),
127 NetLog::SOURCE_SOCKET_STREAM);
128
129 net_log_.BeginEvent(NetLog::TYPE_REQUEST_ALIVE);
130 }
131 } 117 }
132 118
133 SocketStream::UserData* SocketStream::GetUserData( 119 SocketStream::UserData* SocketStream::GetUserData(
134 const void* key) const { 120 const void* key) const {
135 UserDataMap::const_iterator found = user_data_.find(key); 121 UserDataMap::const_iterator found = user_data_.find(key);
136 if (found != user_data_.end()) 122 if (found != user_data_.end())
137 return found->second.get(); 123 return found->second.get();
138 return NULL; 124 return NULL;
139 } 125 }
140 126
141 void SocketStream::SetUserData(const void* key, UserData* data) { 127 void SocketStream::SetUserData(const void* key, UserData* data) {
142 user_data_[key] = linked_ptr<UserData>(data); 128 user_data_[key] = linked_ptr<UserData>(data);
143 } 129 }
144 130
145 bool SocketStream::is_secure() const { 131 bool SocketStream::is_secure() const {
146 return url_.SchemeIs("wss"); 132 return url_.SchemeIs("wss");
147 } 133 }
148 134
149 void SocketStream::DetachContext() { 135 void SocketStream::set_context(URLRequestContext* context) {
150 if (!context_) 136 const URLRequestContext* prev_context = context_;
151 return;
152 137
153 if (pac_request_) { 138 context_ = context;
154 context_->proxy_service()->CancelPacRequest(pac_request_); 139
155 pac_request_ = NULL; 140 if (prev_context != context) {
141 if (prev_context && pac_request_) {
142 prev_context->proxy_service()->CancelPacRequest(pac_request_);
143 pac_request_ = NULL;
144 }
145
146 net_log_.EndEvent(NetLog::TYPE_REQUEST_ALIVE);
147 net_log_ = BoundNetLog();
148
149 if (context) {
150 net_log_ = BoundNetLog::Make(
151 context->net_log(),
152 NetLog::SOURCE_SOCKET_STREAM);
153
154 net_log_.BeginEvent(NetLog::TYPE_REQUEST_ALIVE);
155 }
156 } 156 }
157
158 net_log_.EndEvent(NetLog::TYPE_REQUEST_ALIVE);
159 net_log_ = BoundNetLog();
160
161 context_ = NULL;
162 cookie_store_ = NULL;
163 } 157 }
164 158
165 void SocketStream::CheckPrivacyMode() { 159 void SocketStream::CheckPrivacyMode() {
166 if (context_ && context_->network_delegate()) { 160 if (context_ && context_->network_delegate()) {
167 bool enable = context_->network_delegate()->CanEnablePrivacyMode(url_, 161 bool enable = context_->network_delegate()->CanEnablePrivacyMode(url_,
168 url_); 162 url_);
169 privacy_mode_ = enable ? kPrivacyModeEnabled : kPrivacyModeDisabled; 163 privacy_mode_ = enable ? kPrivacyModeEnabled : kPrivacyModeDisabled;
170 // Disable Channel ID if privacy mode is enabled. 164 // Disable Channel ID if privacy mode is enabled.
171 if (enable) 165 if (enable)
172 server_ssl_config_.channel_id_enabled = false; 166 server_ssl_config_.channel_id_enabled = false;
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 void SocketStream::CancelWithSSLError(const SSLInfo& ssl_info) { 311 void SocketStream::CancelWithSSLError(const SSLInfo& ssl_info) {
318 CancelWithError(MapCertStatusToNetError(ssl_info.cert_status)); 312 CancelWithError(MapCertStatusToNetError(ssl_info.cert_status));
319 } 313 }
320 314
321 void SocketStream::ContinueDespiteError() { 315 void SocketStream::ContinueDespiteError() {
322 base::MessageLoop::current()->PostTask( 316 base::MessageLoop::current()->PostTask(
323 FROM_HERE, base::Bind(&SocketStream::DoLoop, this, OK)); 317 FROM_HERE, base::Bind(&SocketStream::DoLoop, this, OK));
324 } 318 }
325 319
326 SocketStream::~SocketStream() { 320 SocketStream::~SocketStream() {
327 DetachContext(); 321 set_context(NULL);
328 DCHECK(!delegate_); 322 DCHECK(!delegate_);
329 DCHECK(!pac_request_); 323 DCHECK(!pac_request_);
330 } 324 }
331 325
332 SocketStream::RequestHeaders::~RequestHeaders() { data_ = NULL; } 326 SocketStream::RequestHeaders::~RequestHeaders() { data_ = NULL; }
333 327
334 void SocketStream::set_addresses(const AddressList& addresses) { 328 void SocketStream::set_addresses(const AddressList& addresses) {
335 addresses_ = addresses; 329 addresses_ = addresses;
336 } 330 }
337 331
(...skipping 1003 matching lines...) Expand 10 before | Expand all | Expand 10 after
1341 const bool fatal = context_->transport_security_state() && 1335 const bool fatal = context_->transport_security_state() &&
1342 context_->transport_security_state()->GetDomainState(url_.host(), 1336 context_->transport_security_state()->GetDomainState(url_.host(),
1343 SSLConfigService::IsSNIAvailable(context_->ssl_config_service()), 1337 SSLConfigService::IsSNIAvailable(context_->ssl_config_service()),
1344 &domain_state) && 1338 &domain_state) &&
1345 domain_state.ShouldSSLErrorsBeFatal(); 1339 domain_state.ShouldSSLErrorsBeFatal();
1346 1340
1347 delegate_->OnSSLCertificateError(this, ssl_info, fatal); 1341 delegate_->OnSSLCertificateError(this, ssl_info, fatal);
1348 return ERR_IO_PENDING; 1342 return ERR_IO_PENDING;
1349 } 1343 }
1350 1344
1351 CookieStore* SocketStream::cookie_store() const {
1352 return cookie_store_;
1353 }
1354
1355 } // namespace net 1345 } // namespace net
OLDNEW
« no previous file with comments | « trunk/src/net/socket_stream/socket_stream.h ('k') | trunk/src/net/socket_stream/socket_stream_job.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698