| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/tools/quic/quic_spdy_server_stream.h" | 5 #include "net/tools/quic/quic_spdy_server_stream.h" |
| 6 | 6 |
| 7 #include "base/strings/string_number_conversions.h" | 7 #include "base/strings/string_number_conversions.h" |
| 8 #include "base/strings/string_piece.h" | 8 #include "base/strings/string_piece.h" |
| 9 #include "net/quic/quic_connection.h" | 9 #include "net/quic/quic_connection.h" |
| 10 #include "net/quic/quic_protocol.h" | 10 #include "net/quic/quic_protocol.h" |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 108 "HTTP/1.1"); | 108 "HTTP/1.1"); |
| 109 response_headers.SetRequestFirstlineFromStringPieces("HTTP/1.1", | 109 response_headers.SetRequestFirstlineFromStringPieces("HTTP/1.1", |
| 110 "200", | 110 "200", |
| 111 "OK"); | 111 "OK"); |
| 112 response_headers.AppendHeader("content-length", | 112 response_headers.AppendHeader("content-length", |
| 113 base::IntToString(body.length())); | 113 base::IntToString(body.length())); |
| 114 | 114 |
| 115 // Check if response already exists and matches. | 115 // Check if response already exists and matches. |
| 116 const QuicInMemoryCache::Response* cached_response = | 116 const QuicInMemoryCache::Response* cached_response = |
| 117 cache->GetResponse(request_headers); | 117 cache->GetResponse(request_headers); |
| 118 if (cached_response != NULL) { | 118 if (cached_response != nullptr) { |
| 119 string cached_response_headers_str, response_headers_str; | 119 string cached_response_headers_str, response_headers_str; |
| 120 cached_response->headers().DumpToString(&cached_response_headers_str); | 120 cached_response->headers().DumpToString(&cached_response_headers_str); |
| 121 response_headers.DumpToString(&response_headers_str); | 121 response_headers.DumpToString(&response_headers_str); |
| 122 CHECK_EQ(cached_response_headers_str, response_headers_str); | 122 CHECK_EQ(cached_response_headers_str, response_headers_str); |
| 123 CHECK_EQ(cached_response->body(), body); | 123 CHECK_EQ(cached_response->body(), body); |
| 124 return; | 124 return; |
| 125 } | 125 } |
| 126 | 126 |
| 127 cache->AddResponse(request_headers, response_headers, body); | 127 cache->AddResponse(request_headers, response_headers, body); |
| 128 } | 128 } |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 206 request_headers->SetRequestFirstlineFromStringPieces( | 206 request_headers->SetRequestFirstlineFromStringPieces( |
| 207 "GET", | 207 "GET", |
| 208 "https://www.google.com/foo", | 208 "https://www.google.com/foo", |
| 209 "HTTP/1.1"); | 209 "HTTP/1.1"); |
| 210 | 210 |
| 211 response_headers_.SetResponseFirstlineFromStringPieces( | 211 response_headers_.SetResponseFirstlineFromStringPieces( |
| 212 "HTTP/1.1", "200", "OK"); | 212 "HTTP/1.1", "200", "OK"); |
| 213 response_headers_.ReplaceOrAppendHeader("content-length", "3"); | 213 response_headers_.ReplaceOrAppendHeader("content-length", "3"); |
| 214 | 214 |
| 215 InSequence s; | 215 InSequence s; |
| 216 EXPECT_CALL(session_, | 216 EXPECT_CALL(session_, WritevData(kHeadersStreamId, _, 0, false, _, nullptr)); |
| 217 WritevData(kHeadersStreamId, _, 0, false, _, NULL)); | |
| 218 EXPECT_CALL(session_, WritevData(_, _, _, _, _, _)).Times(1). | 217 EXPECT_CALL(session_, WritevData(_, _, _, _, _, _)).Times(1). |
| 219 WillOnce(Return(QuicConsumedData(3, true))); | 218 WillOnce(Return(QuicConsumedData(3, true))); |
| 220 | 219 |
| 221 QuicSpdyServerStreamPeer::SendResponse(stream_.get()); | 220 QuicSpdyServerStreamPeer::SendResponse(stream_.get()); |
| 222 EXPECT_TRUE(stream_->read_side_closed()); | 221 EXPECT_TRUE(stream_->read_side_closed()); |
| 223 EXPECT_TRUE(stream_->write_side_closed()); | 222 EXPECT_TRUE(stream_->write_side_closed()); |
| 224 } | 223 } |
| 225 | 224 |
| 226 TEST_P(QuicSpdyServerStreamTest, TestSendErrorResponse) { | 225 TEST_P(QuicSpdyServerStreamTest, TestSendErrorResponse) { |
| 227 response_headers_.SetResponseFirstlineFromStringPieces( | 226 response_headers_.SetResponseFirstlineFromStringPieces( |
| 228 "HTTP/1.1", "500", "Server Error"); | 227 "HTTP/1.1", "500", "Server Error"); |
| 229 response_headers_.ReplaceOrAppendHeader("content-length", "3"); | 228 response_headers_.ReplaceOrAppendHeader("content-length", "3"); |
| 230 | 229 |
| 231 InSequence s; | 230 InSequence s; |
| 232 EXPECT_CALL(session_, | 231 EXPECT_CALL(session_, WritevData(kHeadersStreamId, _, 0, false, _, nullptr)); |
| 233 WritevData(kHeadersStreamId, _, 0, false, _, NULL)); | |
| 234 EXPECT_CALL(session_, WritevData(_, _, _, _, _, _)).Times(1). | 232 EXPECT_CALL(session_, WritevData(_, _, _, _, _, _)).Times(1). |
| 235 WillOnce(Return(QuicConsumedData(3, true))); | 233 WillOnce(Return(QuicConsumedData(3, true))); |
| 236 | 234 |
| 237 QuicSpdyServerStreamPeer::SendErrorResponse(stream_.get()); | 235 QuicSpdyServerStreamPeer::SendErrorResponse(stream_.get()); |
| 238 EXPECT_TRUE(stream_->read_side_closed()); | 236 EXPECT_TRUE(stream_->read_side_closed()); |
| 239 EXPECT_TRUE(stream_->write_side_closed()); | 237 EXPECT_TRUE(stream_->write_side_closed()); |
| 240 } | 238 } |
| 241 | 239 |
| 242 TEST_P(QuicSpdyServerStreamTest, InvalidHeadersWithFin) { | 240 TEST_P(QuicSpdyServerStreamTest, InvalidHeadersWithFin) { |
| 243 char arr[] = { | 241 char arr[] = { |
| (...skipping 22 matching lines...) Expand all Loading... |
| 266 StringPiece data(arr, arraysize(arr)); | 264 StringPiece data(arr, arraysize(arr)); |
| 267 QuicStreamFrame frame(stream_->id(), true, 0, MakeIOVector(data)); | 265 QuicStreamFrame frame(stream_->id(), true, 0, MakeIOVector(data)); |
| 268 // Verify that we don't crash when we get a invalid headers in stream frame. | 266 // Verify that we don't crash when we get a invalid headers in stream frame. |
| 269 stream_->OnStreamFrame(frame); | 267 stream_->OnStreamFrame(frame); |
| 270 } | 268 } |
| 271 | 269 |
| 272 } // namespace | 270 } // namespace |
| 273 } // namespace test | 271 } // namespace test |
| 274 } // namespace tools | 272 } // namespace tools |
| 275 } // namespace net | 273 } // namespace net |
| OLD | NEW |