Clean up HTTP/3 and QPACK settings.

Change settings variable name style from kCamelCase to ALL_CAPS to align with
style used in draft RFCs.  Encapsulate in enum (not enum class) as customary.
Use these values instead of equivalent HTTP/2 values where appropriate.  Move
kDefaultQpackMaxDynamicTableCapacity to quic/core/http/.  Add misc TODOs.

gfe-relnote: n/a, no functional change.
PiperOrigin-RevId: 260526616
Change-Id: Ie0bd513dbf8c0942545f02f97f09c9b9cc88d1dc
diff --git a/quic/core/http/http_constants.h b/quic/core/http/http_constants.h
index 2641790..84d0abd 100644
--- a/quic/core/http/http_constants.h
+++ b/quic/core/http/http_constants.h
@@ -7,6 +7,8 @@
 
 #include <cstdint>
 
+#include "net/third_party/quiche/src/quic/core/quic_types.h"
+
 namespace quic {
 
 // Unidirectional stream types.
@@ -18,14 +20,21 @@
 const uint64_t kQpackEncoderStream = 0x02;
 const uint64_t kQpackDecoderStream = 0x03;
 
-// Settings identifiers.
-
+// HTTP/3 and QPACK settings identifiers.
 // https://quicwg.org/base-drafts/draft-ietf-quic-http.html#settings-parameters
-const uint64_t kSettingsMaxHeaderListSize = 0x06;
-const uint64_t kSettingsNumPlaceholders = 0x09;
 // https://quicwg.org/base-drafts/draft-ietf-quic-qpack.html#configuration
-const uint64_t kSettingsQpackMaxTableCapacity = 0x01;
-const uint64_t kSettingsQpackBlockedStream = 0x07;
+enum Http3AndQpackSettingsIdentifiers : uint64_t {
+  // Same value as spdy::SETTINGS_HEADER_TABLE_SIZE.
+  SETTINGS_QPACK_MAX_TABLE_CAPACITY = 0x01,
+  // Same value as spdy::SETTINGS_MAX_HEADER_LIST_SIZE.
+  SETTINGS_MAX_HEADER_LIST_SIZE = 0x06,
+  SETTINGS_QPACK_BLOCKED_STREAMS = 0x07,
+  SETTINGS_NUM_PLACEHOLDERS = 0x09,
+};
+
+// Default maximum dynamic table capacity, communicated via
+// SETTINGS_QPACK_MAX_TABLE_CAPACITY.
+const QuicByteCount kDefaultQpackMaxDynamicTableCapacity = 64 * 1024;  // 64 KB
 
 }  // namespace quic
 
