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 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
161 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession()); | 161 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession()); |
162 | 162 |
163 base::WeakPtr<SpdyStream> stream = | 163 base::WeakPtr<SpdyStream> stream = |
164 CreateStreamSynchronously( | 164 CreateStreamSynchronously( |
165 SPDY_BIDIRECTIONAL_STREAM, session, url, LOWEST, BoundNetLog()); | 165 SPDY_BIDIRECTIONAL_STREAM, session, url, LOWEST, BoundNetLog()); |
166 ASSERT_TRUE(stream); | 166 ASSERT_TRUE(stream); |
167 | 167 |
168 StreamDelegateSendImmediate delegate(stream, kPostBodyStringPiece); | 168 StreamDelegateSendImmediate delegate(stream, kPostBodyStringPiece); |
169 stream->SetDelegate(&delegate); | 169 stream->SetDelegate(&delegate); |
170 | 170 |
171 EXPECT_FALSE(stream->HasUrlFromHeaders()); | 171 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty()); |
172 | 172 |
173 SpdyHeaderBlock headers( | 173 SpdyHeaderBlock headers( |
174 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength)); | 174 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength)); |
175 EXPECT_EQ(ERR_IO_PENDING, | 175 EXPECT_EQ(ERR_IO_PENDING, |
176 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); | 176 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); |
177 EXPECT_TRUE(stream->HasUrlFromHeaders()); | |
178 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); | 177 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); |
179 | 178 |
180 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); | 179 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); |
181 | 180 |
182 EXPECT_TRUE(delegate.send_headers_completed()); | 181 EXPECT_TRUE(delegate.send_headers_completed()); |
183 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); | 182 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); |
184 EXPECT_EQ(std::string(kPostBody, kPostBodyLength), | 183 EXPECT_EQ(std::string(kPostBody, kPostBodyLength), |
185 delegate.TakeReceivedData()); | 184 delegate.TakeReceivedData()); |
186 EXPECT_TRUE(data.AllWriteDataConsumed()); | 185 EXPECT_TRUE(data.AllWriteDataConsumed()); |
187 } | 186 } |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
241 | 240 |
242 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession()); | 241 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession()); |
243 | 242 |
244 base::WeakPtr<SpdyStream> stream = CreateStreamSynchronously( | 243 base::WeakPtr<SpdyStream> stream = CreateStreamSynchronously( |
245 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); | 244 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); |
246 ASSERT_TRUE(stream); | 245 ASSERT_TRUE(stream); |
247 | 246 |
248 StreamDelegateWithTrailers delegate(stream, kPostBodyStringPiece); | 247 StreamDelegateWithTrailers delegate(stream, kPostBodyStringPiece); |
249 stream->SetDelegate(&delegate); | 248 stream->SetDelegate(&delegate); |
250 | 249 |
251 EXPECT_FALSE(stream->HasUrlFromHeaders()); | 250 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty()); |
252 | 251 |
253 SpdyHeaderBlock headers( | 252 SpdyHeaderBlock headers( |
254 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength)); | 253 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength)); |
255 EXPECT_EQ(ERR_IO_PENDING, | 254 EXPECT_EQ(ERR_IO_PENDING, |
256 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); | 255 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); |
257 EXPECT_TRUE(stream->HasUrlFromHeaders()); | |
258 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); | 256 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); |
259 | 257 |
260 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); | 258 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); |
261 | 259 |
262 EXPECT_TRUE(delegate.send_headers_completed()); | 260 EXPECT_TRUE(delegate.send_headers_completed()); |
263 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); | 261 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); |
264 const SpdyHeaderBlock& received_trailers = delegate.trailers(); | 262 const SpdyHeaderBlock& received_trailers = delegate.trailers(); |
265 SpdyHeaderBlock::const_iterator it = received_trailers.find("foo"); | 263 SpdyHeaderBlock::const_iterator it = received_trailers.find("foo"); |
266 EXPECT_EQ("bar", it->second); | 264 EXPECT_EQ("bar", it->second); |
267 EXPECT_EQ(std::string(kPostBody, kPostBodyLength), | 265 EXPECT_EQ(std::string(kPostBody, kPostBodyLength), |
(...skipping 15 matching lines...) Expand all Loading... |
283 | 281 |
284 // Conjure up a stream. | 282 // Conjure up a stream. |
285 SpdyStreamRequest stream_request; | 283 SpdyStreamRequest stream_request; |
286 int result = stream_request.StartRequest(SPDY_PUSH_STREAM, spdy_session, | 284 int result = stream_request.StartRequest(SPDY_PUSH_STREAM, spdy_session, |
287 GURL(), DEFAULT_PRIORITY, | 285 GURL(), DEFAULT_PRIORITY, |
288 BoundNetLog(), CompletionCallback()); | 286 BoundNetLog(), CompletionCallback()); |
289 ASSERT_THAT(result, IsOk()); | 287 ASSERT_THAT(result, IsOk()); |
290 base::WeakPtr<SpdyStream> stream = stream_request.ReleaseStream(); | 288 base::WeakPtr<SpdyStream> stream = stream_request.ReleaseStream(); |
291 ActivatePushStream(spdy_session.get(), stream.get()); | 289 ActivatePushStream(spdy_session.get(), stream.get()); |
292 | 290 |
293 EXPECT_FALSE(stream->HasUrlFromHeaders()); | 291 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty()); |
294 | 292 |
295 // Set required request headers. | 293 // Set required request headers. |
296 SpdyHeaderBlock request_headers; | 294 SpdyHeaderBlock request_headers; |
297 spdy_util_.AddUrlToHeaderBlock(kStreamUrl, &request_headers); | 295 spdy_util_.AddUrlToHeaderBlock(kStreamUrl, &request_headers); |
298 stream->OnPushPromiseHeadersReceived(request_headers); | 296 stream->OnPushPromiseHeadersReceived(request_headers); |
299 | 297 |
300 base::Time response_time = base::Time::Now(); | 298 base::Time response_time = base::Time::Now(); |
301 base::TimeTicks first_byte_time = base::TimeTicks::Now(); | 299 base::TimeTicks first_byte_time = base::TimeTicks::Now(); |
302 // Send some basic response headers. | 300 // Send some basic response headers. |
303 SpdyHeaderBlock response; | 301 SpdyHeaderBlock response; |
304 response[spdy_util_.GetStatusKey()] = "200"; | 302 response[spdy_util_.GetStatusKey()] = "200"; |
305 stream->OnInitialResponseHeadersReceived(response, response_time, | 303 stream->OnInitialResponseHeadersReceived(response, response_time, |
306 first_byte_time); | 304 first_byte_time); |
307 | 305 |
308 // And some more headers. | 306 // And some more headers. |
309 // TODO(baranovich): not valid for HTTP 2. | 307 // TODO(baranovich): not valid for HTTP 2. |
310 SpdyHeaderBlock headers; | 308 SpdyHeaderBlock headers; |
311 headers["alpha"] = "beta"; | 309 headers["alpha"] = "beta"; |
312 stream->OnAdditionalResponseHeadersReceived(headers); | 310 stream->OnAdditionalResponseHeadersReceived(headers); |
313 | 311 |
314 EXPECT_TRUE(stream->HasUrlFromHeaders()); | |
315 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); | 312 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); |
316 | 313 |
317 StreamDelegateDoNothing delegate(stream->GetWeakPtr()); | 314 StreamDelegateDoNothing delegate(stream->GetWeakPtr()); |
318 stream->SetDelegate(&delegate); | 315 stream->SetDelegate(&delegate); |
319 | 316 |
320 LoadTimingInfo load_timing_info; | 317 LoadTimingInfo load_timing_info; |
321 EXPECT_TRUE(stream->GetLoadTimingInfo(&load_timing_info)); | 318 EXPECT_TRUE(stream->GetLoadTimingInfo(&load_timing_info)); |
322 EXPECT_EQ(first_byte_time, load_timing_info.push_start); | 319 EXPECT_EQ(first_byte_time, load_timing_info.push_start); |
323 EXPECT_TRUE(load_timing_info.push_end.is_null()); | 320 EXPECT_TRUE(load_timing_info.push_end.is_null()); |
324 | 321 |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
367 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession()); | 364 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession()); |
368 | 365 |
369 base::WeakPtr<SpdyStream> stream = | 366 base::WeakPtr<SpdyStream> stream = |
370 CreateStreamSynchronously( | 367 CreateStreamSynchronously( |
371 SPDY_BIDIRECTIONAL_STREAM, session, url, LOWEST, log.bound()); | 368 SPDY_BIDIRECTIONAL_STREAM, session, url, LOWEST, log.bound()); |
372 ASSERT_TRUE(stream); | 369 ASSERT_TRUE(stream); |
373 | 370 |
374 StreamDelegateSendImmediate delegate(stream, kPostBodyStringPiece); | 371 StreamDelegateSendImmediate delegate(stream, kPostBodyStringPiece); |
375 stream->SetDelegate(&delegate); | 372 stream->SetDelegate(&delegate); |
376 | 373 |
377 EXPECT_FALSE(stream->HasUrlFromHeaders()); | 374 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty()); |
378 | 375 |
379 SpdyHeaderBlock headers( | 376 SpdyHeaderBlock headers( |
380 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength)); | 377 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength)); |
381 EXPECT_EQ(ERR_IO_PENDING, | 378 EXPECT_EQ(ERR_IO_PENDING, |
382 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); | 379 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); |
383 EXPECT_TRUE(stream->HasUrlFromHeaders()); | |
384 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); | 380 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); |
385 | 381 |
386 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); | 382 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); |
387 | 383 |
388 const SpdyStreamId stream_id = delegate.stream_id(); | 384 const SpdyStreamId stream_id = delegate.stream_id(); |
389 | 385 |
390 EXPECT_TRUE(delegate.send_headers_completed()); | 386 EXPECT_TRUE(delegate.send_headers_completed()); |
391 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); | 387 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); |
392 EXPECT_EQ(std::string(kPostBody, kPostBodyLength), | 388 EXPECT_EQ(std::string(kPostBody, kPostBodyLength), |
393 delegate.TakeReceivedData()); | 389 delegate.TakeReceivedData()); |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
443 | 439 |
444 base::WeakPtr<SpdyStream> stream = | 440 base::WeakPtr<SpdyStream> stream = |
445 CreateStreamSynchronously( | 441 CreateStreamSynchronously( |
446 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); | 442 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); |
447 ASSERT_TRUE(stream); | 443 ASSERT_TRUE(stream); |
448 | 444 |
449 std::string body_data(3 * kMaxSpdyFrameChunkSize, 'x'); | 445 std::string body_data(3 * kMaxSpdyFrameChunkSize, 'x'); |
450 StreamDelegateWithBody delegate(stream, body_data); | 446 StreamDelegateWithBody delegate(stream, body_data); |
451 stream->SetDelegate(&delegate); | 447 stream->SetDelegate(&delegate); |
452 | 448 |
453 EXPECT_FALSE(stream->HasUrlFromHeaders()); | 449 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty()); |
454 | 450 |
455 SpdyHeaderBlock headers( | 451 SpdyHeaderBlock headers( |
456 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength)); | 452 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength)); |
457 EXPECT_EQ(ERR_IO_PENDING, | 453 EXPECT_EQ(ERR_IO_PENDING, |
458 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); | 454 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); |
459 EXPECT_TRUE(stream->HasUrlFromHeaders()); | |
460 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); | 455 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); |
461 | 456 |
462 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); | 457 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); |
463 | 458 |
464 EXPECT_TRUE(delegate.send_headers_completed()); | 459 EXPECT_TRUE(delegate.send_headers_completed()); |
465 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); | 460 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); |
466 EXPECT_EQ(std::string(), delegate.TakeReceivedData()); | 461 EXPECT_EQ(std::string(), delegate.TakeReceivedData()); |
467 EXPECT_TRUE(data.AllWriteDataConsumed()); | 462 EXPECT_TRUE(data.AllWriteDataConsumed()); |
468 } | 463 } |
469 | 464 |
(...skipping 30 matching lines...) Expand all Loading... |
500 | 495 |
501 base::WeakPtr<SpdyStream> stream = | 496 base::WeakPtr<SpdyStream> stream = |
502 CreateStreamSynchronously( | 497 CreateStreamSynchronously( |
503 SPDY_BIDIRECTIONAL_STREAM, session, url, LOWEST, BoundNetLog()); | 498 SPDY_BIDIRECTIONAL_STREAM, session, url, LOWEST, BoundNetLog()); |
504 ASSERT_TRUE(stream); | 499 ASSERT_TRUE(stream); |
505 | 500 |
506 std::string body_data(3 * kMaxSpdyFrameChunkSize, 'x'); | 501 std::string body_data(3 * kMaxSpdyFrameChunkSize, 'x'); |
507 StreamDelegateSendImmediate delegate(stream, body_data); | 502 StreamDelegateSendImmediate delegate(stream, body_data); |
508 stream->SetDelegate(&delegate); | 503 stream->SetDelegate(&delegate); |
509 | 504 |
510 EXPECT_FALSE(stream->HasUrlFromHeaders()); | 505 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty()); |
511 | 506 |
512 SpdyHeaderBlock headers( | 507 SpdyHeaderBlock headers( |
513 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength)); | 508 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength)); |
514 EXPECT_EQ(ERR_IO_PENDING, | 509 EXPECT_EQ(ERR_IO_PENDING, |
515 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); | 510 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); |
516 EXPECT_TRUE(stream->HasUrlFromHeaders()); | |
517 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); | 511 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); |
518 | 512 |
519 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); | 513 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); |
520 | 514 |
521 EXPECT_TRUE(delegate.send_headers_completed()); | 515 EXPECT_TRUE(delegate.send_headers_completed()); |
522 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); | 516 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); |
523 EXPECT_EQ(std::string(), delegate.TakeReceivedData()); | 517 EXPECT_EQ(std::string(), delegate.TakeReceivedData()); |
524 EXPECT_TRUE(data.AllWriteDataConsumed()); | 518 EXPECT_TRUE(data.AllWriteDataConsumed()); |
525 } | 519 } |
526 | 520 |
(...skipping 27 matching lines...) Expand all Loading... |
554 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession()); | 548 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession()); |
555 | 549 |
556 base::WeakPtr<SpdyStream> stream = | 550 base::WeakPtr<SpdyStream> stream = |
557 CreateStreamSynchronously( | 551 CreateStreamSynchronously( |
558 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); | 552 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); |
559 ASSERT_TRUE(stream); | 553 ASSERT_TRUE(stream); |
560 | 554 |
561 StreamDelegateDoNothing delegate(stream); | 555 StreamDelegateDoNothing delegate(stream); |
562 stream->SetDelegate(&delegate); | 556 stream->SetDelegate(&delegate); |
563 | 557 |
564 EXPECT_FALSE(stream->HasUrlFromHeaders()); | 558 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty()); |
565 | 559 |
566 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kStreamUrl)); | 560 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kStreamUrl)); |
567 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers), | 561 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers), |
568 NO_MORE_DATA_TO_SEND)); | 562 NO_MORE_DATA_TO_SEND)); |
569 EXPECT_TRUE(stream->HasUrlFromHeaders()); | |
570 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); | 563 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); |
571 | 564 |
572 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_SPDY_PROTOCOL_ERROR)); | 565 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_SPDY_PROTOCOL_ERROR)); |
573 } | 566 } |
574 | 567 |
575 // Receiving a header with uppercase ASCII should result in a protocol | 568 // Receiving a header with uppercase ASCII should result in a protocol |
576 // error even for a push stream. | 569 // error even for a push stream. |
577 TEST_F(SpdyStreamTest, UpperCaseHeadersOnPush) { | 570 TEST_F(SpdyStreamTest, UpperCaseHeadersOnPush) { |
578 GURL url(kStreamUrl); | 571 GURL url(kStreamUrl); |
579 | 572 |
(...skipping 27 matching lines...) Expand all Loading... |
607 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession()); | 600 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession()); |
608 | 601 |
609 base::WeakPtr<SpdyStream> stream = | 602 base::WeakPtr<SpdyStream> stream = |
610 CreateStreamSynchronously( | 603 CreateStreamSynchronously( |
611 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); | 604 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); |
612 ASSERT_TRUE(stream); | 605 ASSERT_TRUE(stream); |
613 | 606 |
614 StreamDelegateDoNothing delegate(stream); | 607 StreamDelegateDoNothing delegate(stream); |
615 stream->SetDelegate(&delegate); | 608 stream->SetDelegate(&delegate); |
616 | 609 |
617 EXPECT_FALSE(stream->HasUrlFromHeaders()); | 610 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty()); |
618 | 611 |
619 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kStreamUrl)); | 612 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kStreamUrl)); |
620 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers), | 613 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers), |
621 NO_MORE_DATA_TO_SEND)); | 614 NO_MORE_DATA_TO_SEND)); |
622 EXPECT_TRUE(stream->HasUrlFromHeaders()); | |
623 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); | 615 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); |
624 | 616 |
625 data.RunUntilPaused(); | 617 data.RunUntilPaused(); |
626 | 618 |
627 base::WeakPtr<SpdyStream> push_stream; | 619 base::WeakPtr<SpdyStream> push_stream; |
628 EXPECT_THAT(session->GetPushStream(url, &push_stream, BoundNetLog()), IsOk()); | 620 EXPECT_THAT(session->GetPushStream(url, &push_stream, BoundNetLog()), IsOk()); |
629 EXPECT_FALSE(push_stream); | 621 EXPECT_FALSE(push_stream); |
630 | 622 |
631 data.Resume(); | 623 data.Resume(); |
632 | 624 |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
675 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession()); | 667 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession()); |
676 | 668 |
677 base::WeakPtr<SpdyStream> stream = | 669 base::WeakPtr<SpdyStream> stream = |
678 CreateStreamSynchronously( | 670 CreateStreamSynchronously( |
679 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); | 671 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); |
680 ASSERT_TRUE(stream); | 672 ASSERT_TRUE(stream); |
681 | 673 |
682 StreamDelegateDoNothing delegate(stream); | 674 StreamDelegateDoNothing delegate(stream); |
683 stream->SetDelegate(&delegate); | 675 stream->SetDelegate(&delegate); |
684 | 676 |
685 EXPECT_FALSE(stream->HasUrlFromHeaders()); | 677 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty()); |
686 | 678 |
687 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kStreamUrl)); | 679 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kStreamUrl)); |
688 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers), | 680 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers), |
689 NO_MORE_DATA_TO_SEND)); | 681 NO_MORE_DATA_TO_SEND)); |
690 EXPECT_TRUE(stream->HasUrlFromHeaders()); | |
691 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); | 682 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); |
692 | 683 |
693 data.RunUntilPaused(); | 684 data.RunUntilPaused(); |
694 | 685 |
695 base::WeakPtr<SpdyStream> push_stream; | 686 base::WeakPtr<SpdyStream> push_stream; |
696 EXPECT_THAT(session->GetPushStream(url, &push_stream, BoundNetLog()), IsOk()); | 687 EXPECT_THAT(session->GetPushStream(url, &push_stream, BoundNetLog()), IsOk()); |
697 EXPECT_TRUE(push_stream); | 688 EXPECT_TRUE(push_stream); |
698 | 689 |
699 data.Resume(); | 690 data.Resume(); |
700 data.RunUntilPaused(); | 691 data.RunUntilPaused(); |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
749 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession()); | 740 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession()); |
750 | 741 |
751 base::WeakPtr<SpdyStream> stream = | 742 base::WeakPtr<SpdyStream> stream = |
752 CreateStreamSynchronously( | 743 CreateStreamSynchronously( |
753 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); | 744 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); |
754 ASSERT_TRUE(stream); | 745 ASSERT_TRUE(stream); |
755 | 746 |
756 StreamDelegateDoNothing delegate(stream); | 747 StreamDelegateDoNothing delegate(stream); |
757 stream->SetDelegate(&delegate); | 748 stream->SetDelegate(&delegate); |
758 | 749 |
759 EXPECT_FALSE(stream->HasUrlFromHeaders()); | 750 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty()); |
760 | 751 |
761 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kStreamUrl)); | 752 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kStreamUrl)); |
762 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers), | 753 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers), |
763 NO_MORE_DATA_TO_SEND)); | 754 NO_MORE_DATA_TO_SEND)); |
764 EXPECT_TRUE(stream->HasUrlFromHeaders()); | |
765 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); | 755 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); |
766 | 756 |
767 data.RunUntilPaused(); | 757 data.RunUntilPaused(); |
768 | 758 |
769 base::WeakPtr<SpdyStream> push_stream; | 759 base::WeakPtr<SpdyStream> push_stream; |
770 EXPECT_THAT(session->GetPushStream(url, &push_stream, BoundNetLog()), IsOk()); | 760 EXPECT_THAT(session->GetPushStream(url, &push_stream, BoundNetLog()), IsOk()); |
771 EXPECT_TRUE(push_stream); | 761 EXPECT_TRUE(push_stream); |
772 | 762 |
773 data.Resume(); | 763 data.Resume(); |
774 data.RunUntilPaused(); | 764 data.RunUntilPaused(); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
815 CreateStreamSynchronously( | 805 CreateStreamSynchronously( |
816 SPDY_BIDIRECTIONAL_STREAM, session, url, LOWEST, log.bound()); | 806 SPDY_BIDIRECTIONAL_STREAM, session, url, LOWEST, log.bound()); |
817 ASSERT_TRUE(stream); | 807 ASSERT_TRUE(stream); |
818 StreamDelegateSendImmediate delegate(stream, kPostBodyStringPiece); | 808 StreamDelegateSendImmediate delegate(stream, kPostBodyStringPiece); |
819 stream->SetDelegate(&delegate); | 809 stream->SetDelegate(&delegate); |
820 | 810 |
821 SpdyHeaderBlock headers( | 811 SpdyHeaderBlock headers( |
822 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength)); | 812 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength)); |
823 EXPECT_EQ(ERR_IO_PENDING, | 813 EXPECT_EQ(ERR_IO_PENDING, |
824 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); | 814 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); |
825 EXPECT_TRUE(stream->HasUrlFromHeaders()); | |
826 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); | 815 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); |
827 | 816 |
828 data.RunUntilPaused(); | 817 data.RunUntilPaused(); |
829 | 818 |
830 int32_t old_send_window_size = stream->send_window_size(); | 819 int32_t old_send_window_size = stream->send_window_size(); |
831 ASSERT_GT(old_send_window_size, 0); | 820 ASSERT_GT(old_send_window_size, 0); |
832 int32_t delta_window_size = | 821 int32_t delta_window_size = |
833 std::numeric_limits<int32_t>::max() - old_send_window_size + 1; | 822 std::numeric_limits<int32_t>::max() - old_send_window_size + 1; |
834 stream->IncreaseSendWindowSize(delta_window_size); | 823 stream->IncreaseSendWindowSize(delta_window_size); |
835 EXPECT_EQ(NULL, stream.get()); | 824 EXPECT_EQ(NULL, stream.get()); |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
900 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession()); | 889 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession()); |
901 | 890 |
902 base::WeakPtr<SpdyStream> stream = | 891 base::WeakPtr<SpdyStream> stream = |
903 CreateStreamSynchronously( | 892 CreateStreamSynchronously( |
904 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); | 893 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); |
905 ASSERT_TRUE(stream); | 894 ASSERT_TRUE(stream); |
906 | 895 |
907 StreamDelegateWithBody delegate(stream, kPostBodyStringPiece); | 896 StreamDelegateWithBody delegate(stream, kPostBodyStringPiece); |
908 stream->SetDelegate(&delegate); | 897 stream->SetDelegate(&delegate); |
909 | 898 |
910 EXPECT_FALSE(stream->HasUrlFromHeaders()); | 899 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty()); |
911 EXPECT_FALSE(stream->send_stalled_by_flow_control()); | 900 EXPECT_FALSE(stream->send_stalled_by_flow_control()); |
912 | 901 |
913 SpdyHeaderBlock headers( | 902 SpdyHeaderBlock headers( |
914 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength)); | 903 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength)); |
915 EXPECT_EQ(ERR_IO_PENDING, | 904 EXPECT_EQ(ERR_IO_PENDING, |
916 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); | 905 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); |
917 EXPECT_TRUE(stream->HasUrlFromHeaders()); | |
918 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); | 906 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); |
919 | 907 |
920 StallStream(stream); | 908 StallStream(stream); |
921 | 909 |
922 base::RunLoop().RunUntilIdle(); | 910 base::RunLoop().RunUntilIdle(); |
923 | 911 |
924 EXPECT_TRUE(stream->send_stalled_by_flow_control()); | 912 EXPECT_TRUE(stream->send_stalled_by_flow_control()); |
925 | 913 |
926 unstall_function.Run(stream, kPostBodyLength); | 914 unstall_function.Run(stream, kPostBodyLength); |
927 | 915 |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
981 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession()); | 969 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession()); |
982 | 970 |
983 base::WeakPtr<SpdyStream> stream = | 971 base::WeakPtr<SpdyStream> stream = |
984 CreateStreamSynchronously( | 972 CreateStreamSynchronously( |
985 SPDY_BIDIRECTIONAL_STREAM, session, url, LOWEST, BoundNetLog()); | 973 SPDY_BIDIRECTIONAL_STREAM, session, url, LOWEST, BoundNetLog()); |
986 ASSERT_TRUE(stream); | 974 ASSERT_TRUE(stream); |
987 | 975 |
988 StreamDelegateSendImmediate delegate(stream, kPostBodyStringPiece); | 976 StreamDelegateSendImmediate delegate(stream, kPostBodyStringPiece); |
989 stream->SetDelegate(&delegate); | 977 stream->SetDelegate(&delegate); |
990 | 978 |
991 EXPECT_FALSE(stream->HasUrlFromHeaders()); | 979 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty()); |
992 | 980 |
993 SpdyHeaderBlock headers( | 981 SpdyHeaderBlock headers( |
994 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength)); | 982 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength)); |
995 EXPECT_EQ(ERR_IO_PENDING, | 983 EXPECT_EQ(ERR_IO_PENDING, |
996 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); | 984 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); |
997 EXPECT_TRUE(stream->HasUrlFromHeaders()); | |
998 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); | 985 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); |
999 | 986 |
1000 data.RunUntilPaused(); | 987 data.RunUntilPaused(); |
1001 | 988 |
1002 EXPECT_FALSE(stream->send_stalled_by_flow_control()); | 989 EXPECT_FALSE(stream->send_stalled_by_flow_control()); |
1003 | 990 |
1004 StallStream(stream); | 991 StallStream(stream); |
1005 | 992 |
1006 data.Resume(); | 993 data.Resume(); |
1007 base::RunLoop().RunUntilIdle(); | 994 base::RunLoop().RunUntilIdle(); |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1064 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession()); | 1051 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession()); |
1065 | 1052 |
1066 base::WeakPtr<SpdyStream> stream = | 1053 base::WeakPtr<SpdyStream> stream = |
1067 CreateStreamSynchronously( | 1054 CreateStreamSynchronously( |
1068 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); | 1055 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); |
1069 ASSERT_TRUE(stream); | 1056 ASSERT_TRUE(stream); |
1070 | 1057 |
1071 StreamDelegateDoNothing delegate(stream); | 1058 StreamDelegateDoNothing delegate(stream); |
1072 stream->SetDelegate(&delegate); | 1059 stream->SetDelegate(&delegate); |
1073 | 1060 |
1074 EXPECT_FALSE(stream->HasUrlFromHeaders()); | 1061 EXPECT_TRUE(stream->GetUrlFromHeaders().is_empty()); |
1075 | 1062 |
1076 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kStreamUrl)); | 1063 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kStreamUrl)); |
1077 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers), | 1064 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers), |
1078 NO_MORE_DATA_TO_SEND)); | 1065 NO_MORE_DATA_TO_SEND)); |
1079 EXPECT_TRUE(stream->HasUrlFromHeaders()); | |
1080 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); | 1066 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); |
1081 | 1067 |
1082 int64_t reply_frame_len = reply.size(); | 1068 int64_t reply_frame_len = reply.size(); |
1083 int64_t data_header_len = SpdyConstants::GetDataFrameMinimumSize(HTTP2); | 1069 int64_t data_header_len = SpdyConstants::GetDataFrameMinimumSize(HTTP2); |
1084 int64_t data_frame_len = data_header_len + kPostBodyLength; | 1070 int64_t data_frame_len = data_header_len + kPostBodyLength; |
1085 int64_t response_len = reply_frame_len + data_frame_len; | 1071 int64_t response_len = reply_frame_len + data_frame_len; |
1086 | 1072 |
1087 EXPECT_EQ(0, stream->raw_received_bytes()); | 1073 EXPECT_EQ(0, stream->raw_received_bytes()); |
1088 | 1074 |
1089 // SYN | 1075 // SYN |
(...skipping 11 matching lines...) Expand all Loading... |
1101 EXPECT_EQ(response_len, stream->raw_received_bytes()); | 1087 EXPECT_EQ(response_len, stream->raw_received_bytes()); |
1102 | 1088 |
1103 // FIN | 1089 // FIN |
1104 data.Resume(); | 1090 data.Resume(); |
1105 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); | 1091 EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_CONNECTION_CLOSED)); |
1106 } | 1092 } |
1107 | 1093 |
1108 } // namespace test | 1094 } // namespace test |
1109 | 1095 |
1110 } // namespace net | 1096 } // namespace net |
OLD | NEW |