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 #include <cstddef> | 8 #include <cstddef> |
9 #include <limits> | 9 #include <limits> |
10 #include <string> | 10 #include <string> |
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
309 SpdySession::GetDefaultInitialWindowSize(kProtoSPDY31), | 309 SpdySession::GetDefaultInitialWindowSize(kProtoSPDY31), |
310 BoundNetLog()); | 310 BoundNetLog()); |
311 stream.set_stream_id(2); | 311 stream.set_stream_id(2); |
312 EXPECT_FALSE(stream.HasUrlFromHeaders()); | 312 EXPECT_FALSE(stream.HasUrlFromHeaders()); |
313 | 313 |
314 // Set required request headers. | 314 // Set required request headers. |
315 SpdyHeaderBlock request_headers; | 315 SpdyHeaderBlock request_headers; |
316 spdy_util_.AddUrlToHeaderBlock(kStreamUrl, &request_headers); | 316 spdy_util_.AddUrlToHeaderBlock(kStreamUrl, &request_headers); |
317 stream.OnPushPromiseHeadersReceived(request_headers); | 317 stream.OnPushPromiseHeadersReceived(request_headers); |
318 | 318 |
| 319 base::Time response_time = base::Time::Now(); |
| 320 base::TimeTicks first_byte_time = base::TimeTicks::Now(); |
319 // Send some basic response headers. | 321 // Send some basic response headers. |
320 SpdyHeaderBlock response; | 322 SpdyHeaderBlock response; |
321 response[spdy_util_.GetStatusKey()] = "200"; | 323 response[spdy_util_.GetStatusKey()] = "200"; |
322 response[spdy_util_.GetVersionKey()] = "OK"; | 324 response[spdy_util_.GetVersionKey()] = "OK"; |
323 stream.OnInitialResponseHeadersReceived( | 325 stream.OnInitialResponseHeadersReceived(response, response_time, |
324 response, base::Time::Now(), base::TimeTicks::Now()); | 326 first_byte_time); |
325 | 327 |
326 // And some more headers. | 328 // And some more headers. |
327 // TODO(baranovich): not valid for HTTP 2. | 329 // TODO(baranovich): not valid for HTTP 2. |
328 SpdyHeaderBlock headers; | 330 SpdyHeaderBlock headers; |
329 headers["alpha"] = "beta"; | 331 headers["alpha"] = "beta"; |
330 stream.OnAdditionalResponseHeadersReceived(headers); | 332 stream.OnAdditionalResponseHeadersReceived(headers); |
331 | 333 |
332 EXPECT_TRUE(stream.HasUrlFromHeaders()); | 334 EXPECT_TRUE(stream.HasUrlFromHeaders()); |
333 EXPECT_EQ(kStreamUrl, stream.GetUrlFromHeaders().spec()); | 335 EXPECT_EQ(kStreamUrl, stream.GetUrlFromHeaders().spec()); |
334 | 336 |
335 StreamDelegateDoNothing delegate(stream.GetWeakPtr()); | 337 StreamDelegateDoNothing delegate(stream.GetWeakPtr()); |
336 stream.SetDelegate(&delegate); | 338 stream.SetDelegate(&delegate); |
337 | 339 |
| 340 LoadTimingInfo load_timing_info; |
| 341 EXPECT_TRUE(stream.GetLoadTimingInfo(&load_timing_info)); |
| 342 EXPECT_EQ(first_byte_time, load_timing_info.push_start); |
| 343 EXPECT_TRUE(load_timing_info.push_end.is_null()); |
| 344 |
| 345 stream.OnDataReceived(nullptr); |
| 346 LoadTimingInfo load_timing_info2; |
| 347 EXPECT_TRUE(stream.GetLoadTimingInfo(&load_timing_info2)); |
| 348 EXPECT_FALSE(load_timing_info2.push_end.is_null()); |
| 349 |
338 base::RunLoop().RunUntilIdle(); | 350 base::RunLoop().RunUntilIdle(); |
339 | 351 |
340 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); | 352 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); |
341 EXPECT_EQ("beta", delegate.GetResponseHeaderValue("alpha")); | 353 EXPECT_EQ("beta", delegate.GetResponseHeaderValue("alpha")); |
342 | 354 |
343 EXPECT_TRUE(spdy_session == NULL); | 355 EXPECT_TRUE(spdy_session == NULL); |
344 } | 356 } |
345 | 357 |
346 TEST_P(SpdyStreamTest, StreamError) { | 358 TEST_P(SpdyStreamTest, StreamError) { |
347 GURL url(kStreamUrl); | 359 GURL url(kStreamUrl); |
(...skipping 781 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1129 EXPECT_EQ(response_len, stream->raw_received_bytes()); | 1141 EXPECT_EQ(response_len, stream->raw_received_bytes()); |
1130 | 1142 |
1131 // FIN | 1143 // FIN |
1132 data.Resume(); | 1144 data.Resume(); |
1133 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); | 1145 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); |
1134 } | 1146 } |
1135 | 1147 |
1136 } // namespace test | 1148 } // namespace test |
1137 | 1149 |
1138 } // namespace net | 1150 } // namespace net |
OLD | NEW |