Index: net/websockets/websocket_basic_handshake_stream.cc |
diff --git a/net/websockets/websocket_basic_handshake_stream.cc b/net/websockets/websocket_basic_handshake_stream.cc |
index a4a634e038bb703eadd207a7eb422e79b0015caf..a51fee2a45c77358bcf662e1d75661f649a60db7 100644 |
--- a/net/websockets/websocket_basic_handshake_stream.cc |
+++ b/net/websockets/websocket_basic_handshake_stream.cc |
@@ -15,6 +15,7 @@ |
#include "base/bind.h" |
#include "base/containers/hash_tables.h" |
#include "base/metrics/histogram.h" |
+#include "base/metrics/sparse_histogram.h" |
#include "base/stl_util.h" |
#include "base/strings/string_number_conversions.h" |
#include "base/strings/string_piece.h" |
@@ -552,9 +553,14 @@ void WebSocketBasicHandshakeStream::OnFinishOpeningHandshake() { |
int WebSocketBasicHandshakeStream::ValidateResponse(int rv) { |
DCHECK(http_response_info_); |
- const HttpResponseHeaders* headers = http_response_info_->headers.get(); |
+ // Most net errors happen during connection, so they are not seen by this |
+ // method. The histogram for error codes is created in |
+ // Delegate::OnResponseStarted in websocket_stream.cc instead. |
if (rv >= 0) { |
- switch (headers->response_code()) { |
+ const HttpResponseHeaders* headers = http_response_info_->headers.get(); |
+ const int response_code = headers->response_code(); |
+ UMA_HISTOGRAM_SPARSE_SLOWLY("Net.WebSocket.ResponseCode", response_code); |
+ switch (response_code) { |
case HTTP_SWITCHING_PROTOCOLS: |
OnFinishOpeningHandshake(); |
return ValidateUpgradeResponse(headers); |