Simplify the BalsaVisitorInterface::OnInterimHeaders() signature.

This CL simplifies BalsaVisitorInterface::OnInterimHeaders() to accept
BalsaHeaders rather than std::unique<BalsaHeaders>, as BalsaHeaders is movable
(but not copyable/assignable, so there will be no fear of unintended copying).

Thanks ++birenroy@ for the suggestion in cl/523726651!

PiperOrigin-RevId: 524360383
diff --git a/quiche/balsa/balsa_frame.cc b/quiche/balsa/balsa_frame.cc
index f54ec16..ac5e018 100644
--- a/quiche/balsa/balsa_frame.cc
+++ b/quiche/balsa/balsa_frame.cc
@@ -853,10 +853,8 @@
         IsInterimResponse(headers_->parsed_response_code())) {
       // Deliver headers from this interim response but reset everything else to
       // prepare for the next set of headers.
-      auto interim_headers =
-          std::make_unique<BalsaHeaders>(std::move(*headers_));
+      visitor_->OnInterimHeaders(std::move(*headers_));
       Reset();
-      visitor_->OnInterimHeaders(std::move(interim_headers));
       checkpoint = message_start = message_current;
       continue;
     }
diff --git a/quiche/balsa/balsa_frame_test.cc b/quiche/balsa/balsa_frame_test.cc
index 4edc5e1..13a704a 100644
--- a/quiche/balsa/balsa_frame_test.cc
+++ b/quiche/balsa/balsa_frame_test.cc
@@ -9,7 +9,6 @@
 #include <cstdint>
 #include <limits>
 #include <map>
-#include <memory>
 #include <random>
 #include <sstream>
 #include <string>
@@ -41,7 +40,6 @@
 using ::testing::IsEmpty;
 using ::testing::Mock;
 using ::testing::NiceMock;
-using ::testing::Pointee;
 using ::testing::Property;
 using ::testing::Range;
 using ::testing::StrEq;
@@ -558,8 +556,7 @@
   MOCK_METHOD(void, OnChunkLength, (size_t length), (override));
   MOCK_METHOD(void, OnChunkExtensionInput, (absl::string_view input),
               (override));
-  MOCK_METHOD(void, OnInterimHeaders, (std::unique_ptr<BalsaHeaders> headers),
-              (override));
+  MOCK_METHOD(void, OnInterimHeaders, (BalsaHeaders headers), (override));
   MOCK_METHOD(void, ContinueHeaderDone, (), (override));
   MOCK_METHOD(void, HeaderDone, (), (override));
   MOCK_METHOD(void, MessageDone, (), (override));
@@ -3700,8 +3697,8 @@
   balsa_frame_.set_use_interim_headers_callback(true);
 
   InSequence s;
-  EXPECT_CALL(visitor_mock_, OnInterimHeaders(Pointee(Property(
-                                 &BalsaHeaders::parsed_response_code, 100))));
+  EXPECT_CALL(visitor_mock_, OnInterimHeaders(Property(
+                                 &BalsaHeaders::parsed_response_code, 100)));
   EXPECT_CALL(visitor_mock_, HeaderDone()).Times(0);
   EXPECT_CALL(visitor_mock_, MessageDone()).Times(0);
 
@@ -3759,8 +3756,8 @@
   balsa_frame_.set_use_interim_headers_callback(true);
 
   InSequence s;
-  EXPECT_CALL(visitor_mock_, OnInterimHeaders(Pointee(Property(
-                                 &BalsaHeaders::parsed_response_code, 100))));
+  EXPECT_CALL(visitor_mock_, OnInterimHeaders(Property(
+                                 &BalsaHeaders::parsed_response_code, 100)));
   ASSERT_EQ(
       balsa_frame_.ProcessInput(initial_headers.data(), initial_headers.size()),
       initial_headers.size());
@@ -3798,8 +3795,8 @@
   balsa_frame_.set_use_interim_headers_callback(true);
 
   InSequence s;
