Use string literal for HTTP/3 setting identifiers. gfe-relnote: protected by disabled v99 flag. PiperOrigin-RevId: 270737244 Change-Id: I961d82227863f6c1422d19e43473eb52ceedb86b
diff --git a/quic/core/http/http_frames.h b/quic/core/http/http_frames.h index ced2032..dde8b1e 100644 --- a/quic/core/http/http_frames.h +++ b/quic/core/http/http_frames.h
@@ -9,6 +9,7 @@ #include <map> #include <ostream> +#include "net/third_party/quiche/src/quic/core/http/spdy_utils.h" #include "net/third_party/quiche/src/quic/core/quic_types.h" #include "net/third_party/quiche/src/quic/platform/api/quic_str_cat.h" #include "net/third_party/quiche/src/quic/platform/api/quic_string_piece.h" @@ -128,8 +129,10 @@ std::string ToString() const { std::string s; for (auto it : values) { - std::string setting = - QuicStrCat("[id->", it.first, " | value->", it.second, "] "); + std::string setting = QuicStrCat( + SpdyUtils::H3SettingsToString( + static_cast<Http3AndQpackSettingsIdentifiers>(it.first)), + " = ", it.second, "; "); QuicStrAppend(&s, setting); } return s;
diff --git a/quic/core/http/spdy_utils.cc b/quic/core/http/spdy_utils.cc index d72a18d..546b7a8 100644 --- a/quic/core/http/spdy_utils.cc +++ b/quic/core/http/spdy_utils.cc
@@ -12,6 +12,7 @@ #include "net/third_party/quiche/src/quic/platform/api/quic_flags.h" #include "net/third_party/quiche/src/quic/platform/api/quic_logging.h" #include "net/third_party/quiche/src/quic/platform/api/quic_map_util.h" +#include "net/third_party/quiche/src/quic/platform/api/quic_str_cat.h" #include "net/third_party/quiche/src/quic/platform/api/quic_string_piece.h" #include "net/third_party/quiche/src/quic/platform/api/quic_text_utils.h" #include "net/third_party/quiche/src/spdy/core/spdy_protocol.h" @@ -149,4 +150,21 @@ return true; } +#define RETURN_STRING_LITERAL(x) \ + case x: \ + return #x; + +// static +std::string SpdyUtils::H3SettingsToString( + Http3AndQpackSettingsIdentifiers identifier) { + switch (identifier) { + RETURN_STRING_LITERAL(SETTINGS_QPACK_MAX_TABLE_CAPACITY); + RETURN_STRING_LITERAL(SETTINGS_MAX_HEADER_LIST_SIZE); + RETURN_STRING_LITERAL(SETTINGS_QPACK_BLOCKED_STREAMS); + RETURN_STRING_LITERAL(SETTINGS_NUM_PLACEHOLDERS); + } + return QuicStrCat("UNSUPPORTED_SETTINGS_TYPE(", identifier, ")"); +} + +#undef RETURN_STRING_LITERAL // undef for jumbo builds } // namespace quic
diff --git a/quic/core/http/spdy_utils.h b/quic/core/http/spdy_utils.h index 4b962c2..43bca5e 100644 --- a/quic/core/http/spdy_utils.h +++ b/quic/core/http/spdy_utils.h
@@ -9,6 +9,7 @@ #include <cstdint> #include <string> +#include "net/third_party/quiche/src/quic/core/http/http_constants.h" #include "net/third_party/quiche/src/quic/core/http/quic_header_list.h" #include "net/third_party/quiche/src/quic/core/quic_packets.h" #include "net/third_party/quiche/src/quic/platform/api/quic_export.h" @@ -50,6 +51,10 @@ // which must be fully-qualified. static bool PopulateHeaderBlockFromUrl(const std::string url, spdy::SpdyHeaderBlock* headers); + + // Returns HTTP/3 SETTINGS identifier as a string. + static std::string H3SettingsToString( + Http3AndQpackSettingsIdentifiers identifier); }; } // namespace quic