Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1582)

Unified Diff: net/quic/quic_chromium_client_stream_test.cc

Issue 2102253003: Make SpdyHeaderBlock non-copyable. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: iOS fix. Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/quic/quic_chromium_client_stream.cc ('k') | net/quic/quic_client_promised_info.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/quic/quic_chromium_client_stream_test.cc
diff --git a/net/quic/quic_chromium_client_stream_test.cc b/net/quic/quic_chromium_client_stream_test.cc
index 6792fbe47ebc4c843934f7c33848be29bfaf9584..7a1e5a6d4797e9df759218632f01c2cd896fdf3e 100644
--- a/net/quic/quic_chromium_client_stream_test.cc
+++ b/net/quic/quic_chromium_client_stream_test.cc
@@ -39,7 +39,12 @@ class MockDelegate : public QuicChromiumClientStream::Delegate {
MOCK_METHOD0(OnSendData, int());
MOCK_METHOD2(OnSendDataComplete, int(int, bool*));
- MOCK_METHOD2(OnHeadersAvailable,
+ void OnHeadersAvailable(const SpdyHeaderBlock& headers,
+ size_t frame_len) override {
+ headers_ = headers.Clone();
+ OnHeadersAvailableMock(headers, frame_len);
+ }
+ MOCK_METHOD2(OnHeadersAvailableMock,
void(const SpdyHeaderBlock& headers, size_t frame_len));
MOCK_METHOD2(OnDataReceived, int(const char*, int));
MOCK_METHOD0(OnDataAvailable, void());
@@ -47,6 +52,8 @@ class MockDelegate : public QuicChromiumClientStream::Delegate {
MOCK_METHOD1(OnError, void(int));
MOCK_METHOD0(HasSendHeadersComplete, bool());
+ SpdyHeaderBlock headers_;
+
private:
DISALLOW_COPY_AND_ASSIGN(MockDelegate);
};
@@ -92,9 +99,19 @@ class MockQuicClientSessionBase : public QuicClientSessionBase {
QuicStreamId promised_stream_id,
size_t frame_len));
MOCK_METHOD0(IsCryptoHandshakeConfirmed, bool());
- MOCK_METHOD5(WriteHeaders,
+ // Methods taking non-copyable types like SpdyHeaderBlock by value cannot be
+ // mocked directly.
+ size_t WriteHeaders(
+ QuicStreamId id,
+ SpdyHeaderBlock headers,
+ bool fin,
+ SpdyPriority priority,
+ QuicAckListenerInterface* ack_notifier_delegate) override {
+ return WriteHeadersMock(id, headers, fin, priority, ack_notifier_delegate);
+ }
+ MOCK_METHOD5(WriteHeadersMock,
size_t(QuicStreamId id,
- SpdyHeaderBlock headers,
+ const SpdyHeaderBlock& headers,
bool fin,
SpdyPriority priority,
QuicAckListenerInterface* ack_notifier_delegate));
@@ -218,8 +235,9 @@ TEST_P(QuicChromiumClientStreamTest, OnFinRead) {
stream_->OnStreamHeadersComplete(false, uncompressed_headers.length());
EXPECT_CALL(delegate_,
- OnHeadersAvailable(headers_, uncompressed_headers.length()));
+ OnHeadersAvailableMock(_, uncompressed_headers.length()));
base::RunLoop().RunUntilIdle();
+ EXPECT_EQ(headers_, delegate_.headers_);
EXPECT_TRUE(stream_->decompressed_headers().empty());
QuicStreamFrame frame2(kTestStreamId, true, offset, StringPiece());
@@ -242,8 +260,9 @@ TEST_P(QuicChromiumClientStreamTest, OnDataAvailable) {
stream_->OnStreamHeadersComplete(false, uncompressed_headers.length());
EXPECT_CALL(delegate_,
- OnHeadersAvailable(headers_, uncompressed_headers.length()));
+ OnHeadersAvailableMock(_, uncompressed_headers.length()));
base::RunLoop().RunUntilIdle();
+ EXPECT_EQ(headers_, delegate_.headers_);
EXPECT_TRUE(stream_->decompressed_headers().empty());
const char data[] = "hello world!";
@@ -281,8 +300,9 @@ TEST_P(QuicChromiumClientStreamTest, OnDataAvailableWithError) {
stream_->OnStreamHeadersComplete(false, uncompressed_headers.length());
EXPECT_CALL(delegate_,
- OnHeadersAvailable(headers_, uncompressed_headers.length()));
+ OnHeadersAvailableMock(_, uncompressed_headers.length()));
base::RunLoop().RunUntilIdle();
+ EXPECT_EQ(headers_, delegate_.headers_);
EXPECT_TRUE(stream_->decompressed_headers().empty());
const char data[] = "hello world!";
@@ -312,8 +332,9 @@ TEST_P(QuicChromiumClientStreamTest, OnTrailers) {
stream_->OnStreamHeadersComplete(false, uncompressed_headers.length());
EXPECT_CALL(delegate_,
- OnHeadersAvailable(headers_, uncompressed_headers.length()));
+ OnHeadersAvailableMock(_, uncompressed_headers.length()));
base::RunLoop().RunUntilIdle();
+ EXPECT_EQ(headers_, delegate_.headers_);
EXPECT_TRUE(stream_->decompressed_headers().empty());
const char data[] = "hello world!";
@@ -334,18 +355,15 @@ TEST_P(QuicChromiumClientStreamTest, OnTrailers) {
stream_->OnStreamHeaders(uncompressed_trailers);
stream_->OnStreamHeadersComplete(true, uncompressed_trailers.length());
- SpdyHeaderBlock actual_trailers;
-
base::RunLoop run_loop;
- EXPECT_CALL(delegate_, OnHeadersAvailable(_, uncompressed_trailers.length()))
- .WillOnce(testing::DoAll(
- testing::SaveArg<0>(&actual_trailers),
- testing::InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); })));
+ EXPECT_CALL(delegate_,
+ OnHeadersAvailableMock(_, uncompressed_trailers.length()))
+ .WillOnce(testing::InvokeWithoutArgs([&run_loop]() { run_loop.Quit(); }));
run_loop.Run();
// Make sure kFinalOffsetHeaderKey is gone from the delivered actual trailers.
trailers.erase(kFinalOffsetHeaderKey);
- EXPECT_EQ(trailers, actual_trailers);
+ EXPECT_EQ(trailers, delegate_.headers_);
base::RunLoop().RunUntilIdle();
EXPECT_CALL(delegate_, OnClose());
}
@@ -360,8 +378,9 @@ TEST_P(QuicChromiumClientStreamTest, MarkTrailersConsumedWhenNotifyDelegate) {
stream_->OnStreamHeadersComplete(false, uncompressed_headers.length());
EXPECT_CALL(delegate_,
- OnHeadersAvailable(headers_, uncompressed_headers.length()));
+ OnHeadersAvailableMock(_, uncompressed_headers.length()));
base::RunLoop().RunUntilIdle();
+ EXPECT_EQ(headers_, delegate_.headers_);
EXPECT_TRUE(stream_->decompressed_headers().empty());
const char data[] = "hello world!";
@@ -410,12 +429,10 @@ TEST_P(QuicChromiumClientStreamTest, MarkTrailersConsumedWhenNotifyDelegate) {
// The OnHeadersAvailable call should follow.
base::RunLoop run_loop3;
- SpdyHeaderBlock actual_trailers;
EXPECT_CALL(delegate_,
- OnHeadersAvailable(_, uncompressed_trailers.length()))
- .WillOnce(testing::DoAll(
- testing::SaveArg<0>(&actual_trailers),
- testing::InvokeWithoutArgs([&run_loop3]() { run_loop3.Quit(); })));
+ OnHeadersAvailableMock(_, uncompressed_trailers.length()))
+ .WillOnce(
+ testing::InvokeWithoutArgs([&run_loop3]() { run_loop3.Quit(); }));
run_loop3.Run();
// Make sure the stream is properly closed since trailers and data are all
@@ -423,7 +440,7 @@ TEST_P(QuicChromiumClientStreamTest, MarkTrailersConsumedWhenNotifyDelegate) {
EXPECT_TRUE(stream_->IsDoneReading());
// Make sure kFinalOffsetHeaderKey is gone from the delivered actual trailers.
trailers.erase(kFinalOffsetHeaderKey);
- EXPECT_EQ(trailers, actual_trailers);
+ EXPECT_EQ(trailers, delegate_.headers_);
base::RunLoop().RunUntilIdle();
EXPECT_CALL(delegate_, OnClose());
@@ -528,9 +545,10 @@ TEST_P(QuicChromiumClientStreamTest, HeadersBeforeDelegate) {
EXPECT_TRUE(stream->decompressed_headers().empty());
EXPECT_CALL(delegate_,
- OnHeadersAvailable(headers_, uncompressed_headers.length()));
+ OnHeadersAvailableMock(_, uncompressed_headers.length()));
stream->SetDelegate(&delegate_);
base::RunLoop().RunUntilIdle();
+ EXPECT_EQ(headers_, delegate_.headers_);
// Times(2) because OnClose will be called for stream and stream_.
EXPECT_CALL(delegate_, OnClose()).Times(2);
« no previous file with comments | « net/quic/quic_chromium_client_stream.cc ('k') | net/quic/quic_client_promised_info.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698