| // Copyright 2023 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "net/http/http_connection_info.h" |
| |
| #include "base/notreached.h" |
| |
| namespace net { |
| |
| std::string_view HttpConnectionInfoToString( |
| HttpConnectionInfo connection_info) { |
| switch (connection_info) { |
| case HttpConnectionInfo::kUNKNOWN: |
| return "unknown"; |
| case HttpConnectionInfo::kHTTP1_1: |
| return "http/1.1"; |
| case HttpConnectionInfo::kDEPRECATED_SPDY2: |
| NOTREACHED(); |
| return ""; |
| case HttpConnectionInfo::kDEPRECATED_SPDY3: |
| return "spdy/3"; |
| // Since ConnectionInfo is persisted to disk, deprecated values have to be |
| // handled. Note that h2-14 and h2-15 are essentially wire compatible with |
| // h2. |
| // Intentional fallthrough. |
| case HttpConnectionInfo::kDEPRECATED_HTTP2_14: |
| case HttpConnectionInfo::kDEPRECATED_HTTP2_15: |
| case HttpConnectionInfo::kHTTP2: |
| return "h2"; |
| case HttpConnectionInfo::kQUIC_UNKNOWN_VERSION: |
| return "http/2+quic"; |
| case HttpConnectionInfo::kQUIC_32: |
| return "http/2+quic/32"; |
| case HttpConnectionInfo::kQUIC_33: |
| return "http/2+quic/33"; |
| case HttpConnectionInfo::kQUIC_34: |
| return "http/2+quic/34"; |
| case HttpConnectionInfo::kQUIC_35: |
| return "http/2+quic/35"; |
| case HttpConnectionInfo::kQUIC_36: |
| return "http/2+quic/36"; |
| case HttpConnectionInfo::kQUIC_37: |
| return "http/2+quic/37"; |
| case HttpConnectionInfo::kQUIC_38: |
| return "http/2+quic/38"; |
| case HttpConnectionInfo::kQUIC_39: |
| return "http/2+quic/39"; |
| case HttpConnectionInfo::kQUIC_40: |
| return "http/2+quic/40"; |
| case HttpConnectionInfo::kQUIC_41: |
| return "http/2+quic/41"; |
| case HttpConnectionInfo::kQUIC_42: |
| return "http/2+quic/42"; |
| case HttpConnectionInfo::kQUIC_43: |
| return "http/2+quic/43"; |
| case HttpConnectionInfo::kQUIC_44: |
| return "http/2+quic/44"; |
| case HttpConnectionInfo::kQUIC_45: |
| return "http/2+quic/45"; |
| case HttpConnectionInfo::kQUIC_46: |
| return "http/2+quic/46"; |
| case HttpConnectionInfo::kQUIC_47: |
| return "http/2+quic/47"; |
| case HttpConnectionInfo::kQUIC_Q048: |
| return "h3-Q048"; |
| case HttpConnectionInfo::kQUIC_T048: |
| return "h3-T048"; |
| case HttpConnectionInfo::kQUIC_Q049: |
| return "h3-Q049"; |
| case HttpConnectionInfo::kQUIC_T049: |
| return "h3-T049"; |
| case HttpConnectionInfo::kQUIC_Q050: |
| return "h3-Q050"; |
| case HttpConnectionInfo::kQUIC_T050: |
| return "h3-T050"; |
| case HttpConnectionInfo::kQUIC_Q099: |
| return "h3-Q099"; |
| case HttpConnectionInfo::kQUIC_DRAFT_25: |
| return "h3-25"; |
| case HttpConnectionInfo::kQUIC_DRAFT_27: |
| return "h3-27"; |
| case HttpConnectionInfo::kQUIC_DRAFT_28: |
| return "h3-28"; |
| case HttpConnectionInfo::kQUIC_DRAFT_29: |
| return "h3-29"; |
| case HttpConnectionInfo::kQUIC_T099: |
| return "h3-T099"; |
| case HttpConnectionInfo::kHTTP0_9: |
| return "http/0.9"; |
| case HttpConnectionInfo::kHTTP1_0: |
| return "http/1.0"; |
| case HttpConnectionInfo::kQUIC_999: |
| return "http2+quic/999"; |
| case HttpConnectionInfo::kQUIC_T051: |
| return "h3-T051"; |
| case HttpConnectionInfo::kQUIC_RFC_V1: |
| return "h3"; |
| case HttpConnectionInfo::kDEPRECATED_QUIC_2_DRAFT_1: |
| return "h3/quic2draft01"; |
| case HttpConnectionInfo::kQUIC_2_DRAFT_8: |
| return "h3/quic2draft08"; |
| } |
| } |
| |
| std::string_view HttpConnectionInfoCoarseToString( |
| HttpConnectionInfoCoarse connection_info_coarse) { |
| switch (connection_info_coarse) { |
| case HttpConnectionInfoCoarse::kHTTP1: |
| return "Http1"; |
| case HttpConnectionInfoCoarse::kHTTP2: |
| return "Http2"; |
| case HttpConnectionInfoCoarse::kQUIC: |
| return "Http3"; |
| case HttpConnectionInfoCoarse::kOTHER: |
| return "Other"; |
| } |
| } |
| |
| // Returns a more coarse-grained description of the protocol used to fetch the |
| // response. |
| HttpConnectionInfoCoarse HttpConnectionInfoToCoarse(HttpConnectionInfo info) { |
| switch (info) { |
| case HttpConnectionInfo::kHTTP0_9: |
| case HttpConnectionInfo::kHTTP1_0: |
| case HttpConnectionInfo::kHTTP1_1: |
| return HttpConnectionInfoCoarse::kHTTP1; |
| |
| case HttpConnectionInfo::kHTTP2: |
| case HttpConnectionInfo::kDEPRECATED_SPDY2: |
| case HttpConnectionInfo::kDEPRECATED_SPDY3: |
| case HttpConnectionInfo::kDEPRECATED_HTTP2_14: |
| case HttpConnectionInfo::kDEPRECATED_HTTP2_15: |
| return HttpConnectionInfoCoarse::kHTTP2; |
| |
| case HttpConnectionInfo::kQUIC_UNKNOWN_VERSION: |
| case HttpConnectionInfo::kQUIC_32: |
| case HttpConnectionInfo::kQUIC_33: |
| case HttpConnectionInfo::kQUIC_34: |
| case HttpConnectionInfo::kQUIC_35: |
| case HttpConnectionInfo::kQUIC_36: |
| case HttpConnectionInfo::kQUIC_37: |
| case HttpConnectionInfo::kQUIC_38: |
| case HttpConnectionInfo::kQUIC_39: |
| case HttpConnectionInfo::kQUIC_40: |
| case HttpConnectionInfo::kQUIC_41: |
| case HttpConnectionInfo::kQUIC_42: |
| case HttpConnectionInfo::kQUIC_43: |
| case HttpConnectionInfo::kQUIC_44: |
| case HttpConnectionInfo::kQUIC_45: |
| case HttpConnectionInfo::kQUIC_46: |
| case HttpConnectionInfo::kQUIC_47: |
| case HttpConnectionInfo::kQUIC_Q048: |
| case HttpConnectionInfo::kQUIC_T048: |
| case HttpConnectionInfo::kQUIC_Q049: |
| case HttpConnectionInfo::kQUIC_T049: |
| case HttpConnectionInfo::kQUIC_Q050: |
| case HttpConnectionInfo::kQUIC_T050: |
| case HttpConnectionInfo::kQUIC_Q099: |
| case HttpConnectionInfo::kQUIC_T099: |
| case HttpConnectionInfo::kQUIC_999: |
| case HttpConnectionInfo::kQUIC_DRAFT_25: |
| case HttpConnectionInfo::kQUIC_DRAFT_27: |
| case HttpConnectionInfo::kQUIC_DRAFT_28: |
| case HttpConnectionInfo::kQUIC_DRAFT_29: |
| case HttpConnectionInfo::kQUIC_T051: |
| case HttpConnectionInfo::kQUIC_RFC_V1: |
| case HttpConnectionInfo::kDEPRECATED_QUIC_2_DRAFT_1: |
| case HttpConnectionInfo::kQUIC_2_DRAFT_8: |
| return HttpConnectionInfoCoarse::kQUIC; |
| |
| case HttpConnectionInfo::kUNKNOWN: |
| return HttpConnectionInfoCoarse::kOTHER; |
| } |
| } |
| |
| } // namespace net |