1 // Copyright 2023 The Chromium Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef NET_HTTP_HTTP_CONNECTION_INFO_H_ 6 #define NET_HTTP_HTTP_CONNECTION_INFO_H_ 7 8 #include <string_view> 9 10 #include "net/base/net_export.h" 11 12 namespace net { 13 14 // Describes the kind of connection used to fetch this response. 15 // 16 // NOTE: Please keep in sync with ConnectionInfo enum in 17 // tools/metrics/histograms/metadata/net/enums.xml. 18 // Because of that, and also because these values are persisted to 19 // the cache, please make sure not to delete or reorder values. 20 enum class HttpConnectionInfo { 21 kUNKNOWN = 0, 22 kHTTP1_1 = 1, 23 kDEPRECATED_SPDY2 = 2, 24 kDEPRECATED_SPDY3 = 3, 25 kHTTP2 = 4, // HTTP/2. 26 kQUIC_UNKNOWN_VERSION = 5, 27 kDEPRECATED_HTTP2_14 = 6, // HTTP/2 draft-14. 28 kDEPRECATED_HTTP2_15 = 7, // HTTP/2 draft-15. 29 kHTTP0_9 = 8, 30 kHTTP1_0 = 9, 31 kQUIC_32 = 10, 32 kQUIC_33 = 11, 33 kQUIC_34 = 12, 34 kQUIC_35 = 13, 35 kQUIC_36 = 14, 36 kQUIC_37 = 15, 37 kQUIC_38 = 16, 38 kQUIC_39 = 17, 39 kQUIC_40 = 18, 40 kQUIC_41 = 19, 41 kQUIC_42 = 20, 42 kQUIC_43 = 21, 43 kQUIC_Q099 = 22, 44 kQUIC_44 = 23, 45 kQUIC_45 = 24, 46 kQUIC_46 = 25, 47 kQUIC_47 = 26, 48 kQUIC_999 = 27, 49 kQUIC_Q048 = 28, 50 kQUIC_Q049 = 29, 51 kQUIC_Q050 = 30, 52 kQUIC_T048 = 31, 53 kQUIC_T049 = 32, 54 kQUIC_T050 = 33, 55 kQUIC_T099 = 34, 56 kQUIC_DRAFT_25 = 35, 57 kQUIC_DRAFT_27 = 36, 58 kQUIC_DRAFT_28 = 37, 59 kQUIC_DRAFT_29 = 38, 60 kQUIC_T051 = 39, 61 kQUIC_RFC_V1 = 40, 62 kDEPRECATED_QUIC_2_DRAFT_1 = 41, 63 kQUIC_2_DRAFT_8 = 42, 64 65 kMaxValue = kQUIC_2_DRAFT_8, 66 }; 67 68 enum class HttpConnectionInfoCoarse { 69 kHTTP1, // HTTP/0.9, 1.0 and 1.1 70 kHTTP2, 71 kQUIC, 72 kOTHER, 73 }; 74 75 NET_EXPORT std::string_view HttpConnectionInfoToString( 76 HttpConnectionInfo connection_info); 77 78 NET_EXPORT std::string_view HttpConnectionInfoCoarseToString( 79 HttpConnectionInfoCoarse http_connection_info_coarse); 80 81 // Returns a more coarse-grained description of the protocol used to fetch the 82 // response. 83 NET_EXPORT HttpConnectionInfoCoarse 84 HttpConnectionInfoToCoarse(HttpConnectionInfo info); 85 86 } // namespace net 87 88 #endif // NET_HTTP_HTTP_CONNECTION_INFO_H_ 89