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

Side by Side Diff: net/http/http_response_info.cc

Issue 1313363003: Expose OpenSSL's key_exchange_info in the content API (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Proper #ifdef fix Created 5 years, 3 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
« no previous file with comments | « content/public/common/ssl_status.cc ('k') | net/socket/ssl_client_socket_openssl.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #include "net/http/http_response_info.h" 5 #include "net/http/http_response_info.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/pickle.h" 8 #include "base/pickle.h"
9 #include "base/time/time.h" 9 #include "base/time/time.h"
10 #include "net/base/auth.h" 10 #include "net/base/auth.h"
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 RESPONSE_INFO_HAS_CONNECTION_INFO = 1 << 18, 86 RESPONSE_INFO_HAS_CONNECTION_INFO = 1 << 18,
87 87
88 // This bit is set if the request has http authentication. 88 // This bit is set if the request has http authentication.
89 RESPONSE_INFO_USE_HTTP_AUTHENTICATION = 1 << 19, 89 RESPONSE_INFO_USE_HTTP_AUTHENTICATION = 1 << 19,
90 90
91 // This bit is set if ssl_info has SCTs. 91 // This bit is set if ssl_info has SCTs.
92 RESPONSE_INFO_HAS_SIGNED_CERTIFICATE_TIMESTAMPS = 1 << 20, 92 RESPONSE_INFO_HAS_SIGNED_CERTIFICATE_TIMESTAMPS = 1 << 20,
93 93
94 RESPONSE_INFO_UNUSED_SINCE_PREFETCH = 1 << 21, 94 RESPONSE_INFO_UNUSED_SINCE_PREFETCH = 1 << 21,
95 95
96 // This bit is set if the response has a key-exchange-info field at the end.
97 RESPONSE_INFO_HAS_KEY_EXCHANGE_INFO = 1 << 22,
98
96 // TODO(darin): Add other bits to indicate alternate request methods. 99 // TODO(darin): Add other bits to indicate alternate request methods.
97 // For now, we don't support storing those. 100 // For now, we don't support storing those.
98 }; 101 };
99 102
100 HttpResponseInfo::HttpResponseInfo() 103 HttpResponseInfo::HttpResponseInfo()
101 : was_cached(false), 104 : was_cached(false),
102 server_data_unavailable(false), 105 server_data_unavailable(false),
103 network_accessed(false), 106 network_accessed(false),
104 was_fetched_via_spdy(false), 107 was_fetched_via_spdy(false),
105 was_npn_negotiated(false), 108 was_npn_negotiated(false),
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 int value; 269 int value;
267 if (!iter.ReadInt(&value)) 270 if (!iter.ReadInt(&value))
268 return false; 271 return false;
269 272
270 if (value > static_cast<int>(CONNECTION_INFO_UNKNOWN) && 273 if (value > static_cast<int>(CONNECTION_INFO_UNKNOWN) &&
271 value < static_cast<int>(NUM_OF_CONNECTION_INFOS)) { 274 value < static_cast<int>(NUM_OF_CONNECTION_INFOS)) {
272 connection_info = static_cast<ConnectionInfo>(value); 275 connection_info = static_cast<ConnectionInfo>(value);
273 } 276 }
274 } 277 }
275 278
279 // Read key_exchange_info
280 if (flags & RESPONSE_INFO_HAS_KEY_EXCHANGE_INFO) {
281 int key_exchange_info;
282 if (!iter.ReadInt(&key_exchange_info))
283 return false;
284 ssl_info.key_exchange_info = key_exchange_info;
285 }
286
276 was_fetched_via_spdy = (flags & RESPONSE_INFO_WAS_SPDY) != 0; 287 was_fetched_via_spdy = (flags & RESPONSE_INFO_WAS_SPDY) != 0;
277 288
278 was_npn_negotiated = (flags & RESPONSE_INFO_WAS_NPN) != 0; 289 was_npn_negotiated = (flags & RESPONSE_INFO_WAS_NPN) != 0;
279 290
280 was_fetched_via_proxy = (flags & RESPONSE_INFO_WAS_PROXY) != 0; 291 was_fetched_via_proxy = (flags & RESPONSE_INFO_WAS_PROXY) != 0;
281 292
282 *response_truncated = (flags & RESPONSE_INFO_TRUNCATED) != 0; 293 *response_truncated = (flags & RESPONSE_INFO_TRUNCATED) != 0;
283 294
284 did_use_http_auth = (flags & RESPONSE_INFO_USE_HTTP_AUTHENTICATION) != 0; 295 did_use_http_auth = (flags & RESPONSE_INFO_USE_HTTP_AUTHENTICATION) != 0;
285 296
286 unused_since_prefetch = (flags & RESPONSE_INFO_UNUSED_SINCE_PREFETCH) != 0; 297 unused_since_prefetch = (flags & RESPONSE_INFO_UNUSED_SINCE_PREFETCH) != 0;
287 298
288 return true; 299 return true;
289 } 300 }
290 301
291 void HttpResponseInfo::Persist(base::Pickle* pickle, 302 void HttpResponseInfo::Persist(base::Pickle* pickle,
292 bool skip_transient_headers, 303 bool skip_transient_headers,
293 bool response_truncated) const { 304 bool response_truncated) const {
294 int flags = RESPONSE_INFO_VERSION; 305 int flags = RESPONSE_INFO_VERSION;
295 if (ssl_info.is_valid()) { 306 if (ssl_info.is_valid()) {
296 flags |= RESPONSE_INFO_HAS_CERT; 307 flags |= RESPONSE_INFO_HAS_CERT;
297 flags |= RESPONSE_INFO_HAS_CERT_STATUS; 308 flags |= RESPONSE_INFO_HAS_CERT_STATUS;
298 if (ssl_info.security_bits != -1) 309 if (ssl_info.security_bits != -1)
299 flags |= RESPONSE_INFO_HAS_SECURITY_BITS; 310 flags |= RESPONSE_INFO_HAS_SECURITY_BITS;
311 if (ssl_info.key_exchange_info != 0)
312 flags |= RESPONSE_INFO_HAS_KEY_EXCHANGE_INFO;
300 if (ssl_info.connection_status != 0) 313 if (ssl_info.connection_status != 0)
301 flags |= RESPONSE_INFO_HAS_SSL_CONNECTION_STATUS; 314 flags |= RESPONSE_INFO_HAS_SSL_CONNECTION_STATUS;
302 } 315 }
303 if (vary_data.is_valid()) 316 if (vary_data.is_valid())
304 flags |= RESPONSE_INFO_HAS_VARY_DATA; 317 flags |= RESPONSE_INFO_HAS_VARY_DATA;
305 if (response_truncated) 318 if (response_truncated)
306 flags |= RESPONSE_INFO_TRUNCATED; 319 flags |= RESPONSE_INFO_TRUNCATED;
307 if (was_fetched_via_spdy) 320 if (was_fetched_via_spdy)
308 flags |= RESPONSE_INFO_WAS_SPDY; 321 flags |= RESPONSE_INFO_WAS_SPDY;
309 if (was_npn_negotiated) { 322 if (was_npn_negotiated) {
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 vary_data.Persist(pickle); 374 vary_data.Persist(pickle);
362 375
363 pickle->WriteString(socket_address.host()); 376 pickle->WriteString(socket_address.host());
364 pickle->WriteUInt16(socket_address.port()); 377 pickle->WriteUInt16(socket_address.port());
365 378
366 if (was_npn_negotiated) 379 if (was_npn_negotiated)
367 pickle->WriteString(npn_negotiated_protocol); 380 pickle->WriteString(npn_negotiated_protocol);
368 381
369 if (connection_info != CONNECTION_INFO_UNKNOWN) 382 if (connection_info != CONNECTION_INFO_UNKNOWN)
370 pickle->WriteInt(static_cast<int>(connection_info)); 383 pickle->WriteInt(static_cast<int>(connection_info));
384
385 if (ssl_info.is_valid() && ssl_info.key_exchange_info != 0)
386 pickle->WriteInt(ssl_info.key_exchange_info);
371 } 387 }
372 388
373 HttpResponseInfo::ConnectionInfo HttpResponseInfo::ConnectionInfoFromNextProto( 389 HttpResponseInfo::ConnectionInfo HttpResponseInfo::ConnectionInfoFromNextProto(
374 NextProto next_proto) { 390 NextProto next_proto) {
375 switch (next_proto) { 391 switch (next_proto) {
376 case kProtoDeprecatedSPDY2: 392 case kProtoDeprecatedSPDY2:
377 return CONNECTION_INFO_DEPRECATED_SPDY2; 393 return CONNECTION_INFO_DEPRECATED_SPDY2;
378 case kProtoSPDY3: 394 case kProtoSPDY3:
379 case kProtoSPDY31: 395 case kProtoSPDY31:
380 return CONNECTION_INFO_SPDY3; 396 return CONNECTION_INFO_SPDY3;
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 case CONNECTION_INFO_QUIC1_SPDY3: 431 case CONNECTION_INFO_QUIC1_SPDY3:
416 return "quic/1+spdy/3"; 432 return "quic/1+spdy/3";
417 case NUM_OF_CONNECTION_INFOS: 433 case NUM_OF_CONNECTION_INFOS:
418 break; 434 break;
419 } 435 }
420 NOTREACHED(); 436 NOTREACHED();
421 return ""; 437 return "";
422 } 438 }
423 439
424 } // namespace net 440 } // namespace net
OLDNEW
« no previous file with comments | « content/public/common/ssl_status.cc ('k') | net/socket/ssl_client_socket_openssl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698