-  EXPECT_CALL(visitor_mock_, OnInterimHeaders(Pointee(Property(
-                                 &BalsaHeaders::parsed_response_code, 100))));
+  EXPECT_CALL(visitor_mock_, OnInterimHeaders(Property(
+                                 &BalsaHeaders::parsed_response_code, 100)));
   EXPECT_CALL(visitor_mock_, ContinueHeaderDone).Times(0);
   ASSERT_EQ(
       balsa_frame_.ProcessInput(initial_headers.data(), initial_headers.size()),
@@ -3866,8 +3863,8 @@
   balsa_frame_.set_use_interim_headers_callback(true);
 
   InSequence s;
-  EXPECT_CALL(visitor_mock_, OnInterimHeaders(Pointee(Property(
-                                 &BalsaHeaders::parsed_response_code, 100))));
+  EXPECT_CALL(visitor_mock_, OnInterimHeaders(Property(
+                                 &BalsaHeaders::parsed_response_code, 100)));
   ASSERT_EQ(
       balsa_frame_.ProcessInput(initial_headers.data(), initial_headers.size()),
       initial_headers.size());
@@ -3930,8 +3927,8 @@
   balsa_frame_.set_use_interim_headers_callback(true);
 
   InSequence s;
-  EXPECT_CALL(visitor_mock_, OnInterimHeaders(Pointee(Property(
-                                 &BalsaHeaders::parsed_response_code, 100))));
+  EXPECT_CALL(visitor_mock_, OnInterimHeaders(Property(
+                                 &BalsaHeaders::parsed_response_code, 100)));
   EXPECT_CALL(visitor_mock_, HeaderDone());
 
   ASSERT_EQ(balsa_frame_.ProcessInput(both_headers.data(), both_headers.size()),
@@ -3962,10 +3959,10 @@
   balsa_frame_.set_use_interim_headers_callback(true);
 
   InSequence s;
-  EXPECT_CALL(visitor_mock_, OnInterimHeaders(Pointee(Property(
-                                 &BalsaHeaders::parsed_response_code, 100))));
-  EXPECT_CALL(visitor_mock_, OnInterimHeaders(Pointee(Property(
-                                 &BalsaHeaders::parsed_response_code, 103))));
+  EXPECT_CALL(visitor_mock_, OnInterimHeaders(Property(
+                                 &BalsaHeaders::parsed_response_code, 100)));
+  EXPECT_CALL(visitor_mock_, OnInterimHeaders(Property(
+                                 &BalsaHeaders::parsed_response_code, 103)));
   EXPECT_CALL(visitor_mock_, HeaderDone());
 
   ASSERT_EQ(balsa_frame_.ProcessInput(all_headers.data(), all_headers.size()),
diff --git a/quiche/balsa/balsa_visitor_interface.h b/quiche/balsa/balsa_visitor_interface.h
index 89355f3..e2c4327 100644
--- a/quiche/balsa/balsa_visitor_interface.h
+++ b/quiche/balsa/balsa_visitor_interface.h
@@ -6,7 +6,6 @@
 #define QUICHE_BALSA_BALSA_VISITOR_INTERFACE_H_
 
 #include <cstddef>
-#include <memory>
 
 #include "absl/strings/string_view.h"
 #include "quiche/balsa/balsa_enums.h"
@@ -132,7 +131,7 @@
   // Arguments:
   //   headers - contains the parsed headers in the order in which they occurred
   //             in the interim response.
-  virtual void OnInterimHeaders(std::unique_ptr<BalsaHeaders> headers) = 0;
+  virtual void OnInterimHeaders(BalsaHeaders headers) = 0;
 
   // Summary:
   //   Called when the 100 Continue headers are framed and processed. This
diff --git a/quiche/balsa/noop_balsa_visitor.h b/quiche/balsa/noop_balsa_visitor.h
index 5645070..ce82d58 100644
--- a/quiche/balsa/noop_balsa_visitor.h
+++ b/quiche/balsa/noop_balsa_visitor.h
@@ -6,7 +6,6 @@
 #define QUICHE_BALSA_NOOP_BALSA_VISITOR_H_
 
 #include <cstddef>
-#include <memory>
 
 #include "absl/strings/string_view.h"
 #include "quiche/balsa/balsa_visitor_interface.h"
@@ -47,7 +46,7 @@
                                 absl::string_view /*reason_input*/) override {}
   void OnChunkLength(size_t /*chunk_length*/) override {}
   void OnChunkExtensionInput(absl::string_view /*input*/) override {}
-  void OnInterimHeaders(std::unique_ptr<BalsaHeaders> /*headers*/) override {}
+  void OnInterimHeaders(BalsaHeaders /*headers*/) override {}
   void ContinueHeaderDone() override {}
   void HeaderDone() override {}
   void MessageDone() override {}