| 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 |