Commit ca12a09d authored by Victor Vasiliev's avatar Victor Vasiliev Committed by Commit Bot

Add HttpRequestInfo::ConnectionInfoCoarse enum

Most consumers of ConnectionInfo do not actually need the full level of
detail provided by that enum, merely the name of the protocol used.
This change allows us to add new QUIC versions without updating all call
sites that are not interested in the specific QUIC version used.

R=rch@chromium.org

Change-Id: I831d3bd3a704f8f2936773a726ac50b6a80d2580
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1862122Reviewed-by: default avatarRyan Hamilton <rch@chromium.org>
Reviewed-by: default avatarXing Liu <xingliu@chromium.org>
Reviewed-by: default avatarDavid Trainor <dtrainor@chromium.org>
Commit-Queue: Victor Vasiliev <vasilvv@chromium.org>
Cr-Commit-Position: refs/heads/master@{#708339}
parent 46d2ed99
......@@ -103,44 +103,14 @@ bool GetDomainReliabilityBeaconStatus(
std::string GetDomainReliabilityProtocol(
net::HttpResponseInfo::ConnectionInfo connection_info,
bool ssl_info_populated) {
switch (connection_info) {
case net::HttpResponseInfo::CONNECTION_INFO_UNKNOWN:
return "";
case net::HttpResponseInfo::CONNECTION_INFO_HTTP0_9:
case net::HttpResponseInfo::CONNECTION_INFO_HTTP1_0:
case net::HttpResponseInfo::CONNECTION_INFO_HTTP1_1:
switch (net::HttpResponseInfo::ConnectionInfoToCoarse(connection_info)) {
case net::HttpResponseInfo::CONNECTION_INFO_COARSE_HTTP1:
return ssl_info_populated ? "HTTPS" : "HTTP";
case net::HttpResponseInfo::CONNECTION_INFO_DEPRECATED_SPDY2:
case net::HttpResponseInfo::CONNECTION_INFO_DEPRECATED_SPDY3:
case net::HttpResponseInfo::CONNECTION_INFO_DEPRECATED_HTTP2_14:
case net::HttpResponseInfo::CONNECTION_INFO_DEPRECATED_HTTP2_15:
case net::HttpResponseInfo::CONNECTION_INFO_HTTP2:
case net::HttpResponseInfo::CONNECTION_INFO_COARSE_HTTP2:
return "SPDY";
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_UNKNOWN_VERSION:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_32:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_33:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_34:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_35:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_36:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_37:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_38:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_39:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_40:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_41:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_42:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_43:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_44:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_45:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_46:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_47:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_48:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_49:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_50:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_99:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_999:
case net::HttpResponseInfo::CONNECTION_INFO_COARSE_QUIC:
return "QUIC";
case net::HttpResponseInfo::NUM_OF_CONNECTION_INFOS:
NOTREACHED();
case net::HttpResponseInfo::CONNECTION_INFO_COARSE_OTHER:
return "";
}
NOTREACHED();
......
......@@ -29,44 +29,14 @@ enum class ConnectionType {
ConnectionType GetConnectionType(
net::HttpResponseInfo::ConnectionInfo connection_info) {
switch (connection_info) {
case net::HttpResponseInfo::CONNECTION_INFO_HTTP0_9:
case net::HttpResponseInfo::CONNECTION_INFO_HTTP1_0:
case net::HttpResponseInfo::CONNECTION_INFO_HTTP1_1:
switch (net::HttpResponseInfo::ConnectionInfoToCoarse(connection_info)) {
case net::HttpResponseInfo::CONNECTION_INFO_COARSE_HTTP1:
return ConnectionType::kHTTP;
case net::HttpResponseInfo::CONNECTION_INFO_DEPRECATED_SPDY2:
case net::HttpResponseInfo::CONNECTION_INFO_DEPRECATED_SPDY3:
case net::HttpResponseInfo::CONNECTION_INFO_DEPRECATED_HTTP2_14:
case net::HttpResponseInfo::CONNECTION_INFO_DEPRECATED_HTTP2_15:
case net::HttpResponseInfo::CONNECTION_INFO_HTTP2:
case net::HttpResponseInfo::CONNECTION_INFO_COARSE_HTTP2:
return ConnectionType::kHTTP2;
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_UNKNOWN_VERSION:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_32:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_33:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_34:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_35:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_36:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_37:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_38:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_39:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_40:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_41:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_42:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_43:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_44:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_45:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_46:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_47:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_48:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_49:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_50:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_99:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_999:
case net::HttpResponseInfo::CONNECTION_INFO_COARSE_QUIC:
return ConnectionType::kQUIC;
case net::HttpResponseInfo::CONNECTION_INFO_UNKNOWN:
return ConnectionType::kUnknown;
case net::HttpResponseInfo::NUM_OF_CONNECTION_INFOS:
NOTREACHED();
case net::HttpResponseInfo::CONNECTION_INFO_COARSE_OTHER:
return ConnectionType::kUnknown;
}
NOTREACHED();
......
......@@ -8,44 +8,17 @@ namespace page_load_metrics {
NetworkProtocol GetNetworkProtocol(
net::HttpResponseInfo::ConnectionInfo connection_info) {
switch (connection_info) {
case net::HttpResponseInfo::CONNECTION_INFO_UNKNOWN:
case net::HttpResponseInfo::CONNECTION_INFO_DEPRECATED_SPDY2:
case net::HttpResponseInfo::CONNECTION_INFO_DEPRECATED_SPDY3:
case net::HttpResponseInfo::CONNECTION_INFO_DEPRECATED_HTTP2_14:
case net::HttpResponseInfo::CONNECTION_INFO_DEPRECATED_HTTP2_15:
case net::HttpResponseInfo::CONNECTION_INFO_HTTP0_9:
case net::HttpResponseInfo::CONNECTION_INFO_HTTP1_0:
case net::HttpResponseInfo::NUM_OF_CONNECTION_INFOS:
return NetworkProtocol::kOther;
case net::HttpResponseInfo::CONNECTION_INFO_HTTP1_1:
return NetworkProtocol::kHttp11;
case net::HttpResponseInfo::CONNECTION_INFO_HTTP2:
return NetworkProtocol::kHttp2;
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_UNKNOWN_VERSION:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_32:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_33:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_34:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_35:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_36:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_37:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_38:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_39:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_40:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_41:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_42:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_43:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_44:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_45:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_46:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_47:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_48:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_49:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_50:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_99:
case net::HttpResponseInfo::CONNECTION_INFO_QUIC_999:
return NetworkProtocol::kQuic;
if (connection_info == net::HttpResponseInfo::CONNECTION_INFO_HTTP1_1) {
return NetworkProtocol::kHttp11;
}
if (connection_info == net::HttpResponseInfo::CONNECTION_INFO_HTTP2) {
return NetworkProtocol::kHttp2;
}
if (net::HttpResponseInfo::ConnectionInfoToCoarse(connection_info) ==
net::HttpResponseInfo::CONNECTION_INFO_COARSE_QUIC) {
return NetworkProtocol::kQuic;
}
return NetworkProtocol::kOther;
}
} // namespace page_load_metrics
......@@ -118,6 +118,57 @@ enum {
// For now, we don't support storing those.
};
HttpResponseInfo::ConnectionInfoCoarse HttpResponseInfo::ConnectionInfoToCoarse(
ConnectionInfo info) {
switch (info) {
case CONNECTION_INFO_HTTP0_9:
case CONNECTION_INFO_HTTP1_0:
case CONNECTION_INFO_HTTP1_1:
return CONNECTION_INFO_COARSE_HTTP1;
case CONNECTION_INFO_HTTP2:
case CONNECTION_INFO_DEPRECATED_SPDY2:
case CONNECTION_INFO_DEPRECATED_SPDY3:
case CONNECTION_INFO_DEPRECATED_HTTP2_14:
case CONNECTION_INFO_DEPRECATED_HTTP2_15:
return CONNECTION_INFO_COARSE_HTTP2;
case CONNECTION_INFO_QUIC_UNKNOWN_VERSION:
case CONNECTION_INFO_QUIC_32:
case CONNECTION_INFO_QUIC_33:
case CONNECTION_INFO_QUIC_34:
case CONNECTION_INFO_QUIC_35:
case CONNECTION_INFO_QUIC_36:
case CONNECTION_INFO_QUIC_37:
case CONNECTION_INFO_QUIC_38:
case CONNECTION_INFO_QUIC_39:
case CONNECTION_INFO_QUIC_40:
case CONNECTION_INFO_QUIC_41:
case CONNECTION_INFO_QUIC_42:
case CONNECTION_INFO_QUIC_43:
case CONNECTION_INFO_QUIC_44:
case CONNECTION_INFO_QUIC_45:
case CONNECTION_INFO_QUIC_46:
case CONNECTION_INFO_QUIC_47:
case CONNECTION_INFO_QUIC_48:
case CONNECTION_INFO_QUIC_49:
case CONNECTION_INFO_QUIC_50:
case CONNECTION_INFO_QUIC_99:
case CONNECTION_INFO_QUIC_999:
return CONNECTION_INFO_COARSE_QUIC;
case CONNECTION_INFO_UNKNOWN:
return CONNECTION_INFO_COARSE_OTHER;
case NUM_OF_CONNECTION_INFOS:
NOTREACHED();
return CONNECTION_INFO_COARSE_OTHER;
}
NOTREACHED();
return CONNECTION_INFO_COARSE_OTHER;
}
HttpResponseInfo::HttpResponseInfo()
: was_cached(false),
cache_entry_status(CacheEntryStatus::ENTRY_UNDEFINED),
......
......@@ -69,6 +69,13 @@ class NET_EXPORT HttpResponseInfo {
NUM_OF_CONNECTION_INFOS,
};
enum ConnectionInfoCoarse {
CONNECTION_INFO_COARSE_HTTP1, // HTTP/0.9, 1.0 and 1.1
CONNECTION_INFO_COARSE_HTTP2,
CONNECTION_INFO_COARSE_QUIC,
CONNECTION_INFO_COARSE_OTHER,
};
// Used for categorizing transactions for reporting in histograms.
// CacheEntryStatus covers relatively common use cases being measured and
// considered for optimization. Many use cases that are more complex or
......@@ -97,6 +104,10 @@ class NET_EXPORT HttpResponseInfo {
ENTRY_MAX,
};
// Returns a more coarse-grained description of the protocol used to fetch the
// response.
static ConnectionInfoCoarse ConnectionInfoToCoarse(ConnectionInfo info);
HttpResponseInfo();
HttpResponseInfo(const HttpResponseInfo& rhs);
~HttpResponseInfo();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment