Support sending custom settings in the TestFrameSequence initial SETTINGS frames.

This testing addition will be important for sending
SETTINGS_MAX_CONCURRENT_STREAMS in nghttp2 and oghttp2 tests.

PiperOrigin-RevId: 398244207
diff --git a/http2/adapter/test_frame_sequence.cc b/http2/adapter/test_frame_sequence.cc
index 346eac8..7a3f115 100644
--- a/http2/adapter/test_frame_sequence.cc
+++ b/http2/adapter/test_frame_sequence.cc
@@ -19,15 +19,15 @@
   return out;
 }
 
-TestFrameSequence& TestFrameSequence::ClientPreface() {
+TestFrameSequence& TestFrameSequence::ClientPreface(
+    absl::Span<const Http2Setting> settings) {
   preface_ = spdy::kHttp2ConnectionHeaderPrefix;
-  frames_.push_back(absl::make_unique<spdy::SpdySettingsIR>());
-  return *this;
+  return Settings(settings);
 }
 
-TestFrameSequence& TestFrameSequence::ServerPreface() {
-  frames_.push_back(absl::make_unique<spdy::SpdySettingsIR>());
-  return *this;
+TestFrameSequence& TestFrameSequence::ServerPreface(
+    absl::Span<const Http2Setting> settings) {
+  return Settings(settings);
 }
 
 TestFrameSequence& TestFrameSequence::Data(Http2StreamId stream_id,
@@ -51,12 +51,12 @@
 }
 
 TestFrameSequence& TestFrameSequence::Settings(
-    absl::Span<Http2Setting> values) {
-  auto settings = absl::make_unique<spdy::SpdySettingsIR>();
-  for (const Http2Setting& setting : values) {
-    settings->AddSetting(setting.id, setting.value);
+    absl::Span<const Http2Setting> settings) {
+  auto settings_frame = absl::make_unique<spdy::SpdySettingsIR>();
+  for (const Http2Setting& setting : settings) {
+    settings_frame->AddSetting(setting.id, setting.value);
   }
-  frames_.push_back(std::move(settings));
+  frames_.push_back(std::move(settings_frame));
   return *this;
 }
 
diff --git a/http2/adapter/test_frame_sequence.h b/http2/adapter/test_frame_sequence.h
index 86cf297..43e97db 100644
--- a/http2/adapter/test_frame_sequence.h
+++ b/http2/adapter/test_frame_sequence.h
@@ -21,14 +21,16 @@
  public:
   TestFrameSequence() = default;
 
-  TestFrameSequence& ClientPreface();
-  TestFrameSequence& ServerPreface();
+  TestFrameSequence& ClientPreface(
+      absl::Span<const Http2Setting> settings = {});
+  TestFrameSequence& ServerPreface(
+      absl::Span<const Http2Setting> settings = {});
   TestFrameSequence& Data(Http2StreamId stream_id,
                           absl::string_view payload,
                           bool fin = false,
                           absl::optional<int> padding_length = absl::nullopt);
   TestFrameSequence& RstStream(Http2StreamId stream_id, Http2ErrorCode error);
-  TestFrameSequence& Settings(absl::Span<Http2Setting> values);
+  TestFrameSequence& Settings(absl::Span<const Http2Setting> settings);
   TestFrameSequence& SettingsAck();
   TestFrameSequence& Ping(Http2PingId id);
   TestFrameSequence& PingAck(Http2PingId id);