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 {}