Fix ODR violations in http_constants.h

See https://abseil.io/tips/140 for details.

PiperOrigin-RevId: 360231446
Change-Id: I26c273cdfddac3c3f9a19378b719d655361e449a
diff --git a/quic/core/http/http_constants.cc b/quic/core/http/http_constants.cc
index d7281a3..dbf49df 100644
--- a/quic/core/http/http_constants.cc
+++ b/quic/core/http/http_constants.cc
@@ -22,6 +22,8 @@
   return absl::StrCat("UNSUPPORTED_SETTINGS_TYPE(", identifier, ")");
 }
 
+const absl::string_view kUserAgentHeaderName = "user-agent";
+
 #undef RETURN_STRING_LITERAL  // undef for jumbo builds
 
 }  // namespace quic
diff --git a/quic/core/http/http_constants.h b/quic/core/http/http_constants.h
index 27ce56b..afb18d6 100644
--- a/quic/core/http/http_constants.h
+++ b/quic/core/http/http_constants.h
@@ -8,22 +8,24 @@
 #include <cstdint>
 #include <string>
 
+#include "absl/strings/string_view.h"
 #include "quic/core/quic_types.h"
 #include "quic/platform/api/quic_export.h"
 
 namespace quic {
 
 // Unidirectional stream types.
-
-// https://quicwg.org/base-drafts/draft-ietf-quic-http.html#unidirectional-streams
-const uint64_t kControlStream = 0x00;
-const uint64_t kServerPushStream = 0x01;
-// https://quicwg.org/base-drafts/draft-ietf-quic-qpack.html#enc-dec-stream-def
-const uint64_t kQpackEncoderStream = 0x02;
-const uint64_t kQpackDecoderStream = 0x03;
+enum : uint64_t {
+  // https://quicwg.org/base-drafts/draft-ietf-quic-http.html#unidirectional-streams
+  kControlStream = 0x00,
+  kServerPushStream = 0x01,
+  // https://quicwg.org/base-drafts/draft-ietf-quic-qpack.html#enc-dec-stream-def
+  kQpackEncoderStream = 0x02,
+  kQpackDecoderStream = 0x03,
+};
 
 // This includes control stream, QPACK encoder stream, and QPACK decoder stream.
-const QuicStreamCount kHttp3StaticUnidirectionalStreamCount = 3;
+enum : QuicStreamCount { kHttp3StaticUnidirectionalStreamCount = 3 };
 
 // HTTP/3 and QPACK settings identifiers.
 // https://quicwg.org/base-drafts/draft-ietf-quic-http.html#settings-parameters
@@ -44,17 +46,22 @@
 
 // Default maximum dynamic table capacity, communicated via
 // SETTINGS_QPACK_MAX_TABLE_CAPACITY.
-const QuicByteCount kDefaultQpackMaxDynamicTableCapacity = 64 * 1024;  // 64 KB
+enum : QuicByteCount {
+  kDefaultQpackMaxDynamicTableCapacity = 64 * 1024  // 64 KB
+};
 
 // Default limit on the size of uncompressed headers,
 // communicated via SETTINGS_MAX_HEADER_LIST_SIZE.
-const QuicByteCount kDefaultMaxUncompressedHeaderSize = 16 * 1024;  // 16 KB
+enum : QuicByteCount {
+  kDefaultMaxUncompressedHeaderSize = 16 * 1024  // 16 KB
+};
 
 // Default limit on number of blocked streams, communicated via
 // SETTINGS_QPACK_BLOCKED_STREAMS.
-const uint64_t kDefaultMaximumBlockedStreams = 100;
+enum : uint64_t { kDefaultMaximumBlockedStreams = 100 };
 
-const char kUserAgentHeaderName[] = "user-agent";
+QUIC_EXPORT_PRIVATE ABSL_CONST_INIT extern const absl::string_view
+    kUserAgentHeaderName;
 
 }  // namespace quic