diff --git a/quic/core/http/quic_receive_control_stream.cc b/quic/core/http/quic_receive_control_stream.cc
index d870d21..4408e59 100644
--- a/quic/core/http/quic_receive_control_stream.cc
+++ b/quic/core/http/quic_receive_control_stream.cc
@@ -211,10 +211,10 @@
   for (auto& it : settings.values) {
     uint64_t setting_id = it.first;
     switch (setting_id) {
-      case kSettingsMaxHeaderListSize:
+      case SETTINGS_MAX_HEADER_LIST_SIZE:
         spdy_session->set_max_outbound_header_list_size(it.second);
         break;
-      case kSettingsNumPlaceholders:
+      case SETTINGS_NUM_PLACEHOLDERS:
         // TODO: Support placeholder setting
         break;
       default:
diff --git a/quic/core/http/quic_receive_control_stream_test.cc b/quic/core/http/quic_receive_control_stream_test.cc
index d5a3139..7c90c76 100644
--- a/quic/core/http/quic_receive_control_stream_test.cc
+++ b/quic/core/http/quic_receive_control_stream_test.cc
@@ -128,7 +128,7 @@
 TEST_P(QuicReceiveControlStreamTest, ReceiveSettings) {
   SettingsFrame settings;
   settings.values[3] = 2;
-  settings.values[kSettingsMaxHeaderListSize] = 5;
+  settings.values[SETTINGS_MAX_HEADER_LIST_SIZE] = 5;
   std::string data = EncodeSettings(settings);
   QuicStreamFrame frame(receive_control_stream_->id(), false, 0,
                         QuicStringPiece(data));
@@ -181,7 +181,7 @@
 TEST_P(QuicReceiveControlStreamTest, ReceiveSettingsFragments) {
   SettingsFrame settings;
   settings.values[3] = 2;
-  settings.values[kSettingsMaxHeaderListSize] = 5;
+  settings.values[SETTINGS_MAX_HEADER_LIST_SIZE] = 5;
   std::string data = EncodeSettings(settings);
   std::string data1 = data.substr(0, 1);
   std::string data2 = data.substr(1, data.length() - 1);
diff --git a/quic/core/http/quic_send_control_stream.cc b/quic/core/http/quic_send_control_stream.cc
index 348f63d..53ff3ef 100644
--- a/quic/core/http/quic_send_control_stream.cc
+++ b/quic/core/http/quic_send_control_stream.cc
@@ -40,7 +40,8 @@
                     nullptr);
 
   SettingsFrame settings;
-  settings.values[kSettingsMaxHeaderListSize] = max_inbound_header_list_size_;
+  settings.values[SETTINGS_MAX_HEADER_LIST_SIZE] =
+      max_inbound_header_list_size_;
   std::unique_ptr<char[]> buffer;
   QuicByteCount frame_length =
       encoder_.SerializeSettingsFrame(settings, &buffer);
diff --git a/quic/core/http/quic_spdy_session.cc b/quic/core/http/quic_spdy_session.cc
index b57ad72..0e909ed 100644
--- a/quic/core/http/quic_spdy_session.cc
+++ b/quic/core/http/quic_spdy_session.cc
@@ -28,8 +28,6 @@
 using spdy::HpackHeaderTable;
 using spdy::Http2WeightToSpdy3Priority;
 using spdy::SETTINGS_ENABLE_PUSH;
-using spdy::SETTINGS_HEADER_TABLE_SIZE;
-using spdy::SETTINGS_MAX_HEADER_LIST_SIZE;
 using spdy::Spdy3PriorityToHttp2Weight;
 using spdy::SpdyErrorCode;
 using spdy::SpdyFramer;
@@ -155,10 +153,11 @@
 
   void OnSetting(SpdySettingsId id, uint32_t value) override {
     switch (id) {
-      case SETTINGS_HEADER_TABLE_SIZE:
+      case SETTINGS_QPACK_MAX_TABLE_CAPACITY:
         session_->UpdateHeaderEncoderTableSize(value);
         break;
       case SETTINGS_ENABLE_PUSH:
+        // TODO(b/138438479): Remove this setting.
         if (session_->perspective() == Perspective::IS_SERVER) {
           // See rfc7540, Section 6.5.2.
           if (value > 1) {
@@ -744,6 +743,7 @@
 }
 
 void QuicSpdySession::UpdateHeaderEncoderTableSize(uint32_t value) {
+  // TODO(b/112770235): Update QpackEncoder.
   spdy_framer_.UpdateHeaderEncoderTableSize(value);
 }
 
diff --git a/quic/core/http/quic_spdy_session_test.cc b/quic/core/http/quic_spdy_session_test.cc
index d3182ab..9f4671f 100644
--- a/quic/core/http/quic_spdy_session_test.cc
+++ b/quic/core/http/quic_spdy_session_test.cc
@@ -2113,7 +2113,7 @@
 
   SettingsFrame settings;
   settings.values[3] = 2;
-  settings.values[kSettingsMaxHeaderListSize] = 5;
+  settings.values[SETTINGS_MAX_HEADER_LIST_SIZE] = 5;
   std::string data = EncodeSettings(settings);
   QuicStreamFrame frame(stream_id, false, 1, QuicStringPiece(data));
 
@@ -2132,7 +2132,7 @@
   char type[] = {kControlStream};
   SettingsFrame settings;
   settings.values[3] = 2;
-  settings.values[kSettingsMaxHeaderListSize] = 5;
+  settings.values[SETTINGS_MAX_HEADER_LIST_SIZE] = 5;
   std::string data = EncodeSettings(settings);
 
   QuicStreamFrame data1(stream_id, false, 1, QuicStringPiece(data));