| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 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/spdy/spdy_stream.h" | 5 #include "net/spdy/spdy_stream.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include <cstddef> | 9 #include <cstddef> |
| 10 #include <limits> | 10 #include <limits> |
| (...skipping 1030 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1041 | 1041 |
| 1042 EXPECT_THAT(delegate.WaitForClose(), IsOk()); | 1042 EXPECT_THAT(delegate.WaitForClose(), IsOk()); |
| 1043 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); | 1043 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); |
| 1044 EXPECT_EQ(std::string(kPostBody, kPostBodyLength), | 1044 EXPECT_EQ(std::string(kPostBody, kPostBodyLength), |
| 1045 delegate.TakeReceivedData()); | 1045 delegate.TakeReceivedData()); |
| 1046 | 1046 |
| 1047 EXPECT_TRUE(data.AllWriteDataConsumed()); | 1047 EXPECT_TRUE(data.AllWriteDataConsumed()); |
| 1048 EXPECT_TRUE(data.AllReadDataConsumed()); | 1048 EXPECT_TRUE(data.AllReadDataConsumed()); |
| 1049 } | 1049 } |
| 1050 | 1050 |
| 1051 TEST_F(SpdyStreamTest, StatusMustBeNumber) { | 1051 TEST_F(SpdyStreamTest, StatusMustStartWithNumber) { |
| 1052 SpdySerializedFrame req( | 1052 SpdySerializedFrame req( |
| 1053 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); | 1053 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); |
| 1054 AddWrite(req); | 1054 AddWrite(req); |
| 1055 | 1055 |
| 1056 SpdyHeaderBlock incorrect_headers; | 1056 SpdyHeaderBlock incorrect_headers; |
| 1057 incorrect_headers[":status"] = "nan"; | 1057 incorrect_headers[":status"] = "nan"; |
| 1058 SpdySerializedFrame reply(spdy_util_.ConstructSpdyResponseHeaders( | 1058 SpdySerializedFrame reply(spdy_util_.ConstructSpdyResponseHeaders( |
| 1059 1, std::move(incorrect_headers), false)); | 1059 1, std::move(incorrect_headers), false)); |
| 1060 AddRead(reply); | 1060 AddRead(reply); |
| 1061 | 1061 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 1088 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers), | 1088 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers), |
| 1089 NO_MORE_DATA_TO_SEND)); | 1089 NO_MORE_DATA_TO_SEND)); |
| 1090 EXPECT_EQ(kDefaultUrl, stream->GetUrlFromHeaders().spec()); | 1090 EXPECT_EQ(kDefaultUrl, stream->GetUrlFromHeaders().spec()); |
| 1091 | 1091 |
| 1092 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_SPDY_PROTOCOL_ERROR)); | 1092 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_SPDY_PROTOCOL_ERROR)); |
| 1093 | 1093 |
| 1094 EXPECT_TRUE(data.AllWriteDataConsumed()); | 1094 EXPECT_TRUE(data.AllWriteDataConsumed()); |
| 1095 EXPECT_TRUE(data.AllReadDataConsumed()); | 1095 EXPECT_TRUE(data.AllReadDataConsumed()); |
| 1096 } | 1096 } |
| 1097 | 1097 |
| 1098 TEST_F(SpdyStreamTest, StatusCanHaveExtraText) { |
| 1099 SpdySerializedFrame req( |
| 1100 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); |
| 1101 AddWrite(req); |
| 1102 |
| 1103 SpdyHeaderBlock headers_with_status_text; |
| 1104 headers_with_status_text[":status"] = |
| 1105 "200 Some random extra text describing status"; |
| 1106 SpdySerializedFrame reply(spdy_util_.ConstructSpdyResponseHeaders( |
| 1107 1, std::move(headers_with_status_text), false)); |
| 1108 AddRead(reply); |
| 1109 |
| 1110 SpdySerializedFrame body( |
| 1111 spdy_util_.ConstructSpdyDataFrame(1, kPostBody, kPostBodyLength, true)); |
| 1112 AddRead(body); |
| 1113 |
| 1114 AddReadEOF(); |
| 1115 |
| 1116 SequencedSocketData data(GetReads(), GetNumReads(), GetWrites(), |
| 1117 GetNumWrites()); |
| 1118 MockConnect connect_data(SYNCHRONOUS, OK); |
| 1119 data.set_connect_data(connect_data); |
| 1120 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 1121 |
| 1122 AddSSLSocketData(); |
| 1123 |
| 1124 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession()); |
| 1125 |
| 1126 base::WeakPtr<SpdyStream> stream = CreateStreamSynchronously( |
| 1127 SPDY_REQUEST_RESPONSE_STREAM, session, url_, LOWEST, NetLogWithSource()); |
| 1128 ASSERT_TRUE(stream); |
| 1129 |
| 1130 StreamDelegateDoNothing delegate(stream); |
| 1131 stream->SetDelegate(&delegate); |
| 1132 |
| 1133 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty()); |
| 1134 |
| 1135 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); |
| 1136 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers), |
| 1137 NO_MORE_DATA_TO_SEND)); |
| 1138 EXPECT_EQ(kDefaultUrl, stream->GetUrlFromHeaders().spec()); |
| 1139 |
| 1140 EXPECT_THAT(delegate.WaitForClose(), IsOk()); |
| 1141 EXPECT_EQ("200 Some random extra text describing status", |
| 1142 delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); |
| 1143 EXPECT_EQ(std::string(kPostBody, kPostBodyLength), |
| 1144 delegate.TakeReceivedData()); |
| 1145 |
| 1146 EXPECT_TRUE(data.AllWriteDataConsumed()); |
| 1147 EXPECT_TRUE(data.AllReadDataConsumed()); |
| 1148 } |
| 1149 |
| 1098 // Call IncreaseSendWindowSize on a stream with a large enough delta to overflow | 1150 // Call IncreaseSendWindowSize on a stream with a large enough delta to overflow |
| 1099 // an int32_t. The SpdyStream should handle that case gracefully. | 1151 // an int32_t. The SpdyStream should handle that case gracefully. |
| 1100 TEST_F(SpdyStreamTest, IncreaseSendWindowSizeOverflow) { | 1152 TEST_F(SpdyStreamTest, IncreaseSendWindowSizeOverflow) { |
| 1101 SpdySerializedFrame req(spdy_util_.ConstructSpdyPost( | 1153 SpdySerializedFrame req(spdy_util_.ConstructSpdyPost( |
| 1102 kDefaultUrl, 1, kPostBodyLength, LOWEST, nullptr, 0)); | 1154 kDefaultUrl, 1, kPostBodyLength, LOWEST, nullptr, 0)); |
| 1103 AddWrite(req); | 1155 AddWrite(req); |
| 1104 | 1156 |
| 1105 AddReadPause(); | 1157 AddReadPause(); |
| 1106 | 1158 |
| 1107 // Triggered by the overflowing call to IncreaseSendWindowSize | 1159 // Triggered by the overflowing call to IncreaseSendWindowSize |
| (...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1403 EXPECT_EQ(response_len, stream->raw_received_bytes()); | 1455 EXPECT_EQ(response_len, stream->raw_received_bytes()); |
| 1404 | 1456 |
| 1405 // FIN | 1457 // FIN |
| 1406 data.Resume(); | 1458 data.Resume(); |
| 1407 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); | 1459 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); |
| 1408 } | 1460 } |
| 1409 | 1461 |
| 1410 } // namespace test | 1462 } // namespace test |
| 1411 | 1463 |
| 1412 } // namespace net | 1464 } // namespace net |
| OLD | NEW |