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