Index: net/tools/flip_server/spdy_interface_test.cc |
diff --git a/net/tools/flip_server/spdy_interface_test.cc b/net/tools/flip_server/spdy_interface_test.cc |
index d5d657586ecfcaa29013aba7c04ce4950e942f0b..a62da42dd6befeb9fc29249edcac04bafd88bec0 100644 |
--- a/net/tools/flip_server/spdy_interface_test.cc |
+++ b/net/tools/flip_server/spdy_interface_test.cc |
@@ -49,15 +49,44 @@ class SpdyFramerVisitor : public BufferedSpdyFramerVisitorInterface { |
virtual ~SpdyFramerVisitor() {} |
MOCK_METHOD1(OnError, void(SpdyFramer::SpdyError)); |
MOCK_METHOD2(OnStreamError, void(SpdyStreamId, const std::string&)); |
- MOCK_METHOD6(OnSynStream, |
+ // SaveArg cannot be used on non-copyable types like SpdyHeaderBlock. |
+ void OnSynStream(SpdyStreamId stream_id, |
+ SpdyStreamId associated_stream_id, |
+ SpdyPriority priority, |
+ bool fin, |
+ bool unidirectional, |
+ const SpdyHeaderBlock& headers) override { |
+ actual_header_block_ = headers.Clone(); |
+ OnSynStreamMock(stream_id, associated_stream_id, priority, fin, |
+ unidirectional, headers); |
+ } |
+ MOCK_METHOD6(OnSynStreamMock, |
void(SpdyStreamId, |
SpdyStreamId, |
SpdyPriority, |
bool, |
bool, |
const SpdyHeaderBlock&)); |
- MOCK_METHOD3(OnSynReply, void(SpdyStreamId, bool, const SpdyHeaderBlock&)); |
- MOCK_METHOD7(OnHeaders, |
+ void OnSynReply(SpdyStreamId stream_id, |
+ bool fin, |
+ const SpdyHeaderBlock& headers) override { |
+ actual_header_block_ = headers.Clone(); |
+ OnSynReplyMock(stream_id, fin, headers); |
+ } |
+ MOCK_METHOD3(OnSynReplyMock, |
+ void(SpdyStreamId, bool, const SpdyHeaderBlock&)); |
+ void OnHeaders(SpdyStreamId stream_id, |
+ bool has_priority, |
+ int weight, |
+ SpdyStreamId parent_stream_id, |
+ bool exclusive, |
+ bool fin, |
+ const SpdyHeaderBlock& headers) override { |
+ actual_header_block_ = headers.Clone(); |
+ OnHeadersMock(stream_id, has_priority, weight, parent_stream_id, exclusive, |
+ fin, headers); |
+ } |
+ MOCK_METHOD7(OnHeadersMock, |
void(SpdyStreamId stream_id, |
bool has_priority, |
int weight, |
@@ -86,6 +115,8 @@ class SpdyFramerVisitor : public BufferedSpdyFramerVisitorInterface { |
base::StringPiece, |
const SpdyAltSvcWireFormat::AlternativeServiceVector&)); |
MOCK_METHOD2(OnUnknownFrame, bool(SpdyStreamId stream_id, int frame_type)); |
+ |
+ SpdyHeaderBlock actual_header_block_; |
}; |
class FakeSMConnection : public SMConnection { |
@@ -366,7 +397,6 @@ TEST_P(SpdySMProxyTest, AddToOutputOrder) { |
TEST_P(SpdySMProxyTest, SendErrorNotFound) { |
uint32_t stream_id = 82; |
- SpdyHeaderBlock actual_header_block; |
const char* actual_data; |
size_t actual_size; |
testing::MockFunction<void(int)> checkpoint; // NOLINT |
@@ -378,14 +408,11 @@ TEST_P(SpdySMProxyTest, SendErrorNotFound) { |
{ |
InSequence s; |
if (GetParam() < HTTP2) { |
- EXPECT_CALL(*spdy_framer_visitor_, |
- OnSynReply(stream_id, false, _)) |
- .WillOnce(SaveArg<2>(&actual_header_block)); |
+ EXPECT_CALL(*spdy_framer_visitor_, OnSynReplyMock(stream_id, false, _)); |
} else { |
EXPECT_CALL(*spdy_framer_visitor_, |
- OnHeaders(stream_id, /*has_priority=*/false, _, _, _, |
- /*fin=*/false, _)) |
- .WillOnce(SaveArg<6>(&actual_header_block)); |
+ OnHeadersMock(stream_id, /*has_priority=*/false, _, _, _, |
+ /*fin=*/false, _)); |
} |
EXPECT_CALL(checkpoint, Call(0)); |
EXPECT_CALL(*spdy_framer_visitor_, |
@@ -405,16 +432,16 @@ TEST_P(SpdySMProxyTest, SendErrorNotFound) { |
spdy_framer_->ProcessInput(df->data, df->size); |
ASSERT_EQ(2, spdy_framer_->frames_received()); |
- ASSERT_EQ(2u, actual_header_block.size()); |
- ASSERT_EQ("404 Not Found", actual_header_block[":status"]); |
- ASSERT_EQ("HTTP/1.1", actual_header_block[":version"]); |
+ ASSERT_EQ(2u, spdy_framer_visitor_->actual_header_block_.size()); |
+ ASSERT_EQ("404 Not Found", |
+ spdy_framer_visitor_->actual_header_block_[":status"]); |
+ ASSERT_EQ("HTTP/1.1", spdy_framer_visitor_->actual_header_block_[":version"]); |
ASSERT_EQ("wtf?", StringPiece(actual_data, actual_size)); |
} |
TEST_P(SpdySMProxyTest, SendSynStream) { |
uint32_t stream_id = 82; |
BalsaHeaders headers; |
- SpdyHeaderBlock actual_header_block; |
headers.AppendHeader("key1", "value1"); |
headers.AppendHeader("Host", "www.example.com"); |
headers.SetRequestFirstlineFromStringPieces("GET", "/path", "HTTP/1.1"); |
@@ -428,24 +455,23 @@ TEST_P(SpdySMProxyTest, SendSynStream) { |
{ |
InSequence s; |
EXPECT_CALL(*spdy_framer_visitor_, |
- OnSynStream(stream_id, 0, _, false, false, _)) |
- .WillOnce(SaveArg<5>(&actual_header_block)); |
+ OnSynStreamMock(stream_id, 0, _, false, false, _)); |
} |
spdy_framer_->ProcessInput(df->data, df->size); |
ASSERT_EQ(1, spdy_framer_->frames_received()); |
- ASSERT_EQ(5u, actual_header_block.size()); |
- ASSERT_EQ("GET", actual_header_block[":method"]); |
- ASSERT_EQ("HTTP/1.1", actual_header_block[":version"]); |
- ASSERT_EQ("/path", actual_header_block[":path"]); |
- ASSERT_EQ("www.example.com", actual_header_block[":host"]); |
- ASSERT_EQ("value1", actual_header_block["key1"]); |
+ ASSERT_EQ(5u, spdy_framer_visitor_->actual_header_block_.size()); |
+ ASSERT_EQ("GET", spdy_framer_visitor_->actual_header_block_[":method"]); |
+ ASSERT_EQ("HTTP/1.1", spdy_framer_visitor_->actual_header_block_[":version"]); |
+ ASSERT_EQ("/path", spdy_framer_visitor_->actual_header_block_[":path"]); |
+ ASSERT_EQ("www.example.com", |
+ spdy_framer_visitor_->actual_header_block_[":host"]); |
+ ASSERT_EQ("value1", spdy_framer_visitor_->actual_header_block_["key1"]); |
} |
TEST_P(SpdySMProxyTest, SendSynReply) { |
uint32_t stream_id = 82; |
BalsaHeaders headers; |
- SpdyHeaderBlock actual_header_block; |
headers.AppendHeader("key1", "value1"); |
headers.SetResponseFirstlineFromStringPieces("HTTP/1.1", "200", "OK"); |
@@ -458,22 +484,20 @@ TEST_P(SpdySMProxyTest, SendSynReply) { |
{ |
InSequence s; |
if (GetParam() < HTTP2) { |
- EXPECT_CALL(*spdy_framer_visitor_, OnSynReply(stream_id, false, _)) |
- .WillOnce(SaveArg<2>(&actual_header_block)); |
+ EXPECT_CALL(*spdy_framer_visitor_, OnSynReplyMock(stream_id, false, _)); |
} else { |
EXPECT_CALL(*spdy_framer_visitor_, |
- OnHeaders(stream_id, /*has_priority=*/false, _, _, _, |
- /*fin=*/false, _)) |
- .WillOnce(SaveArg<6>(&actual_header_block)); |
+ OnHeadersMock(stream_id, /*has_priority=*/false, _, _, _, |
+ /*fin=*/false, _)); |
} |
} |
spdy_framer_->ProcessInput(df->data, df->size); |
ASSERT_EQ(1, spdy_framer_->frames_received()); |
- ASSERT_EQ(3u, actual_header_block.size()); |
- ASSERT_EQ("200 OK", actual_header_block[":status"]); |
- ASSERT_EQ("HTTP/1.1", actual_header_block[":version"]); |
- ASSERT_EQ("value1", actual_header_block["key1"]); |
+ ASSERT_EQ(3u, spdy_framer_visitor_->actual_header_block_.size()); |
+ ASSERT_EQ("200 OK", spdy_framer_visitor_->actual_header_block_[":status"]); |
+ ASSERT_EQ("HTTP/1.1", spdy_framer_visitor_->actual_header_block_[":version"]); |
+ ASSERT_EQ("value1", spdy_framer_visitor_->actual_header_block_["key1"]); |
} |
TEST_P(SpdySMProxyTest, SendDataFrame) { |
@@ -571,7 +595,6 @@ TEST_P(SpdySMServerTest, NewStream) { |
TEST_P(SpdySMServerTest, NewStreamError) { |
uint32_t stream_id = 82; |
- SpdyHeaderBlock actual_header_block; |
const char* actual_data; |
size_t actual_size; |
testing::MockFunction<void(int)> checkpoint; // NOLINT |
@@ -583,13 +606,11 @@ TEST_P(SpdySMServerTest, NewStreamError) { |
{ |
InSequence s; |
if (GetParam() < HTTP2) { |
- EXPECT_CALL(*spdy_framer_visitor_, OnSynReply(stream_id, false, _)) |
- .WillOnce(SaveArg<2>(&actual_header_block)); |
+ EXPECT_CALL(*spdy_framer_visitor_, OnSynReplyMock(stream_id, false, _)); |
} else { |
EXPECT_CALL(*spdy_framer_visitor_, |
- OnHeaders(stream_id, /*has_priority=*/false, _, _, _, |
- /*fin=*/false, _)) |
- .WillOnce(SaveArg<6>(&actual_header_block)); |
+ OnHeadersMock(stream_id, /*has_priority=*/false, _, _, _, |
+ /*fin=*/false, _)); |
} |
EXPECT_CALL(checkpoint, Call(0)); |
EXPECT_CALL(*spdy_framer_visitor_, |
@@ -609,9 +630,10 @@ TEST_P(SpdySMServerTest, NewStreamError) { |
spdy_framer_->ProcessInput(df->data, df->size); |
ASSERT_EQ(2, spdy_framer_->frames_received()); |
- ASSERT_EQ(2u, actual_header_block.size()); |
- ASSERT_EQ("404 Not Found", actual_header_block["status"]); |
- ASSERT_EQ("HTTP/1.1", actual_header_block["version"]); |
+ ASSERT_EQ(2u, spdy_framer_visitor_->actual_header_block_.size()); |
+ ASSERT_EQ("404 Not Found", |
+ spdy_framer_visitor_->actual_header_block_["status"]); |
+ ASSERT_EQ("HTTP/1.1", spdy_framer_visitor_->actual_header_block_["version"]); |
ASSERT_EQ("wtf?", StringPiece(actual_data, actual_size)); |
} |