Index: net/socket/ssl_client_socket_pool.cc |
diff --git a/net/socket/ssl_client_socket_pool.cc b/net/socket/ssl_client_socket_pool.cc |
index a80df57d0be4a8d084e62c5d09f1040ee458c962..b16eeedd2f8494a59a14600daafbc2e24b19bf04 100644 |
--- a/net/socket/ssl_client_socket_pool.cc |
+++ b/net/socket/ssl_client_socket_pool.cc |
@@ -21,6 +21,7 @@ |
#include "net/socket/ssl_client_socket.h" |
#include "net/socket/transport_client_socket_pool.h" |
#include "net/ssl/ssl_cert_request_info.h" |
+#include "net/ssl/ssl_cipher_suite_names.h" |
#include "net/ssl/ssl_connection_status_flags.h" |
#include "net/ssl/ssl_info.h" |
@@ -371,9 +372,28 @@ int SSLConnectJob::DoSSLConnectComplete(int result) { |
ssl_info.connection_status), |
SSL_CONNECTION_VERSION_MAX); |
- UMA_HISTOGRAM_SPARSE_SLOWLY("Net.SSL_CipherSuite", |
- SSLConnectionStatusToCipherSuite( |
- ssl_info.connection_status)); |
+ uint16 cipher_suite = |
+ SSLConnectionStatusToCipherSuite(ssl_info.connection_status); |
+ UMA_HISTOGRAM_SPARSE_SLOWLY("Net.SSL_CipherSuite", cipher_suite); |
+ |
+ const char *str, *cipher_str, *mac_str; |
+ bool is_aead; |
+ SSLCipherSuiteToStrings(&str, &cipher_str, &mac_str, &is_aead, |
+ cipher_suite); |
+ // UMA_HISTOGRAM_... macros cache the Histogram instance and thus only work |
+ // if the histogram name is constant, so don't generate it dynamically. |
+ if (strcmp(str, "RSA") == 0) { |
+ UMA_HISTOGRAM_SPARSE_SLOWLY("Net.SSL_KeyExchange.RSA", |
+ ssl_info.key_exchange_info); |
+ } else if (strncmp(str, "DHE_", 4) == 0) { |
+ UMA_HISTOGRAM_SPARSE_SLOWLY("Net.SSL_KeyExchange.DHE", |
+ ssl_info.key_exchange_info); |
+ } else if (strncmp(str, "ECDHE_", 6) == 0) { |
+ UMA_HISTOGRAM_SPARSE_SLOWLY("Net.SSL_KeyExchange.ECDHE", |
+ ssl_info.key_exchange_info); |
+ } else { |
+ NOTREACHED(); |
+ } |
if (ssl_info.handshake_type == SSLInfo::HANDSHAKE_RESUME) { |
UMA_HISTOGRAM_CUSTOM_TIMES("Net.SSL_Connection_Latency_Resume_Handshake", |