| 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 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 192 base::WeakPtr<SpdyStream> stream = | 192 base::WeakPtr<SpdyStream> stream = |
| 193 CreateStreamSynchronously( | 193 CreateStreamSynchronously( |
| 194 SPDY_BIDIRECTIONAL_STREAM, session, url, LOWEST, BoundNetLog()); | 194 SPDY_BIDIRECTIONAL_STREAM, session, url, LOWEST, BoundNetLog()); |
| 195 ASSERT_TRUE(stream); | 195 ASSERT_TRUE(stream); |
| 196 | 196 |
| 197 StreamDelegateSendImmediate delegate(stream, kPostBodyStringPiece); | 197 StreamDelegateSendImmediate delegate(stream, kPostBodyStringPiece); |
| 198 stream->SetDelegate(&delegate); | 198 stream->SetDelegate(&delegate); |
| 199 | 199 |
| 200 EXPECT_FALSE(stream->HasUrlFromHeaders()); | 200 EXPECT_FALSE(stream->HasUrlFromHeaders()); |
| 201 | 201 |
| 202 std::unique_ptr<SpdyHeaderBlock> headers( | 202 std::unique_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock( |
| 203 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength)); | 203 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength))); |
| 204 EXPECT_EQ(ERR_IO_PENDING, | 204 EXPECT_EQ(ERR_IO_PENDING, |
| 205 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); | 205 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); |
| 206 EXPECT_TRUE(stream->HasUrlFromHeaders()); | 206 EXPECT_TRUE(stream->HasUrlFromHeaders()); |
| 207 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); | 207 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); |
| 208 | 208 |
| 209 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); | 209 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); |
| 210 | 210 |
| 211 EXPECT_TRUE(delegate.send_headers_completed()); | 211 EXPECT_TRUE(delegate.send_headers_completed()); |
| 212 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); | 212 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); |
| 213 EXPECT_EQ(std::string(kPostBody, kPostBodyLength), | 213 EXPECT_EQ(std::string(kPostBody, kPostBodyLength), |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 250 spdy_util_.ConstructSpdyPostSynReply(NULL, 0)); | 250 spdy_util_.ConstructSpdyPostSynReply(NULL, 0)); |
| 251 AddRead(*resp); | 251 AddRead(*resp); |
| 252 | 252 |
| 253 std::unique_ptr<SpdySerializedFrame> echo( | 253 std::unique_ptr<SpdySerializedFrame> echo( |
| 254 spdy_util_.ConstructSpdyBodyFrame(1, kPostBody, kPostBodyLength, false)); | 254 spdy_util_.ConstructSpdyBodyFrame(1, kPostBody, kPostBodyLength, false)); |
| 255 AddRead(*echo); | 255 AddRead(*echo); |
| 256 | 256 |
| 257 SpdyHeaderBlock late_headers; | 257 SpdyHeaderBlock late_headers; |
| 258 late_headers["foo"] = "bar"; | 258 late_headers["foo"] = "bar"; |
| 259 std::unique_ptr<SpdySerializedFrame> trailers( | 259 std::unique_ptr<SpdySerializedFrame> trailers( |
| 260 spdy_util_.ConstructSpdyResponseHeaders(1, late_headers, false)); | 260 spdy_util_.ConstructSpdyResponseHeaders(1, std::move(late_headers), |
| 261 false)); |
| 261 AddRead(*trailers); | 262 AddRead(*trailers); |
| 262 | 263 |
| 263 AddReadEOF(); | 264 AddReadEOF(); |
| 264 | 265 |
| 265 SequencedSocketData data(GetReads(), GetNumReads(), GetWrites(), | 266 SequencedSocketData data(GetReads(), GetNumReads(), GetWrites(), |
| 266 GetNumWrites()); | 267 GetNumWrites()); |
| 267 MockConnect connect_data(SYNCHRONOUS, OK); | 268 MockConnect connect_data(SYNCHRONOUS, OK); |
| 268 data.set_connect_data(connect_data); | 269 data.set_connect_data(connect_data); |
| 269 | 270 |
| 270 session_deps_.socket_factory->AddSocketDataProvider(&data); | 271 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 271 | 272 |
| 272 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession()); | 273 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession()); |
| 273 | 274 |
| 274 base::WeakPtr<SpdyStream> stream = CreateStreamSynchronously( | 275 base::WeakPtr<SpdyStream> stream = CreateStreamSynchronously( |
| 275 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); | 276 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); |
| 276 ASSERT_TRUE(stream); | 277 ASSERT_TRUE(stream); |
| 277 | 278 |
| 278 StreamDelegateWithTrailers delegate(stream, kPostBodyStringPiece); | 279 StreamDelegateWithTrailers delegate(stream, kPostBodyStringPiece); |
| 279 stream->SetDelegate(&delegate); | 280 stream->SetDelegate(&delegate); |
| 280 | 281 |
| 281 EXPECT_FALSE(stream->HasUrlFromHeaders()); | 282 EXPECT_FALSE(stream->HasUrlFromHeaders()); |
| 282 | 283 |
| 283 std::unique_ptr<SpdyHeaderBlock> headers( | 284 std::unique_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock( |
| 284 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength)); | 285 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength))); |
| 285 EXPECT_EQ(ERR_IO_PENDING, | 286 EXPECT_EQ(ERR_IO_PENDING, |
| 286 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); | 287 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); |
| 287 EXPECT_TRUE(stream->HasUrlFromHeaders()); | 288 EXPECT_TRUE(stream->HasUrlFromHeaders()); |
| 288 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); | 289 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); |
| 289 | 290 |
| 290 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); | 291 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); |
| 291 | 292 |
| 292 EXPECT_TRUE(delegate.send_headers_completed()); | 293 EXPECT_TRUE(delegate.send_headers_completed()); |
| 293 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); | 294 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); |
| 294 const SpdyHeaderBlock& received_trailers = delegate.trailers(); | 295 const SpdyHeaderBlock& received_trailers = delegate.trailers(); |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 401 base::WeakPtr<SpdyStream> stream = | 402 base::WeakPtr<SpdyStream> stream = |
| 402 CreateStreamSynchronously( | 403 CreateStreamSynchronously( |
| 403 SPDY_BIDIRECTIONAL_STREAM, session, url, LOWEST, log.bound()); | 404 SPDY_BIDIRECTIONAL_STREAM, session, url, LOWEST, log.bound()); |
| 404 ASSERT_TRUE(stream); | 405 ASSERT_TRUE(stream); |
| 405 | 406 |
| 406 StreamDelegateSendImmediate delegate(stream, kPostBodyStringPiece); | 407 StreamDelegateSendImmediate delegate(stream, kPostBodyStringPiece); |
| 407 stream->SetDelegate(&delegate); | 408 stream->SetDelegate(&delegate); |
| 408 | 409 |
| 409 EXPECT_FALSE(stream->HasUrlFromHeaders()); | 410 EXPECT_FALSE(stream->HasUrlFromHeaders()); |
| 410 | 411 |
| 411 std::unique_ptr<SpdyHeaderBlock> headers( | 412 std::unique_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock( |
| 412 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength)); | 413 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength))); |
| 413 EXPECT_EQ(ERR_IO_PENDING, | 414 EXPECT_EQ(ERR_IO_PENDING, |
| 414 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); | 415 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); |
| 415 EXPECT_TRUE(stream->HasUrlFromHeaders()); | 416 EXPECT_TRUE(stream->HasUrlFromHeaders()); |
| 416 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); | 417 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); |
| 417 | 418 |
| 418 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); | 419 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); |
| 419 | 420 |
| 420 const SpdyStreamId stream_id = delegate.stream_id(); | 421 const SpdyStreamId stream_id = delegate.stream_id(); |
| 421 | 422 |
| 422 EXPECT_TRUE(delegate.send_headers_completed()); | 423 EXPECT_TRUE(delegate.send_headers_completed()); |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 479 CreateStreamSynchronously( | 480 CreateStreamSynchronously( |
| 480 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); | 481 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); |
| 481 ASSERT_TRUE(stream); | 482 ASSERT_TRUE(stream); |
| 482 | 483 |
| 483 std::string body_data(3 * kMaxSpdyFrameChunkSize, 'x'); | 484 std::string body_data(3 * kMaxSpdyFrameChunkSize, 'x'); |
| 484 StreamDelegateWithBody delegate(stream, body_data); | 485 StreamDelegateWithBody delegate(stream, body_data); |
| 485 stream->SetDelegate(&delegate); | 486 stream->SetDelegate(&delegate); |
| 486 | 487 |
| 487 EXPECT_FALSE(stream->HasUrlFromHeaders()); | 488 EXPECT_FALSE(stream->HasUrlFromHeaders()); |
| 488 | 489 |
| 489 std::unique_ptr<SpdyHeaderBlock> headers( | 490 std::unique_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock( |
| 490 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength)); | 491 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength))); |
| 491 EXPECT_EQ(ERR_IO_PENDING, | 492 EXPECT_EQ(ERR_IO_PENDING, |
| 492 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); | 493 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); |
| 493 EXPECT_TRUE(stream->HasUrlFromHeaders()); | 494 EXPECT_TRUE(stream->HasUrlFromHeaders()); |
| 494 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); | 495 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); |
| 495 | 496 |
| 496 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); | 497 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); |
| 497 | 498 |
| 498 EXPECT_TRUE(delegate.send_headers_completed()); | 499 EXPECT_TRUE(delegate.send_headers_completed()); |
| 499 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); | 500 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); |
| 500 EXPECT_EQ(std::string(), delegate.TakeReceivedData()); | 501 EXPECT_EQ(std::string(), delegate.TakeReceivedData()); |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 537 CreateStreamSynchronously( | 538 CreateStreamSynchronously( |
| 538 SPDY_BIDIRECTIONAL_STREAM, session, url, LOWEST, BoundNetLog()); | 539 SPDY_BIDIRECTIONAL_STREAM, session, url, LOWEST, BoundNetLog()); |
| 539 ASSERT_TRUE(stream); | 540 ASSERT_TRUE(stream); |
| 540 | 541 |
| 541 std::string body_data(3 * kMaxSpdyFrameChunkSize, 'x'); | 542 std::string body_data(3 * kMaxSpdyFrameChunkSize, 'x'); |
| 542 StreamDelegateSendImmediate delegate(stream, body_data); | 543 StreamDelegateSendImmediate delegate(stream, body_data); |
| 543 stream->SetDelegate(&delegate); | 544 stream->SetDelegate(&delegate); |
| 544 | 545 |
| 545 EXPECT_FALSE(stream->HasUrlFromHeaders()); | 546 EXPECT_FALSE(stream->HasUrlFromHeaders()); |
| 546 | 547 |
| 547 std::unique_ptr<SpdyHeaderBlock> headers( | 548 std::unique_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock( |
| 548 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength)); | 549 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength))); |
| 549 EXPECT_EQ(ERR_IO_PENDING, | 550 EXPECT_EQ(ERR_IO_PENDING, |
| 550 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); | 551 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); |
| 551 EXPECT_TRUE(stream->HasUrlFromHeaders()); | 552 EXPECT_TRUE(stream->HasUrlFromHeaders()); |
| 552 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); | 553 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); |
| 553 | 554 |
| 554 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); | 555 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); |
| 555 | 556 |
| 556 EXPECT_TRUE(delegate.send_headers_completed()); | 557 EXPECT_TRUE(delegate.send_headers_completed()); |
| 557 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); | 558 EXPECT_EQ("200", delegate.GetResponseHeaderValue(spdy_util_.GetStatusKey())); |
| 558 EXPECT_EQ(std::string(), delegate.TakeReceivedData()); | 559 EXPECT_EQ(std::string(), delegate.TakeReceivedData()); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 592 CreateStreamSynchronously( | 593 CreateStreamSynchronously( |
| 593 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); | 594 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); |
| 594 ASSERT_TRUE(stream); | 595 ASSERT_TRUE(stream); |
| 595 | 596 |
| 596 StreamDelegateDoNothing delegate(stream); | 597 StreamDelegateDoNothing delegate(stream); |
| 597 stream->SetDelegate(&delegate); | 598 stream->SetDelegate(&delegate); |
| 598 | 599 |
| 599 EXPECT_FALSE(stream->HasUrlFromHeaders()); | 600 EXPECT_FALSE(stream->HasUrlFromHeaders()); |
| 600 | 601 |
| 601 std::unique_ptr<SpdyHeaderBlock> headers( | 602 std::unique_ptr<SpdyHeaderBlock> headers( |
| 602 spdy_util_.ConstructGetHeaderBlock(kStreamUrl)); | 603 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kStreamUrl))); |
| 603 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers), | 604 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers), |
| 604 NO_MORE_DATA_TO_SEND)); | 605 NO_MORE_DATA_TO_SEND)); |
| 605 EXPECT_TRUE(stream->HasUrlFromHeaders()); | 606 EXPECT_TRUE(stream->HasUrlFromHeaders()); |
| 606 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); | 607 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); |
| 607 | 608 |
| 608 EXPECT_EQ(ERR_SPDY_PROTOCOL_ERROR, delegate.WaitForClose()); | 609 EXPECT_EQ(ERR_SPDY_PROTOCOL_ERROR, delegate.WaitForClose()); |
| 609 } | 610 } |
| 610 | 611 |
| 611 // Receiving a header with uppercase ASCII should result in a protocol | 612 // Receiving a header with uppercase ASCII should result in a protocol |
| 612 // error even for a push stream. | 613 // error even for a push stream. |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 647 CreateStreamSynchronously( | 648 CreateStreamSynchronously( |
| 648 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); | 649 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); |
| 649 ASSERT_TRUE(stream); | 650 ASSERT_TRUE(stream); |
| 650 | 651 |
| 651 StreamDelegateDoNothing delegate(stream); | 652 StreamDelegateDoNothing delegate(stream); |
| 652 stream->SetDelegate(&delegate); | 653 stream->SetDelegate(&delegate); |
| 653 | 654 |
| 654 EXPECT_FALSE(stream->HasUrlFromHeaders()); | 655 EXPECT_FALSE(stream->HasUrlFromHeaders()); |
| 655 | 656 |
| 656 std::unique_ptr<SpdyHeaderBlock> headers( | 657 std::unique_ptr<SpdyHeaderBlock> headers( |
| 657 spdy_util_.ConstructGetHeaderBlock(kStreamUrl)); | 658 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kStreamUrl))); |
| 658 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers), | 659 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers), |
| 659 NO_MORE_DATA_TO_SEND)); | 660 NO_MORE_DATA_TO_SEND)); |
| 660 EXPECT_TRUE(stream->HasUrlFromHeaders()); | 661 EXPECT_TRUE(stream->HasUrlFromHeaders()); |
| 661 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); | 662 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); |
| 662 | 663 |
| 663 data.RunUntilPaused(); | 664 data.RunUntilPaused(); |
| 664 | 665 |
| 665 base::WeakPtr<SpdyStream> push_stream; | 666 base::WeakPtr<SpdyStream> push_stream; |
| 666 EXPECT_EQ(OK, session->GetPushStream(url, &push_stream, BoundNetLog())); | 667 EXPECT_EQ(OK, session->GetPushStream(url, &push_stream, BoundNetLog())); |
| 667 EXPECT_FALSE(push_stream); | 668 EXPECT_FALSE(push_stream); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 686 | 687 |
| 687 std::unique_ptr<SpdySerializedFrame> push( | 688 std::unique_ptr<SpdySerializedFrame> push( |
| 688 spdy_util_.ConstructSpdyPush(NULL, 0, 2, 1, kStreamUrl)); | 689 spdy_util_.ConstructSpdyPush(NULL, 0, 2, 1, kStreamUrl)); |
| 689 AddRead(*push); | 690 AddRead(*push); |
| 690 | 691 |
| 691 AddReadPause(); | 692 AddReadPause(); |
| 692 | 693 |
| 693 SpdyHeaderBlock late_headers; | 694 SpdyHeaderBlock late_headers; |
| 694 late_headers["X-UpperCase"] = "yes"; | 695 late_headers["X-UpperCase"] = "yes"; |
| 695 std::unique_ptr<SpdySerializedFrame> headers_frame( | 696 std::unique_ptr<SpdySerializedFrame> headers_frame( |
| 696 spdy_util_.ConstructSpdyReply(2, late_headers)); | 697 spdy_util_.ConstructSpdyReply(2, std::move(late_headers))); |
| 697 AddRead(*headers_frame); | 698 AddRead(*headers_frame); |
| 698 | 699 |
| 699 AddWritePause(); | 700 AddWritePause(); |
| 700 | 701 |
| 701 std::unique_ptr<SpdySerializedFrame> rst( | 702 std::unique_ptr<SpdySerializedFrame> rst( |
| 702 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_PROTOCOL_ERROR)); | 703 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_PROTOCOL_ERROR)); |
| 703 AddWrite(*rst); | 704 AddWrite(*rst); |
| 704 | 705 |
| 705 AddReadEOF(); | 706 AddReadEOF(); |
| 706 | 707 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 717 CreateStreamSynchronously( | 718 CreateStreamSynchronously( |
| 718 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); | 719 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); |
| 719 ASSERT_TRUE(stream); | 720 ASSERT_TRUE(stream); |
| 720 | 721 |
| 721 StreamDelegateDoNothing delegate(stream); | 722 StreamDelegateDoNothing delegate(stream); |
| 722 stream->SetDelegate(&delegate); | 723 stream->SetDelegate(&delegate); |
| 723 | 724 |
| 724 EXPECT_FALSE(stream->HasUrlFromHeaders()); | 725 EXPECT_FALSE(stream->HasUrlFromHeaders()); |
| 725 | 726 |
| 726 std::unique_ptr<SpdyHeaderBlock> headers( | 727 std::unique_ptr<SpdyHeaderBlock> headers( |
| 727 spdy_util_.ConstructGetHeaderBlock(kStreamUrl)); | 728 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kStreamUrl))); |
| 728 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers), | 729 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers), |
| 729 NO_MORE_DATA_TO_SEND)); | 730 NO_MORE_DATA_TO_SEND)); |
| 730 EXPECT_TRUE(stream->HasUrlFromHeaders()); | 731 EXPECT_TRUE(stream->HasUrlFromHeaders()); |
| 731 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); | 732 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); |
| 732 | 733 |
| 733 data.RunUntilPaused(); | 734 data.RunUntilPaused(); |
| 734 | 735 |
| 735 base::WeakPtr<SpdyStream> push_stream; | 736 base::WeakPtr<SpdyStream> push_stream; |
| 736 EXPECT_EQ(OK, session->GetPushStream(url, &push_stream, BoundNetLog())); | 737 EXPECT_EQ(OK, session->GetPushStream(url, &push_stream, BoundNetLog())); |
| 737 EXPECT_TRUE(push_stream); | 738 EXPECT_TRUE(push_stream); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 762 | 763 |
| 763 std::unique_ptr<SpdySerializedFrame> push( | 764 std::unique_ptr<SpdySerializedFrame> push( |
| 764 spdy_util_.ConstructSpdyPush(NULL, 0, 2, 1, kStreamUrl)); | 765 spdy_util_.ConstructSpdyPush(NULL, 0, 2, 1, kStreamUrl)); |
| 765 AddRead(*push); | 766 AddRead(*push); |
| 766 | 767 |
| 767 AddReadPause(); | 768 AddReadPause(); |
| 768 | 769 |
| 769 SpdyHeaderBlock late_headers; | 770 SpdyHeaderBlock late_headers; |
| 770 late_headers[spdy_util_.GetStatusKey()] = "500 Server Error"; | 771 late_headers[spdy_util_.GetStatusKey()] = "500 Server Error"; |
| 771 std::unique_ptr<SpdySerializedFrame> headers_frame( | 772 std::unique_ptr<SpdySerializedFrame> headers_frame( |
| 772 spdy_util_.ConstructSpdyReply(2, late_headers)); | 773 spdy_util_.ConstructSpdyReply(2, std::move(late_headers))); |
| 773 AddRead(*headers_frame); | 774 AddRead(*headers_frame); |
| 774 | 775 |
| 775 AddReadPause(); | 776 AddReadPause(); |
| 776 | 777 |
| 777 std::unique_ptr<SpdySerializedFrame> rst( | 778 std::unique_ptr<SpdySerializedFrame> rst( |
| 778 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_PROTOCOL_ERROR)); | 779 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_PROTOCOL_ERROR)); |
| 779 AddWrite(*rst); | 780 AddWrite(*rst); |
| 780 | 781 |
| 781 AddReadEOF(); | 782 AddReadEOF(); |
| 782 | 783 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 793 CreateStreamSynchronously( | 794 CreateStreamSynchronously( |
| 794 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); | 795 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); |
| 795 ASSERT_TRUE(stream); | 796 ASSERT_TRUE(stream); |
| 796 | 797 |
| 797 StreamDelegateDoNothing delegate(stream); | 798 StreamDelegateDoNothing delegate(stream); |
| 798 stream->SetDelegate(&delegate); | 799 stream->SetDelegate(&delegate); |
| 799 | 800 |
| 800 EXPECT_FALSE(stream->HasUrlFromHeaders()); | 801 EXPECT_FALSE(stream->HasUrlFromHeaders()); |
| 801 | 802 |
| 802 std::unique_ptr<SpdyHeaderBlock> headers( | 803 std::unique_ptr<SpdyHeaderBlock> headers( |
| 803 spdy_util_.ConstructGetHeaderBlock(kStreamUrl)); | 804 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kStreamUrl))); |
| 804 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers), | 805 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers), |
| 805 NO_MORE_DATA_TO_SEND)); | 806 NO_MORE_DATA_TO_SEND)); |
| 806 EXPECT_TRUE(stream->HasUrlFromHeaders()); | 807 EXPECT_TRUE(stream->HasUrlFromHeaders()); |
| 807 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); | 808 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); |
| 808 | 809 |
| 809 data.RunUntilPaused(); | 810 data.RunUntilPaused(); |
| 810 | 811 |
| 811 base::WeakPtr<SpdyStream> push_stream; | 812 base::WeakPtr<SpdyStream> push_stream; |
| 812 EXPECT_EQ(OK, session->GetPushStream(url, &push_stream, BoundNetLog())); | 813 EXPECT_EQ(OK, session->GetPushStream(url, &push_stream, BoundNetLog())); |
| 813 EXPECT_TRUE(push_stream); | 814 EXPECT_TRUE(push_stream); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 853 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession()); | 854 base::WeakPtr<SpdySession> session(CreateDefaultSpdySession()); |
| 854 GURL url(kStreamUrl); | 855 GURL url(kStreamUrl); |
| 855 | 856 |
| 856 base::WeakPtr<SpdyStream> stream = | 857 base::WeakPtr<SpdyStream> stream = |
| 857 CreateStreamSynchronously( | 858 CreateStreamSynchronously( |
| 858 SPDY_BIDIRECTIONAL_STREAM, session, url, LOWEST, log.bound()); | 859 SPDY_BIDIRECTIONAL_STREAM, session, url, LOWEST, log.bound()); |
| 859 ASSERT_TRUE(stream); | 860 ASSERT_TRUE(stream); |
| 860 StreamDelegateSendImmediate delegate(stream, kPostBodyStringPiece); | 861 StreamDelegateSendImmediate delegate(stream, kPostBodyStringPiece); |
| 861 stream->SetDelegate(&delegate); | 862 stream->SetDelegate(&delegate); |
| 862 | 863 |
| 863 std::unique_ptr<SpdyHeaderBlock> headers( | 864 std::unique_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock( |
| 864 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength)); | 865 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength))); |
| 865 EXPECT_EQ(ERR_IO_PENDING, | 866 EXPECT_EQ(ERR_IO_PENDING, |
| 866 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); | 867 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); |
| 867 EXPECT_TRUE(stream->HasUrlFromHeaders()); | 868 EXPECT_TRUE(stream->HasUrlFromHeaders()); |
| 868 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); | 869 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); |
| 869 | 870 |
| 870 data.RunUntilPaused(); | 871 data.RunUntilPaused(); |
| 871 | 872 |
| 872 int32_t old_send_window_size = stream->send_window_size(); | 873 int32_t old_send_window_size = stream->send_window_size(); |
| 873 ASSERT_GT(old_send_window_size, 0); | 874 ASSERT_GT(old_send_window_size, 0); |
| 874 int32_t delta_window_size = | 875 int32_t delta_window_size = |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 946 CreateStreamSynchronously( | 947 CreateStreamSynchronously( |
| 947 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); | 948 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); |
| 948 ASSERT_TRUE(stream); | 949 ASSERT_TRUE(stream); |
| 949 | 950 |
| 950 StreamDelegateWithBody delegate(stream, kPostBodyStringPiece); | 951 StreamDelegateWithBody delegate(stream, kPostBodyStringPiece); |
| 951 stream->SetDelegate(&delegate); | 952 stream->SetDelegate(&delegate); |
| 952 | 953 |
| 953 EXPECT_FALSE(stream->HasUrlFromHeaders()); | 954 EXPECT_FALSE(stream->HasUrlFromHeaders()); |
| 954 EXPECT_FALSE(stream->send_stalled_by_flow_control()); | 955 EXPECT_FALSE(stream->send_stalled_by_flow_control()); |
| 955 | 956 |
| 956 std::unique_ptr<SpdyHeaderBlock> headers( | 957 std::unique_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock( |
| 957 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength)); | 958 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength))); |
| 958 EXPECT_EQ(ERR_IO_PENDING, | 959 EXPECT_EQ(ERR_IO_PENDING, |
| 959 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); | 960 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); |
| 960 EXPECT_TRUE(stream->HasUrlFromHeaders()); | 961 EXPECT_TRUE(stream->HasUrlFromHeaders()); |
| 961 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); | 962 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); |
| 962 | 963 |
| 963 StallStream(stream); | 964 StallStream(stream); |
| 964 | 965 |
| 965 base::RunLoop().RunUntilIdle(); | 966 base::RunLoop().RunUntilIdle(); |
| 966 | 967 |
| 967 EXPECT_TRUE(stream->send_stalled_by_flow_control()); | 968 EXPECT_TRUE(stream->send_stalled_by_flow_control()); |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1027 base::WeakPtr<SpdyStream> stream = | 1028 base::WeakPtr<SpdyStream> stream = |
| 1028 CreateStreamSynchronously( | 1029 CreateStreamSynchronously( |
| 1029 SPDY_BIDIRECTIONAL_STREAM, session, url, LOWEST, BoundNetLog()); | 1030 SPDY_BIDIRECTIONAL_STREAM, session, url, LOWEST, BoundNetLog()); |
| 1030 ASSERT_TRUE(stream); | 1031 ASSERT_TRUE(stream); |
| 1031 | 1032 |
| 1032 StreamDelegateSendImmediate delegate(stream, kPostBodyStringPiece); | 1033 StreamDelegateSendImmediate delegate(stream, kPostBodyStringPiece); |
| 1033 stream->SetDelegate(&delegate); | 1034 stream->SetDelegate(&delegate); |
| 1034 | 1035 |
| 1035 EXPECT_FALSE(stream->HasUrlFromHeaders()); | 1036 EXPECT_FALSE(stream->HasUrlFromHeaders()); |
| 1036 | 1037 |
| 1037 std::unique_ptr<SpdyHeaderBlock> headers( | 1038 std::unique_ptr<SpdyHeaderBlock> headers(new SpdyHeaderBlock( |
| 1038 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength)); | 1039 spdy_util_.ConstructPostHeaderBlock(kStreamUrl, kPostBodyLength))); |
| 1039 EXPECT_EQ(ERR_IO_PENDING, | 1040 EXPECT_EQ(ERR_IO_PENDING, |
| 1040 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); | 1041 stream->SendRequestHeaders(std::move(headers), MORE_DATA_TO_SEND)); |
| 1041 EXPECT_TRUE(stream->HasUrlFromHeaders()); | 1042 EXPECT_TRUE(stream->HasUrlFromHeaders()); |
| 1042 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); | 1043 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); |
| 1043 | 1044 |
| 1044 data.RunUntilPaused(); | 1045 data.RunUntilPaused(); |
| 1045 | 1046 |
| 1046 EXPECT_FALSE(stream->send_stalled_by_flow_control()); | 1047 EXPECT_FALSE(stream->send_stalled_by_flow_control()); |
| 1047 | 1048 |
| 1048 StallStream(stream); | 1049 StallStream(stream); |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1112 CreateStreamSynchronously( | 1113 CreateStreamSynchronously( |
| 1113 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); | 1114 SPDY_REQUEST_RESPONSE_STREAM, session, url, LOWEST, BoundNetLog()); |
| 1114 ASSERT_TRUE(stream); | 1115 ASSERT_TRUE(stream); |
| 1115 | 1116 |
| 1116 StreamDelegateDoNothing delegate(stream); | 1117 StreamDelegateDoNothing delegate(stream); |
| 1117 stream->SetDelegate(&delegate); | 1118 stream->SetDelegate(&delegate); |
| 1118 | 1119 |
| 1119 EXPECT_FALSE(stream->HasUrlFromHeaders()); | 1120 EXPECT_FALSE(stream->HasUrlFromHeaders()); |
| 1120 | 1121 |
| 1121 std::unique_ptr<SpdyHeaderBlock> headers( | 1122 std::unique_ptr<SpdyHeaderBlock> headers( |
| 1122 spdy_util_.ConstructGetHeaderBlock(kStreamUrl)); | 1123 new SpdyHeaderBlock(spdy_util_.ConstructGetHeaderBlock(kStreamUrl))); |
| 1123 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers), | 1124 EXPECT_EQ(ERR_IO_PENDING, stream->SendRequestHeaders(std::move(headers), |
| 1124 NO_MORE_DATA_TO_SEND)); | 1125 NO_MORE_DATA_TO_SEND)); |
| 1125 EXPECT_TRUE(stream->HasUrlFromHeaders()); | 1126 EXPECT_TRUE(stream->HasUrlFromHeaders()); |
| 1126 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); | 1127 EXPECT_EQ(kStreamUrl, stream->GetUrlFromHeaders().spec()); |
| 1127 | 1128 |
| 1128 int64_t reply_frame_len = reply->size(); | 1129 int64_t reply_frame_len = reply->size(); |
| 1129 int64_t data_header_len = SpdyConstants::GetDataFrameMinimumSize( | 1130 int64_t data_header_len = SpdyConstants::GetDataFrameMinimumSize( |
| 1130 NextProtoToSpdyMajorVersion(GetProtocol())); | 1131 NextProtoToSpdyMajorVersion(GetProtocol())); |
| 1131 int64_t data_frame_len = data_header_len + kPostBodyLength; | 1132 int64_t data_frame_len = data_header_len + kPostBodyLength; |
| 1132 int64_t response_len = reply_frame_len + data_frame_len; | 1133 int64_t response_len = reply_frame_len + data_frame_len; |
| (...skipping 15 matching lines...) Expand all Loading... |
| 1148 EXPECT_EQ(response_len, stream->raw_received_bytes()); | 1149 EXPECT_EQ(response_len, stream->raw_received_bytes()); |
| 1149 | 1150 |
| 1150 // FIN | 1151 // FIN |
| 1151 data.Resume(); | 1152 data.Resume(); |
| 1152 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); | 1153 EXPECT_EQ(ERR_CONNECTION_CLOSED, delegate.WaitForClose()); |
| 1153 } | 1154 } |
| 1154 | 1155 |
| 1155 } // namespace test | 1156 } // namespace test |
| 1156 | 1157 |
| 1157 } // namespace net | 1158 } // namespace net |
| OLD | NEW |