Index: net/socket/ssl_client_socket.h |
diff --git a/net/socket/ssl_client_socket.h b/net/socket/ssl_client_socket.h |
index 0e32ed6d39e27cd60e6f928d4a03a7857113c786..8eea20cd0ded6f75b2c56acc14bf2728a8a91a5c 100644 |
--- a/net/socket/ssl_client_socket.h |
+++ b/net/socket/ssl_client_socket.h |
@@ -79,6 +79,20 @@ class NET_EXPORT SSLClientSocket : public SSLSocket { |
// the first protocol in our list. |
}; |
+ // TLS extension used to negotiate protocol. Recorded in UMA, do not change |
+ // or reuse values. |
+ enum SSLProtocolNegotiation { |
+ // Unknown. |
+ PN_UNKNOWN = -1, |
+ // Application-Layer Protocol Negotiation. |
+ PN_ALPN = 0, |
+ // Next Protocol Negotiation used. |
+ PN_NPN = 500, |
+ // Next Protocol Negotiation used, but there was no overlap between client |
+ // and server supported protocols. Fallback to first one on client's list. |
+ PN_NPN_NO_OVERLAP = 1000, |
davidben
2014/09/19 21:09:17
It seems strange to have this enum with large numb
Bence
2014/10/03 10:50:22
Done.
I changed to kExtension* to better distingu
|
+ }; |
+ |
// StreamSocket: |
virtual bool WasNpnNegotiated() const OVERRIDE; |
virtual NextProto GetNegotiatedProtocol() const OVERRIDE; |
@@ -150,6 +164,9 @@ class NET_EXPORT SSLClientSocket : public SSLSocket { |
virtual void set_protocol_negotiated(NextProto protocol_negotiated); |
+ void set_protocol_negotiation( |
+ enum SSLProtocolNegotiation protocol_negotiation); |
davidben
2014/09/19 21:09:17
No 'enum' prefix in C++.
Bence
2014/10/03 10:50:22
Done.
|
+ |
// Returns the ChannelIDService used by this socket, or NULL if |
// channel ids are not supported. |
virtual ChannelIDService* GetChannelIDService() const = 0; |
@@ -162,6 +179,10 @@ class NET_EXPORT SSLClientSocket : public SSLSocket { |
// Public for ssl_client_socket_openssl_unittest.cc. |
virtual bool WasChannelIDSent() const; |
+ // Record which TLS extension was used to negotiate protocol and protocol |
+ // chosen in a UMA histogram. |
+ void RecordProtocolNegotiation(); |
+ |
protected: |
virtual void set_channel_id_sent(bool channel_id_sent); |
@@ -219,6 +240,8 @@ class NET_EXPORT SSLClientSocket : public SSLSocket { |
bool signed_cert_timestamps_received_; |
// True if a stapled OCSP response was received. |
bool stapled_ocsp_response_received_; |
+ // Protocol negotiation extension used. |
+ enum SSLProtocolNegotiation protocol_negotiation_; |
}; |
} // namespace net |