| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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_session.h" | 5 #include "net/spdy/spdy_session.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/base64.h" | 10 #include "base/base64.h" |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 119 SpdySessionTest() | 119 SpdySessionTest() |
| 120 : old_max_group_sockets_(ClientSocketPoolManager::max_sockets_per_group( | 120 : old_max_group_sockets_(ClientSocketPoolManager::max_sockets_per_group( |
| 121 HttpNetworkSession::NORMAL_SOCKET_POOL)), | 121 HttpNetworkSession::NORMAL_SOCKET_POOL)), |
| 122 old_max_pool_sockets_(ClientSocketPoolManager::max_sockets_per_pool( | 122 old_max_pool_sockets_(ClientSocketPoolManager::max_sockets_per_pool( |
| 123 HttpNetworkSession::NORMAL_SOCKET_POOL)), | 123 HttpNetworkSession::NORMAL_SOCKET_POOL)), |
| 124 spdy_session_pool_(nullptr), | 124 spdy_session_pool_(nullptr), |
| 125 test_url_(kDefaultUrl), | 125 test_url_(kDefaultUrl), |
| 126 test_server_(test_url_), | 126 test_server_(test_url_), |
| 127 key_(HostPortPair::FromURL(test_url_), | 127 key_(HostPortPair::FromURL(test_url_), |
| 128 ProxyServer::Direct(), | 128 ProxyServer::Direct(), |
| 129 PRIVACY_MODE_DISABLED) { | 129 PRIVACY_MODE_DISABLED), |
| 130 } | 130 ssl_(SYNCHRONOUS, OK) {} |
| 131 | 131 |
| 132 ~SpdySessionTest() override { | 132 ~SpdySessionTest() override { |
| 133 // Important to restore the per-pool limit first, since the pool limit must | 133 // Important to restore the per-pool limit first, since the pool limit must |
| 134 // always be greater than group limit, and the tests reduce both limits. | 134 // always be greater than group limit, and the tests reduce both limits. |
| 135 ClientSocketPoolManager::set_max_sockets_per_pool( | 135 ClientSocketPoolManager::set_max_sockets_per_pool( |
| 136 HttpNetworkSession::NORMAL_SOCKET_POOL, old_max_pool_sockets_); | 136 HttpNetworkSession::NORMAL_SOCKET_POOL, old_max_pool_sockets_); |
| 137 ClientSocketPoolManager::set_max_sockets_per_group( | 137 ClientSocketPoolManager::set_max_sockets_per_group( |
| 138 HttpNetworkSession::NORMAL_SOCKET_POOL, old_max_group_sockets_); | 138 HttpNetworkSession::NORMAL_SOCKET_POOL, old_max_group_sockets_); |
| 139 } | 139 } |
| 140 | 140 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 151 SpdySessionDependencies::SpdyCreateSession(&session_deps_); | 151 SpdySessionDependencies::SpdyCreateSession(&session_deps_); |
| 152 spdy_session_pool_ = http_session_->spdy_session_pool(); | 152 spdy_session_pool_ = http_session_->spdy_session_pool(); |
| 153 } | 153 } |
| 154 | 154 |
| 155 void CreateInsecureSpdySession() { | 155 void CreateInsecureSpdySession() { |
| 156 DCHECK(!session_); | 156 DCHECK(!session_); |
| 157 session_ = ::net::CreateInsecureSpdySession(http_session_.get(), key_, | 157 session_ = ::net::CreateInsecureSpdySession(http_session_.get(), key_, |
| 158 log_.bound()); | 158 log_.bound()); |
| 159 } | 159 } |
| 160 | 160 |
| 161 void AddSSLSocketData() { |
| 162 ssl_.cert = ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem"); |
| 163 ASSERT_TRUE(ssl_.cert); |
| 164 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_); |
| 165 } |
| 166 |
| 161 void CreateSecureSpdySession() { | 167 void CreateSecureSpdySession() { |
| 162 DCHECK(!session_); | 168 DCHECK(!session_); |
| 163 session_ = | 169 session_ = |
| 164 ::net::CreateSecureSpdySession(http_session_.get(), key_, log_.bound()); | 170 ::net::CreateSecureSpdySession(http_session_.get(), key_, log_.bound()); |
| 165 } | 171 } |
| 166 | 172 |
| 167 void StallSessionSend() { | 173 void StallSessionSend() { |
| 168 // Reduce the send window size to 0 to stall. | 174 // Reduce the send window size to 0 to stall. |
| 169 while (session_->session_send_window_size_ > 0) { | 175 while (session_->session_send_window_size_ > 0) { |
| 170 session_->DecreaseSendWindowSize(std::min( | 176 session_->DecreaseSendWindowSize(std::min( |
| (...skipping 27 matching lines...) Expand all Loading... |
| 198 int old_max_pool_sockets_; | 204 int old_max_pool_sockets_; |
| 199 | 205 |
| 200 SpdyTestUtil spdy_util_; | 206 SpdyTestUtil spdy_util_; |
| 201 SpdySessionDependencies session_deps_; | 207 SpdySessionDependencies session_deps_; |
| 202 std::unique_ptr<HttpNetworkSession> http_session_; | 208 std::unique_ptr<HttpNetworkSession> http_session_; |
| 203 base::WeakPtr<SpdySession> session_; | 209 base::WeakPtr<SpdySession> session_; |
| 204 SpdySessionPool* spdy_session_pool_; | 210 SpdySessionPool* spdy_session_pool_; |
| 205 const GURL test_url_; | 211 const GURL test_url_; |
| 206 const url::SchemeHostPort test_server_; | 212 const url::SchemeHostPort test_server_; |
| 207 SpdySessionKey key_; | 213 SpdySessionKey key_; |
| 214 SSLSocketDataProvider ssl_; |
| 208 BoundTestNetLog log_; | 215 BoundTestNetLog log_; |
| 209 }; | 216 }; |
| 210 | 217 |
| 211 // Try to create a SPDY session that will fail during | 218 // Try to create a SPDY session that will fail during |
| 212 // initialization. Nothing should blow up. | 219 // initialization. Nothing should blow up. |
| 213 TEST_F(SpdySessionTest, InitialReadError) { | 220 TEST_F(SpdySessionTest, InitialReadError) { |
| 214 CreateNetworkSession(); | 221 CreateNetworkSession(); |
| 215 | 222 |
| 216 session_ = TryCreateFakeSpdySessionExpectingFailure(spdy_session_pool_, key_, | 223 session_ = TryCreateFakeSpdySessionExpectingFailure(spdy_session_pool_, key_, |
| 217 ERR_CONNECTION_CLOSED); | 224 ERR_CONNECTION_CLOSED); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 256 // request. Close the session. Nothing should blow up. This is a | 263 // request. Close the session. Nothing should blow up. This is a |
| 257 // regression test for http://crbug.com/250841 . | 264 // regression test for http://crbug.com/250841 . |
| 258 TEST_F(SpdySessionTest, PendingStreamCancellingAnother) { | 265 TEST_F(SpdySessionTest, PendingStreamCancellingAnother) { |
| 259 session_deps_.host_resolver->set_synchronous_mode(true); | 266 session_deps_.host_resolver->set_synchronous_mode(true); |
| 260 | 267 |
| 261 MockRead reads[] = {MockRead(ASYNC, 0, 0), }; | 268 MockRead reads[] = {MockRead(ASYNC, 0, 0), }; |
| 262 | 269 |
| 263 SequencedSocketData data(reads, arraysize(reads), nullptr, 0); | 270 SequencedSocketData data(reads, arraysize(reads), nullptr, 0); |
| 264 session_deps_.socket_factory->AddSocketDataProvider(&data); | 271 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 265 | 272 |
| 273 AddSSLSocketData(); |
| 274 |
| 266 CreateNetworkSession(); | 275 CreateNetworkSession(); |
| 267 CreateInsecureSpdySession(); | 276 CreateSecureSpdySession(); |
| 268 | 277 |
| 269 // Create the maximum number of concurrent streams. | 278 // Create the maximum number of concurrent streams. |
| 270 for (size_t i = 0; i < kInitialMaxConcurrentStreams; ++i) { | 279 for (size_t i = 0; i < kInitialMaxConcurrentStreams; ++i) { |
| 271 base::WeakPtr<SpdyStream> spdy_stream = | 280 base::WeakPtr<SpdyStream> spdy_stream = |
| 272 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, session_, | 281 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, session_, |
| 273 test_url_, MEDIUM, NetLogWithSource()); | 282 test_url_, MEDIUM, NetLogWithSource()); |
| 274 ASSERT_TRUE(spdy_stream); | 283 ASSERT_TRUE(spdy_stream); |
| 275 } | 284 } |
| 276 | 285 |
| 277 SpdyStreamRequest request1; | 286 SpdyStreamRequest request1; |
| (...skipping 23 matching lines...) Expand all Loading... |
| 301 TEST_F(SpdySessionTest, GoAwayWithNoActiveStreams) { | 310 TEST_F(SpdySessionTest, GoAwayWithNoActiveStreams) { |
| 302 session_deps_.host_resolver->set_synchronous_mode(true); | 311 session_deps_.host_resolver->set_synchronous_mode(true); |
| 303 | 312 |
| 304 SpdySerializedFrame goaway(spdy_util_.ConstructSpdyGoAway(1)); | 313 SpdySerializedFrame goaway(spdy_util_.ConstructSpdyGoAway(1)); |
| 305 MockRead reads[] = { | 314 MockRead reads[] = { |
| 306 CreateMockRead(goaway, 0), | 315 CreateMockRead(goaway, 0), |
| 307 }; | 316 }; |
| 308 SequencedSocketData data(reads, arraysize(reads), nullptr, 0); | 317 SequencedSocketData data(reads, arraysize(reads), nullptr, 0); |
| 309 session_deps_.socket_factory->AddSocketDataProvider(&data); | 318 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 310 | 319 |
| 320 AddSSLSocketData(); |
| 321 |
| 311 CreateNetworkSession(); | 322 CreateNetworkSession(); |
| 312 CreateInsecureSpdySession(); | 323 CreateSecureSpdySession(); |
| 313 | 324 |
| 314 EXPECT_TRUE(HasSpdySession(spdy_session_pool_, key_)); | 325 EXPECT_TRUE(HasSpdySession(spdy_session_pool_, key_)); |
| 315 | 326 |
| 316 // Read and process the GOAWAY frame. | 327 // Read and process the GOAWAY frame. |
| 317 base::RunLoop().RunUntilIdle(); | 328 base::RunLoop().RunUntilIdle(); |
| 318 EXPECT_FALSE(HasSpdySession(spdy_session_pool_, key_)); | 329 EXPECT_FALSE(HasSpdySession(spdy_session_pool_, key_)); |
| 319 EXPECT_FALSE(session_); | 330 EXPECT_FALSE(session_); |
| 320 } | 331 } |
| 321 | 332 |
| 322 // A session receiving a GOAWAY frame immediately with no active | 333 // A session receiving a GOAWAY frame immediately with no active |
| 323 // streams should then close. | 334 // streams should then close. |
| 324 TEST_F(SpdySessionTest, GoAwayImmediatelyWithNoActiveStreams) { | 335 TEST_F(SpdySessionTest, GoAwayImmediatelyWithNoActiveStreams) { |
| 325 session_deps_.host_resolver->set_synchronous_mode(true); | 336 session_deps_.host_resolver->set_synchronous_mode(true); |
| 326 | 337 |
| 327 SpdySerializedFrame goaway(spdy_util_.ConstructSpdyGoAway(1)); | 338 SpdySerializedFrame goaway(spdy_util_.ConstructSpdyGoAway(1)); |
| 328 MockRead reads[] = { | 339 MockRead reads[] = { |
| 329 CreateMockRead(goaway, 0, SYNCHRONOUS), MockRead(ASYNC, 0, 1) // EOF | 340 CreateMockRead(goaway, 0, SYNCHRONOUS), MockRead(ASYNC, 0, 1) // EOF |
| 330 }; | 341 }; |
| 331 SequencedSocketData data(reads, arraysize(reads), nullptr, 0); | 342 SequencedSocketData data(reads, arraysize(reads), nullptr, 0); |
| 332 session_deps_.socket_factory->AddSocketDataProvider(&data); | 343 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 333 | 344 |
| 345 AddSSLSocketData(); |
| 346 |
| 334 CreateNetworkSession(); | 347 CreateNetworkSession(); |
| 335 | 348 |
| 336 session_ = TryCreateInsecureSpdySessionExpectingFailure( | 349 session_ = TryCreateSpdySessionExpectingFailure( |
| 337 http_session_.get(), key_, ERR_CONNECTION_CLOSED, NetLogWithSource()); | 350 http_session_.get(), key_, ERR_CONNECTION_CLOSED, NetLogWithSource()); |
| 338 base::RunLoop().RunUntilIdle(); | 351 base::RunLoop().RunUntilIdle(); |
| 339 | 352 |
| 340 EXPECT_FALSE(session_); | 353 EXPECT_FALSE(session_); |
| 341 EXPECT_FALSE(HasSpdySession(spdy_session_pool_, key_)); | 354 EXPECT_FALSE(HasSpdySession(spdy_session_pool_, key_)); |
| 342 EXPECT_FALSE(data.AllReadDataConsumed()); | 355 EXPECT_FALSE(data.AllReadDataConsumed()); |
| 343 } | 356 } |
| 344 | 357 |
| 345 // A session receiving a GOAWAY frame with active streams should close | 358 // A session receiving a GOAWAY frame with active streams should close |
| 346 // when the last active stream is closed. | 359 // when the last active stream is closed. |
| 347 TEST_F(SpdySessionTest, GoAwayWithActiveStreams) { | 360 TEST_F(SpdySessionTest, GoAwayWithActiveStreams) { |
| 348 session_deps_.host_resolver->set_synchronous_mode(true); | 361 session_deps_.host_resolver->set_synchronous_mode(true); |
| 349 | 362 |
| 350 SpdySerializedFrame goaway(spdy_util_.ConstructSpdyGoAway(1)); | 363 SpdySerializedFrame goaway(spdy_util_.ConstructSpdyGoAway(1)); |
| 351 MockRead reads[] = { | 364 MockRead reads[] = { |
| 352 MockRead(ASYNC, ERR_IO_PENDING, 2), CreateMockRead(goaway, 3), | 365 MockRead(ASYNC, ERR_IO_PENDING, 2), CreateMockRead(goaway, 3), |
| 353 MockRead(ASYNC, ERR_IO_PENDING, 4), MockRead(ASYNC, 0, 5) // EOF | 366 MockRead(ASYNC, ERR_IO_PENDING, 4), MockRead(ASYNC, 0, 5) // EOF |
| 354 }; | 367 }; |
| 355 SpdySerializedFrame req1( | 368 SpdySerializedFrame req1( |
| 356 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true)); | 369 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true)); |
| 357 SpdySerializedFrame req2( | 370 SpdySerializedFrame req2( |
| 358 spdy_util_.ConstructSpdyGet(nullptr, 0, 3, MEDIUM, true)); | 371 spdy_util_.ConstructSpdyGet(nullptr, 0, 3, MEDIUM, true)); |
| 359 MockWrite writes[] = { | 372 MockWrite writes[] = { |
| 360 CreateMockWrite(req1, 0), CreateMockWrite(req2, 1), | 373 CreateMockWrite(req1, 0), CreateMockWrite(req2, 1), |
| 361 }; | 374 }; |
| 362 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 375 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 363 session_deps_.socket_factory->AddSocketDataProvider(&data); | 376 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 364 | 377 |
| 378 AddSSLSocketData(); |
| 379 |
| 365 CreateNetworkSession(); | 380 CreateNetworkSession(); |
| 366 CreateInsecureSpdySession(); | 381 CreateSecureSpdySession(); |
| 367 | 382 |
| 368 base::WeakPtr<SpdyStream> spdy_stream1 = | 383 base::WeakPtr<SpdyStream> spdy_stream1 = |
| 369 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 384 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 370 test_url_, MEDIUM, NetLogWithSource()); | 385 test_url_, MEDIUM, NetLogWithSource()); |
| 371 test::StreamDelegateDoNothing delegate1(spdy_stream1); | 386 test::StreamDelegateDoNothing delegate1(spdy_stream1); |
| 372 spdy_stream1->SetDelegate(&delegate1); | 387 spdy_stream1->SetDelegate(&delegate1); |
| 373 | 388 |
| 374 base::WeakPtr<SpdyStream> spdy_stream2 = | 389 base::WeakPtr<SpdyStream> spdy_stream2 = |
| 375 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 390 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 376 test_url_, MEDIUM, NetLogWithSource()); | 391 test_url_, MEDIUM, NetLogWithSource()); |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 423 | 438 |
| 424 // No |req2|, because the second stream will never get activated. | 439 // No |req2|, because the second stream will never get activated. |
| 425 SpdySerializedFrame req1( | 440 SpdySerializedFrame req1( |
| 426 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true)); | 441 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true)); |
| 427 MockWrite writes[] = { | 442 MockWrite writes[] = { |
| 428 CreateMockWrite(req1, 0), | 443 CreateMockWrite(req1, 0), |
| 429 }; | 444 }; |
| 430 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 445 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 431 session_deps_.socket_factory->AddSocketDataProvider(&data); | 446 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 432 | 447 |
| 448 AddSSLSocketData(); |
| 449 |
| 433 CreateNetworkSession(); | 450 CreateNetworkSession(); |
| 434 CreateInsecureSpdySession(); | 451 CreateSecureSpdySession(); |
| 435 | 452 |
| 436 base::WeakPtr<SpdyStream> spdy_stream1 = | 453 base::WeakPtr<SpdyStream> spdy_stream1 = |
| 437 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 454 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 438 test_url_, MEDIUM, NetLogWithSource()); | 455 test_url_, MEDIUM, NetLogWithSource()); |
| 439 test::StreamDelegateDoNothing delegate1(spdy_stream1); | 456 test::StreamDelegateDoNothing delegate1(spdy_stream1); |
| 440 spdy_stream1->SetDelegate(&delegate1); | 457 spdy_stream1->SetDelegate(&delegate1); |
| 441 SpdyHeaderBlock headers1(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); | 458 SpdyHeaderBlock headers1(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); |
| 442 spdy_stream1->SendRequestHeaders(std::move(headers1), NO_MORE_DATA_TO_SEND); | 459 spdy_stream1->SendRequestHeaders(std::move(headers1), NO_MORE_DATA_TO_SEND); |
| 443 | 460 |
| 444 EXPECT_EQ(0u, spdy_stream1->stream_id()); | 461 EXPECT_EQ(0u, spdy_stream1->stream_id()); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 482 SpdySerializedFrame req1( | 499 SpdySerializedFrame req1( |
| 483 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true)); | 500 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true)); |
| 484 SpdySerializedFrame req2( | 501 SpdySerializedFrame req2( |
| 485 spdy_util_.ConstructSpdyGet(nullptr, 0, 3, MEDIUM, true)); | 502 spdy_util_.ConstructSpdyGet(nullptr, 0, 3, MEDIUM, true)); |
| 486 MockWrite writes[] = { | 503 MockWrite writes[] = { |
| 487 CreateMockWrite(req1, 0), CreateMockWrite(req2, 1), | 504 CreateMockWrite(req1, 0), CreateMockWrite(req2, 1), |
| 488 }; | 505 }; |
| 489 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 506 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 490 session_deps_.socket_factory->AddSocketDataProvider(&data); | 507 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 491 | 508 |
| 509 AddSSLSocketData(); |
| 510 |
| 492 CreateNetworkSession(); | 511 CreateNetworkSession(); |
| 493 CreateInsecureSpdySession(); | 512 CreateSecureSpdySession(); |
| 494 | 513 |
| 495 base::WeakPtr<SpdyStream> spdy_stream1 = | 514 base::WeakPtr<SpdyStream> spdy_stream1 = |
| 496 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 515 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 497 test_url_, MEDIUM, NetLogWithSource()); | 516 test_url_, MEDIUM, NetLogWithSource()); |
| 498 test::StreamDelegateDoNothing delegate1(spdy_stream1); | 517 test::StreamDelegateDoNothing delegate1(spdy_stream1); |
| 499 spdy_stream1->SetDelegate(&delegate1); | 518 spdy_stream1->SetDelegate(&delegate1); |
| 500 | 519 |
| 501 base::WeakPtr<SpdyStream> spdy_stream2 = | 520 base::WeakPtr<SpdyStream> spdy_stream2 = |
| 502 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 521 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 503 test_url_, MEDIUM, NetLogWithSource()); | 522 test_url_, MEDIUM, NetLogWithSource()); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 549 SpdySerializedFrame req1( | 568 SpdySerializedFrame req1( |
| 550 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true)); | 569 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true)); |
| 551 SpdySerializedFrame req2( | 570 SpdySerializedFrame req2( |
| 552 spdy_util_.ConstructSpdyGet(nullptr, 0, 3, MEDIUM, true)); | 571 spdy_util_.ConstructSpdyGet(nullptr, 0, 3, MEDIUM, true)); |
| 553 MockWrite writes[] = { | 572 MockWrite writes[] = { |
| 554 CreateMockWrite(req1, 0), CreateMockWrite(req2, 1), | 573 CreateMockWrite(req1, 0), CreateMockWrite(req2, 1), |
| 555 }; | 574 }; |
| 556 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 575 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 557 session_deps_.socket_factory->AddSocketDataProvider(&data); | 576 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 558 | 577 |
| 578 AddSSLSocketData(); |
| 579 |
| 559 CreateNetworkSession(); | 580 CreateNetworkSession(); |
| 560 CreateInsecureSpdySession(); | 581 CreateSecureSpdySession(); |
| 561 | 582 |
| 562 base::WeakPtr<SpdyStream> spdy_stream1 = | 583 base::WeakPtr<SpdyStream> spdy_stream1 = |
| 563 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 584 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 564 test_url_, MEDIUM, NetLogWithSource()); | 585 test_url_, MEDIUM, NetLogWithSource()); |
| 565 test::StreamDelegateDoNothing delegate1(spdy_stream1); | 586 test::StreamDelegateDoNothing delegate1(spdy_stream1); |
| 566 spdy_stream1->SetDelegate(&delegate1); | 587 spdy_stream1->SetDelegate(&delegate1); |
| 567 | 588 |
| 568 base::WeakPtr<SpdyStream> spdy_stream2 = | 589 base::WeakPtr<SpdyStream> spdy_stream2 = |
| 569 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 590 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 570 test_url_, MEDIUM, NetLogWithSource()); | 591 test_url_, MEDIUM, NetLogWithSource()); |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 635 SpdySerializedFrame joint_frames(buffer.get(), joint_size, false); | 656 SpdySerializedFrame joint_frames(buffer.get(), joint_size, false); |
| 636 | 657 |
| 637 MockRead reads[] = { | 658 MockRead reads[] = { |
| 638 CreateMockRead(resp, 1), CreateMockRead(joint_frames, 2), | 659 CreateMockRead(resp, 1), CreateMockRead(joint_frames, 2), |
| 639 MockRead(ASYNC, 0, 3) // EOF | 660 MockRead(ASYNC, 0, 3) // EOF |
| 640 }; | 661 }; |
| 641 | 662 |
| 642 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 663 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 643 session_deps_.socket_factory->AddSocketDataProvider(&data); | 664 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 644 | 665 |
| 666 AddSSLSocketData(); |
| 667 |
| 645 CreateNetworkSession(); | 668 CreateNetworkSession(); |
| 646 CreateInsecureSpdySession(); | 669 CreateSecureSpdySession(); |
| 647 | 670 |
| 648 base::WeakPtr<SpdyStream> spdy_stream = | 671 base::WeakPtr<SpdyStream> spdy_stream = |
| 649 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 672 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 650 test_url_, MEDIUM, NetLogWithSource()); | 673 test_url_, MEDIUM, NetLogWithSource()); |
| 651 test::StreamDelegateDoNothing delegate(spdy_stream); | 674 test::StreamDelegateDoNothing delegate(spdy_stream); |
| 652 spdy_stream->SetDelegate(&delegate); | 675 spdy_stream->SetDelegate(&delegate); |
| 653 | 676 |
| 654 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); | 677 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); |
| 655 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); | 678 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); |
| 656 | 679 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 674 MockRead(ASYNC, ERR_IO_PENDING, 3), MockRead(ASYNC, 0, 4) // EOF | 697 MockRead(ASYNC, ERR_IO_PENDING, 3), MockRead(ASYNC, 0, 4) // EOF |
| 675 }; | 698 }; |
| 676 SpdySerializedFrame req( | 699 SpdySerializedFrame req( |
| 677 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true)); | 700 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true)); |
| 678 MockWrite writes[] = { | 701 MockWrite writes[] = { |
| 679 CreateMockWrite(req, 0), | 702 CreateMockWrite(req, 0), |
| 680 }; | 703 }; |
| 681 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 704 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 682 session_deps_.socket_factory->AddSocketDataProvider(&data); | 705 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 683 | 706 |
| 707 AddSSLSocketData(); |
| 708 |
| 684 CreateNetworkSession(); | 709 CreateNetworkSession(); |
| 685 CreateInsecureSpdySession(); | 710 CreateSecureSpdySession(); |
| 686 | 711 |
| 687 base::WeakPtr<SpdyStream> spdy_stream = | 712 base::WeakPtr<SpdyStream> spdy_stream = |
| 688 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 713 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 689 test_url_, MEDIUM, NetLogWithSource()); | 714 test_url_, MEDIUM, NetLogWithSource()); |
| 690 test::StreamDelegateDoNothing delegate(spdy_stream); | 715 test::StreamDelegateDoNothing delegate(spdy_stream); |
| 691 spdy_stream->SetDelegate(&delegate); | 716 spdy_stream->SetDelegate(&delegate); |
| 692 | 717 |
| 693 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); | 718 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); |
| 694 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); | 719 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); |
| 695 | 720 |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 732 MockRead(ASYNC, 0, 6) // EOF | 757 MockRead(ASYNC, 0, 6) // EOF |
| 733 }; | 758 }; |
| 734 SpdySerializedFrame req( | 759 SpdySerializedFrame req( |
| 735 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true)); | 760 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true)); |
| 736 SpdySerializedFrame rst( | 761 SpdySerializedFrame rst( |
| 737 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_REFUSED_STREAM)); | 762 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_REFUSED_STREAM)); |
| 738 MockWrite writes[] = {CreateMockWrite(req, 0), CreateMockWrite(rst, 5)}; | 763 MockWrite writes[] = {CreateMockWrite(req, 0), CreateMockWrite(rst, 5)}; |
| 739 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 764 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 740 session_deps_.socket_factory->AddSocketDataProvider(&data); | 765 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 741 | 766 |
| 767 AddSSLSocketData(); |
| 768 |
| 742 CreateNetworkSession(); | 769 CreateNetworkSession(); |
| 743 CreateInsecureSpdySession(); | 770 CreateSecureSpdySession(); |
| 744 | 771 |
| 745 base::WeakPtr<SpdyStream> spdy_stream = | 772 base::WeakPtr<SpdyStream> spdy_stream = |
| 746 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 773 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 747 test_url_, MEDIUM, NetLogWithSource()); | 774 test_url_, MEDIUM, NetLogWithSource()); |
| 748 test::StreamDelegateDoNothing delegate(spdy_stream); | 775 test::StreamDelegateDoNothing delegate(spdy_stream); |
| 749 spdy_stream->SetDelegate(&delegate); | 776 spdy_stream->SetDelegate(&delegate); |
| 750 | 777 |
| 751 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); | 778 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); |
| 752 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); | 779 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); |
| 753 | 780 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 780 MockRead(ASYNC, ERR_IO_PENDING, 1), MockRead(ASYNC, 0, 2) // EOF | 807 MockRead(ASYNC, ERR_IO_PENDING, 1), MockRead(ASYNC, 0, 2) // EOF |
| 781 }; | 808 }; |
| 782 SpdySerializedFrame req1( | 809 SpdySerializedFrame req1( |
| 783 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true)); | 810 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true)); |
| 784 MockWrite writes[] = { | 811 MockWrite writes[] = { |
| 785 CreateMockWrite(req1, 0), | 812 CreateMockWrite(req1, 0), |
| 786 }; | 813 }; |
| 787 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 814 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 788 session_deps_.socket_factory->AddSocketDataProvider(&data); | 815 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 789 | 816 |
| 817 AddSSLSocketData(); |
| 818 |
| 790 CreateNetworkSession(); | 819 CreateNetworkSession(); |
| 791 CreateInsecureSpdySession(); | 820 CreateSecureSpdySession(); |
| 792 | 821 |
| 793 base::WeakPtr<SpdyStream> spdy_stream = | 822 base::WeakPtr<SpdyStream> spdy_stream = |
| 794 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 823 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 795 test_url_, MEDIUM, NetLogWithSource()); | 824 test_url_, MEDIUM, NetLogWithSource()); |
| 796 test::StreamDelegateDoNothing delegate(spdy_stream); | 825 test::StreamDelegateDoNothing delegate(spdy_stream); |
| 797 spdy_stream->SetDelegate(&delegate); | 826 spdy_stream->SetDelegate(&delegate); |
| 798 | 827 |
| 799 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); | 828 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); |
| 800 | 829 |
| 801 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); | 830 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 840 CreateMockRead(read_ping, 1), MockRead(ASYNC, ERR_IO_PENDING, 2), | 869 CreateMockRead(read_ping, 1), MockRead(ASYNC, ERR_IO_PENDING, 2), |
| 841 MockRead(ASYNC, 0, 3) // EOF | 870 MockRead(ASYNC, 0, 3) // EOF |
| 842 }; | 871 }; |
| 843 SpdySerializedFrame write_ping(spdy_util_.ConstructSpdyPing(1, false)); | 872 SpdySerializedFrame write_ping(spdy_util_.ConstructSpdyPing(1, false)); |
| 844 MockWrite writes[] = { | 873 MockWrite writes[] = { |
| 845 CreateMockWrite(write_ping, 0), | 874 CreateMockWrite(write_ping, 0), |
| 846 }; | 875 }; |
| 847 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 876 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 848 session_deps_.socket_factory->AddSocketDataProvider(&data); | 877 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 849 | 878 |
| 879 AddSSLSocketData(); |
| 880 |
| 850 CreateNetworkSession(); | 881 CreateNetworkSession(); |
| 851 CreateInsecureSpdySession(); | 882 CreateSecureSpdySession(); |
| 852 | 883 |
| 853 base::WeakPtr<SpdyStream> spdy_stream1 = | 884 base::WeakPtr<SpdyStream> spdy_stream1 = |
| 854 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, session_, test_url_, | 885 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, session_, test_url_, |
| 855 MEDIUM, NetLogWithSource()); | 886 MEDIUM, NetLogWithSource()); |
| 856 ASSERT_TRUE(spdy_stream1); | 887 ASSERT_TRUE(spdy_stream1); |
| 857 test::StreamDelegateSendImmediate delegate(spdy_stream1, nullptr); | 888 test::StreamDelegateSendImmediate delegate(spdy_stream1, nullptr); |
| 858 spdy_stream1->SetDelegate(&delegate); | 889 spdy_stream1->SetDelegate(&delegate); |
| 859 | 890 |
| 860 base::TimeTicks before_ping_time = base::TimeTicks::Now(); | 891 base::TimeTicks before_ping_time = base::TimeTicks::Now(); |
| 861 | 892 |
| (...skipping 29 matching lines...) Expand all Loading... |
| 891 CreateMockRead(read_ping), MockRead(SYNCHRONOUS, 0, 0) // EOF | 922 CreateMockRead(read_ping), MockRead(SYNCHRONOUS, 0, 0) // EOF |
| 892 }; | 923 }; |
| 893 SpdySerializedFrame write_ping(spdy_util_.ConstructSpdyPing(2, true)); | 924 SpdySerializedFrame write_ping(spdy_util_.ConstructSpdyPing(2, true)); |
| 894 MockWrite writes[] = { | 925 MockWrite writes[] = { |
| 895 CreateMockWrite(write_ping), | 926 CreateMockWrite(write_ping), |
| 896 }; | 927 }; |
| 897 StaticSocketDataProvider data( | 928 StaticSocketDataProvider data( |
| 898 reads, arraysize(reads), writes, arraysize(writes)); | 929 reads, arraysize(reads), writes, arraysize(writes)); |
| 899 session_deps_.socket_factory->AddSocketDataProvider(&data); | 930 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 900 | 931 |
| 932 AddSSLSocketData(); |
| 933 |
| 901 CreateNetworkSession(); | 934 CreateNetworkSession(); |
| 902 CreateInsecureSpdySession(); | 935 CreateSecureSpdySession(); |
| 903 | 936 |
| 904 base::WeakPtr<SpdyStream> spdy_stream1 = | 937 base::WeakPtr<SpdyStream> spdy_stream1 = |
| 905 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, session_, test_url_, | 938 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, session_, test_url_, |
| 906 MEDIUM, NetLogWithSource()); | 939 MEDIUM, NetLogWithSource()); |
| 907 ASSERT_TRUE(spdy_stream1); | 940 ASSERT_TRUE(spdy_stream1); |
| 908 test::StreamDelegateSendImmediate delegate(spdy_stream1, nullptr); | 941 test::StreamDelegateSendImmediate delegate(spdy_stream1, nullptr); |
| 909 spdy_stream1->SetDelegate(&delegate); | 942 spdy_stream1->SetDelegate(&delegate); |
| 910 | 943 |
| 911 // Flush the read completion task. | 944 // Flush the read completion task. |
| 912 base::RunLoop().RunUntilIdle(); | 945 base::RunLoop().RunUntilIdle(); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 934 | 967 |
| 935 MockRead reads[] = { | 968 MockRead reads[] = { |
| 936 MockRead(ASYNC, ERR_IO_PENDING, 2), MockRead(ASYNC, 0, 3) // EOF | 969 MockRead(ASYNC, ERR_IO_PENDING, 2), MockRead(ASYNC, 0, 3) // EOF |
| 937 }; | 970 }; |
| 938 | 971 |
| 939 session_deps_.host_resolver->set_synchronous_mode(true); | 972 session_deps_.host_resolver->set_synchronous_mode(true); |
| 940 | 973 |
| 941 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 974 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 942 session_deps_.socket_factory->AddSocketDataProvider(&data); | 975 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 943 | 976 |
| 977 AddSSLSocketData(); |
| 978 |
| 944 CreateNetworkSession(); | 979 CreateNetworkSession(); |
| 945 CreateInsecureSpdySession(); | 980 CreateSecureSpdySession(); |
| 946 | 981 |
| 947 base::WeakPtr<SpdyStream> spdy_stream = | 982 base::WeakPtr<SpdyStream> spdy_stream = |
| 948 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 983 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 949 test_url_, LOWEST, NetLogWithSource()); | 984 test_url_, LOWEST, NetLogWithSource()); |
| 950 test::StreamDelegateDoNothing delegate(spdy_stream); | 985 test::StreamDelegateDoNothing delegate(spdy_stream); |
| 951 spdy_stream->SetDelegate(&delegate); | 986 spdy_stream->SetDelegate(&delegate); |
| 952 | 987 |
| 953 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); | 988 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); |
| 954 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); | 989 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); |
| 955 | 990 |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 996 | 1031 |
| 997 MockRead reads[] = { | 1032 MockRead reads[] = { |
| 998 CreateMockRead(resp1, 2), CreateMockRead(resp2, 3), | 1033 CreateMockRead(resp1, 2), CreateMockRead(resp2, 3), |
| 999 MockRead(ASYNC, ERR_IO_PENDING, 4), CreateMockRead(body1, 5), | 1034 MockRead(ASYNC, ERR_IO_PENDING, 4), CreateMockRead(body1, 5), |
| 1000 CreateMockRead(body2, 6), MockRead(ASYNC, 0, 7) // EOF | 1035 CreateMockRead(body2, 6), MockRead(ASYNC, 0, 7) // EOF |
| 1001 }; | 1036 }; |
| 1002 | 1037 |
| 1003 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 1038 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 1004 session_deps_.socket_factory->AddSocketDataProvider(&data); | 1039 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 1005 | 1040 |
| 1041 AddSSLSocketData(); |
| 1042 |
| 1006 CreateNetworkSession(); | 1043 CreateNetworkSession(); |
| 1007 CreateInsecureSpdySession(); | 1044 CreateSecureSpdySession(); |
| 1008 | 1045 |
| 1009 // Fix stream_hi_water_mark_ to allow for two stream activations. | 1046 // Fix stream_hi_water_mark_ to allow for two stream activations. |
| 1010 session_->stream_hi_water_mark_ = kLastStreamId - 2; | 1047 session_->stream_hi_water_mark_ = kLastStreamId - 2; |
| 1011 // Fix max_concurrent_streams to allow for three stream creations. | 1048 // Fix max_concurrent_streams to allow for three stream creations. |
| 1012 session_->max_concurrent_streams_ = 3; | 1049 session_->max_concurrent_streams_ = 3; |
| 1013 | 1050 |
| 1014 // Create three streams synchronously, and begin a fourth (which is stalled). | 1051 // Create three streams synchronously, and begin a fourth (which is stalled). |
| 1015 base::WeakPtr<SpdyStream> stream1 = | 1052 base::WeakPtr<SpdyStream> stream1 = |
| 1016 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 1053 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 1017 test_url_, MEDIUM, NetLogWithSource()); | 1054 test_url_, MEDIUM, NetLogWithSource()); |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1119 CreateMockRead(body, 7), | 1156 CreateMockRead(body, 7), |
| 1120 MockRead(ASYNC, 0, 8)}; | 1157 MockRead(ASYNC, 0, 8)}; |
| 1121 | 1158 |
| 1122 MockWrite writes[] = {CreateMockWrite(settings_ack0, 1), | 1159 MockWrite writes[] = {CreateMockWrite(settings_ack0, 1), |
| 1123 CreateMockWrite(settings_ack1, 4), | 1160 CreateMockWrite(settings_ack1, 4), |
| 1124 CreateMockWrite(req, 5)}; | 1161 CreateMockWrite(req, 5)}; |
| 1125 | 1162 |
| 1126 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 1163 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 1127 session_deps_.socket_factory->AddSocketDataProvider(&data); | 1164 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 1128 | 1165 |
| 1166 AddSSLSocketData(); |
| 1167 |
| 1129 // Create session. | 1168 // Create session. |
| 1130 CreateNetworkSession(); | 1169 CreateNetworkSession(); |
| 1131 CreateInsecureSpdySession(); | 1170 CreateSecureSpdySession(); |
| 1132 | 1171 |
| 1133 // Receive SETTINGS frame that sets max_concurrent_streams to zero. | 1172 // Receive SETTINGS frame that sets max_concurrent_streams to zero. |
| 1134 base::RunLoop().RunUntilIdle(); | 1173 base::RunLoop().RunUntilIdle(); |
| 1135 EXPECT_EQ(0u, session_->max_concurrent_streams_); | 1174 EXPECT_EQ(0u, session_->max_concurrent_streams_); |
| 1136 | 1175 |
| 1137 // Start request. | 1176 // Start request. |
| 1138 SpdyStreamRequest request; | 1177 SpdyStreamRequest request; |
| 1139 TestCompletionCallback callback; | 1178 TestCompletionCallback callback; |
| 1140 int rv = | 1179 int rv = |
| 1141 request.StartRequest(SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, | 1180 request.StartRequest(SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1177 TEST_F(SpdySessionTest, UnstallRacesWithStreamCreation) { | 1216 TEST_F(SpdySessionTest, UnstallRacesWithStreamCreation) { |
| 1178 session_deps_.host_resolver->set_synchronous_mode(true); | 1217 session_deps_.host_resolver->set_synchronous_mode(true); |
| 1179 | 1218 |
| 1180 MockRead reads[] = { | 1219 MockRead reads[] = { |
| 1181 MockRead(SYNCHRONOUS, ERR_IO_PENDING) // Stall forever. | 1220 MockRead(SYNCHRONOUS, ERR_IO_PENDING) // Stall forever. |
| 1182 }; | 1221 }; |
| 1183 | 1222 |
| 1184 StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); | 1223 StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); |
| 1185 session_deps_.socket_factory->AddSocketDataProvider(&data); | 1224 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 1186 | 1225 |
| 1226 AddSSLSocketData(); |
| 1227 |
| 1187 CreateNetworkSession(); | 1228 CreateNetworkSession(); |
| 1188 CreateInsecureSpdySession(); | 1229 CreateSecureSpdySession(); |
| 1189 | 1230 |
| 1190 // Fix max_concurrent_streams to allow for one open stream. | 1231 // Fix max_concurrent_streams to allow for one open stream. |
| 1191 session_->max_concurrent_streams_ = 1; | 1232 session_->max_concurrent_streams_ = 1; |
| 1192 | 1233 |
| 1193 // Create two streams: one synchronously, and one which stalls. | 1234 // Create two streams: one synchronously, and one which stalls. |
| 1194 base::WeakPtr<SpdyStream> stream1 = | 1235 base::WeakPtr<SpdyStream> stream1 = |
| 1195 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 1236 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 1196 test_url_, MEDIUM, NetLogWithSource()); | 1237 test_url_, MEDIUM, NetLogWithSource()); |
| 1197 | 1238 |
| 1198 SpdyStreamRequest request2; | 1239 SpdyStreamRequest request2; |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1254 nullptr, 0, 4, 1, "https://www.example.org/0.dat")); | 1295 nullptr, 0, 4, 1, "https://www.example.org/0.dat")); |
| 1255 MockRead reads[] = { | 1296 MockRead reads[] = { |
| 1256 CreateMockRead(push_a, 1), CreateMockRead(push_a_body, 2), | 1297 CreateMockRead(push_a, 1), CreateMockRead(push_a_body, 2), |
| 1257 MockRead(ASYNC, ERR_IO_PENDING, 3), CreateMockRead(push_b, 4), | 1298 MockRead(ASYNC, ERR_IO_PENDING, 3), CreateMockRead(push_b, 4), |
| 1258 MockRead(ASYNC, ERR_IO_PENDING, 6), MockRead(ASYNC, 0, 7) // EOF | 1299 MockRead(ASYNC, ERR_IO_PENDING, 6), MockRead(ASYNC, 0, 7) // EOF |
| 1259 }; | 1300 }; |
| 1260 | 1301 |
| 1261 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 1302 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 1262 session_deps_.socket_factory->AddSocketDataProvider(&data); | 1303 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 1263 | 1304 |
| 1305 AddSSLSocketData(); |
| 1306 |
| 1264 CreateNetworkSession(); | 1307 CreateNetworkSession(); |
| 1265 CreateInsecureSpdySession(); | 1308 CreateSecureSpdySession(); |
| 1266 | 1309 |
| 1267 // Process the principal request, and the first push stream request & body. | 1310 // Process the principal request, and the first push stream request & body. |
| 1268 base::WeakPtr<SpdyStream> spdy_stream = | 1311 base::WeakPtr<SpdyStream> spdy_stream = |
| 1269 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 1312 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 1270 test_url_, MEDIUM, NetLogWithSource()); | 1313 test_url_, MEDIUM, NetLogWithSource()); |
| 1271 test::StreamDelegateDoNothing delegate(spdy_stream); | 1314 test::StreamDelegateDoNothing delegate(spdy_stream); |
| 1272 spdy_stream->SetDelegate(&delegate); | 1315 spdy_stream->SetDelegate(&delegate); |
| 1273 | 1316 |
| 1274 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); | 1317 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); |
| 1275 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); | 1318 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1316 }; | 1359 }; |
| 1317 SpdySerializedFrame write_ping(spdy_util_.ConstructSpdyPing(1, false)); | 1360 SpdySerializedFrame write_ping(spdy_util_.ConstructSpdyPing(1, false)); |
| 1318 SpdySerializedFrame goaway( | 1361 SpdySerializedFrame goaway( |
| 1319 spdy_util_.ConstructSpdyGoAway(0, GOAWAY_PROTOCOL_ERROR, "Failed ping.")); | 1362 spdy_util_.ConstructSpdyGoAway(0, GOAWAY_PROTOCOL_ERROR, "Failed ping.")); |
| 1320 MockWrite writes[] = {CreateMockWrite(write_ping), CreateMockWrite(goaway)}; | 1363 MockWrite writes[] = {CreateMockWrite(write_ping), CreateMockWrite(goaway)}; |
| 1321 | 1364 |
| 1322 StaticSocketDataProvider data( | 1365 StaticSocketDataProvider data( |
| 1323 reads, arraysize(reads), writes, arraysize(writes)); | 1366 reads, arraysize(reads), writes, arraysize(writes)); |
| 1324 session_deps_.socket_factory->AddSocketDataProvider(&data); | 1367 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 1325 | 1368 |
| 1369 AddSSLSocketData(); |
| 1370 |
| 1326 CreateNetworkSession(); | 1371 CreateNetworkSession(); |
| 1327 CreateInsecureSpdySession(); | 1372 CreateSecureSpdySession(); |
| 1328 | 1373 |
| 1329 base::WeakPtr<SpdyStream> spdy_stream1 = | 1374 base::WeakPtr<SpdyStream> spdy_stream1 = |
| 1330 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, session_, test_url_, | 1375 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, session_, test_url_, |
| 1331 MEDIUM, NetLogWithSource()); | 1376 MEDIUM, NetLogWithSource()); |
| 1332 ASSERT_TRUE(spdy_stream1); | 1377 ASSERT_TRUE(spdy_stream1); |
| 1333 test::StreamDelegateSendImmediate delegate(spdy_stream1, nullptr); | 1378 test::StreamDelegateSendImmediate delegate(spdy_stream1, nullptr); |
| 1334 spdy_stream1->SetDelegate(&delegate); | 1379 spdy_stream1->SetDelegate(&delegate); |
| 1335 | 1380 |
| 1336 session_->set_connection_at_risk_of_loss_time( | 1381 session_->set_connection_at_risk_of_loss_time( |
| 1337 base::TimeDelta::FromSeconds(0)); | 1382 base::TimeDelta::FromSeconds(0)); |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1380 CreateMockRead(settings_frame, 0), MockRead(ASYNC, ERR_IO_PENDING, 2), | 1425 CreateMockRead(settings_frame, 0), MockRead(ASYNC, ERR_IO_PENDING, 2), |
| 1381 MockRead(ASYNC, 0, 3), | 1426 MockRead(ASYNC, 0, 3), |
| 1382 }; | 1427 }; |
| 1383 | 1428 |
| 1384 SpdySerializedFrame settings_ack(spdy_util_.ConstructSpdySettingsAck()); | 1429 SpdySerializedFrame settings_ack(spdy_util_.ConstructSpdySettingsAck()); |
| 1385 MockWrite writes[] = {CreateMockWrite(settings_ack, 1)}; | 1430 MockWrite writes[] = {CreateMockWrite(settings_ack, 1)}; |
| 1386 | 1431 |
| 1387 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 1432 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 1388 session_deps_.socket_factory->AddSocketDataProvider(&data); | 1433 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 1389 | 1434 |
| 1435 AddSSLSocketData(); |
| 1436 |
| 1390 CreateNetworkSession(); | 1437 CreateNetworkSession(); |
| 1391 CreateInsecureSpdySession(); | 1438 CreateSecureSpdySession(); |
| 1392 | 1439 |
| 1393 // Create the maximum number of concurrent streams. | 1440 // Create the maximum number of concurrent streams. |
| 1394 for (size_t i = 0; i < kInitialMaxConcurrentStreams; ++i) { | 1441 for (size_t i = 0; i < kInitialMaxConcurrentStreams; ++i) { |
| 1395 base::WeakPtr<SpdyStream> spdy_stream = | 1442 base::WeakPtr<SpdyStream> spdy_stream = |
| 1396 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, session_, | 1443 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, session_, |
| 1397 test_url_, MEDIUM, NetLogWithSource()); | 1444 test_url_, MEDIUM, NetLogWithSource()); |
| 1398 ASSERT_TRUE(spdy_stream); | 1445 ASSERT_TRUE(spdy_stream); |
| 1399 } | 1446 } |
| 1400 | 1447 |
| 1401 StreamReleaserCallback stream_releaser; | 1448 StreamReleaserCallback stream_releaser; |
| (...skipping 23 matching lines...) Expand all Loading... |
| 1425 TEST_F(SpdySessionTest, CancelPendingCreateStream) { | 1472 TEST_F(SpdySessionTest, CancelPendingCreateStream) { |
| 1426 session_deps_.host_resolver->set_synchronous_mode(true); | 1473 session_deps_.host_resolver->set_synchronous_mode(true); |
| 1427 | 1474 |
| 1428 MockRead reads[] = { | 1475 MockRead reads[] = { |
| 1429 MockRead(SYNCHRONOUS, ERR_IO_PENDING) // Stall forever. | 1476 MockRead(SYNCHRONOUS, ERR_IO_PENDING) // Stall forever. |
| 1430 }; | 1477 }; |
| 1431 | 1478 |
| 1432 StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); | 1479 StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); |
| 1433 session_deps_.socket_factory->AddSocketDataProvider(&data); | 1480 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 1434 | 1481 |
| 1482 AddSSLSocketData(); |
| 1483 |
| 1435 CreateNetworkSession(); | 1484 CreateNetworkSession(); |
| 1436 | 1485 |
| 1437 // Initialize the SpdySetting with 1 max concurrent streams. | 1486 // Initialize the SpdySetting with 1 max concurrent streams. |
| 1438 spdy_session_pool_->http_server_properties()->SetSpdySetting( | 1487 spdy_session_pool_->http_server_properties()->SetSpdySetting( |
| 1439 test_server_, SETTINGS_MAX_CONCURRENT_STREAMS, | 1488 test_server_, SETTINGS_MAX_CONCURRENT_STREAMS, |
| 1440 SETTINGS_FLAG_PLEASE_PERSIST, 1); | 1489 SETTINGS_FLAG_PLEASE_PERSIST, 1); |
| 1441 | 1490 |
| 1442 CreateInsecureSpdySession(); | 1491 CreateSecureSpdySession(); |
| 1443 | 1492 |
| 1444 // Leave room for only one more stream to be created. | 1493 // Leave room for only one more stream to be created. |
| 1445 for (size_t i = 0; i < kInitialMaxConcurrentStreams - 1; ++i) { | 1494 for (size_t i = 0; i < kInitialMaxConcurrentStreams - 1; ++i) { |
| 1446 base::WeakPtr<SpdyStream> spdy_stream = | 1495 base::WeakPtr<SpdyStream> spdy_stream = |
| 1447 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, session_, | 1496 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, session_, |
| 1448 test_url_, MEDIUM, NetLogWithSource()); | 1497 test_url_, MEDIUM, NetLogWithSource()); |
| 1449 ASSERT_TRUE(spdy_stream); | 1498 ASSERT_TRUE(spdy_stream); |
| 1450 } | 1499 } |
| 1451 | 1500 |
| 1452 // Create 2 more streams. First will succeed. Second will be pending. | 1501 // Create 2 more streams. First will succeed. Second will be pending. |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1491 SpdySerializedFrame settings_frame( | 1540 SpdySerializedFrame settings_frame( |
| 1492 spdy_util_.ConstructSpdySettings(settings)); | 1541 spdy_util_.ConstructSpdySettings(settings)); |
| 1493 MockWrite writes[] = {MockWrite(ASYNC, kHttp2ConnectionHeaderPrefix, | 1542 MockWrite writes[] = {MockWrite(ASYNC, kHttp2ConnectionHeaderPrefix, |
| 1494 kHttp2ConnectionHeaderPrefixSize), | 1543 kHttp2ConnectionHeaderPrefixSize), |
| 1495 CreateMockWrite(settings_frame)}; | 1544 CreateMockWrite(settings_frame)}; |
| 1496 | 1545 |
| 1497 StaticSocketDataProvider data(reads, arraysize(reads), writes, | 1546 StaticSocketDataProvider data(reads, arraysize(reads), writes, |
| 1498 arraysize(writes)); | 1547 arraysize(writes)); |
| 1499 session_deps_.socket_factory->AddSocketDataProvider(&data); | 1548 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 1500 | 1549 |
| 1501 // Load a cert that is valid for: | 1550 AddSSLSocketData(); |
| 1502 // www.example.org | |
| 1503 // mail.example.org | |
| 1504 // mail.example.com | |
| 1505 base::FilePath certs_dir = GetTestCertsDirectory(); | |
| 1506 scoped_refptr<X509Certificate> test_cert( | |
| 1507 ImportCertFromFile(certs_dir, "spdy_pooling.pem")); | |
| 1508 ASSERT_NE(static_cast<X509Certificate*>(nullptr), test_cert.get()); | |
| 1509 | |
| 1510 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); | |
| 1511 ssl.cert = test_cert; | |
| 1512 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); | |
| 1513 | 1551 |
| 1514 CreateNetworkSession(); | 1552 CreateNetworkSession(); |
| 1515 | 1553 |
| 1516 const uint32_t initial_max_concurrent_streams = 1; | 1554 const uint32_t initial_max_concurrent_streams = 1; |
| 1517 spdy_session_pool_->http_server_properties()->SetSpdySetting( | 1555 spdy_session_pool_->http_server_properties()->SetSpdySetting( |
| 1518 test_server_, SETTINGS_MAX_CONCURRENT_STREAMS, | 1556 test_server_, SETTINGS_MAX_CONCURRENT_STREAMS, |
| 1519 SETTINGS_FLAG_PLEASE_PERSIST, initial_max_concurrent_streams); | 1557 SETTINGS_FLAG_PLEASE_PERSIST, initial_max_concurrent_streams); |
| 1520 | 1558 |
| 1521 SpdySessionPoolPeer pool_peer(spdy_session_pool_); | 1559 SpdySessionPoolPeer pool_peer(spdy_session_pool_); |
| 1522 pool_peer.SetEnableSendingInitialData(true); | 1560 pool_peer.SetEnableSendingInitialData(true); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 1546 TEST_F(SpdySessionTest, Initialize) { | 1584 TEST_F(SpdySessionTest, Initialize) { |
| 1547 session_deps_.host_resolver->set_synchronous_mode(true); | 1585 session_deps_.host_resolver->set_synchronous_mode(true); |
| 1548 | 1586 |
| 1549 MockRead reads[] = { | 1587 MockRead reads[] = { |
| 1550 MockRead(ASYNC, 0, 0) // EOF | 1588 MockRead(ASYNC, 0, 0) // EOF |
| 1551 }; | 1589 }; |
| 1552 | 1590 |
| 1553 StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); | 1591 StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); |
| 1554 session_deps_.socket_factory->AddSocketDataProvider(&data); | 1592 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 1555 | 1593 |
| 1594 AddSSLSocketData(); |
| 1595 |
| 1556 CreateNetworkSession(); | 1596 CreateNetworkSession(); |
| 1557 CreateInsecureSpdySession(); | 1597 CreateSecureSpdySession(); |
| 1558 EXPECT_TRUE(HasSpdySession(spdy_session_pool_, key_)); | 1598 EXPECT_TRUE(HasSpdySession(spdy_session_pool_, key_)); |
| 1559 | 1599 |
| 1560 // Flush the read completion task. | 1600 // Flush the read completion task. |
| 1561 base::RunLoop().RunUntilIdle(); | 1601 base::RunLoop().RunUntilIdle(); |
| 1562 | 1602 |
| 1563 TestNetLogEntry::List entries; | 1603 TestNetLogEntry::List entries; |
| 1564 log_.GetEntries(&entries); | 1604 log_.GetEntries(&entries); |
| 1565 EXPECT_LT(0u, entries.size()); | 1605 EXPECT_LT(0u, entries.size()); |
| 1566 | 1606 |
| 1567 // Check that we logged HTTP2_SESSION_INITIALIZED correctly. | 1607 // Check that we logged HTTP2_SESSION_INITIALIZED correctly. |
| (...skipping 15 matching lines...) Expand all Loading... |
| 1583 | 1623 |
| 1584 SpdySerializedFrame goaway( | 1624 SpdySerializedFrame goaway( |
| 1585 spdy_util_.ConstructSpdyGoAway(42, GOAWAY_ENHANCE_YOUR_CALM, "foo")); | 1625 spdy_util_.ConstructSpdyGoAway(42, GOAWAY_ENHANCE_YOUR_CALM, "foo")); |
| 1586 MockRead reads[] = { | 1626 MockRead reads[] = { |
| 1587 CreateMockRead(goaway), MockRead(SYNCHRONOUS, 0, 0) // EOF | 1627 CreateMockRead(goaway), MockRead(SYNCHRONOUS, 0, 0) // EOF |
| 1588 }; | 1628 }; |
| 1589 | 1629 |
| 1590 StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); | 1630 StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); |
| 1591 session_deps_.socket_factory->AddSocketDataProvider(&data); | 1631 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 1592 | 1632 |
| 1633 AddSSLSocketData(); |
| 1634 |
| 1593 CreateNetworkSession(); | 1635 CreateNetworkSession(); |
| 1594 CreateInsecureSpdySession(); | 1636 CreateSecureSpdySession(); |
| 1595 EXPECT_TRUE(HasSpdySession(spdy_session_pool_, key_)); | 1637 EXPECT_TRUE(HasSpdySession(spdy_session_pool_, key_)); |
| 1596 | 1638 |
| 1597 // Flush the read completion task. | 1639 // Flush the read completion task. |
| 1598 base::RunLoop().RunUntilIdle(); | 1640 base::RunLoop().RunUntilIdle(); |
| 1599 | 1641 |
| 1600 EXPECT_FALSE(HasSpdySession(spdy_session_pool_, key_)); | 1642 EXPECT_FALSE(HasSpdySession(spdy_session_pool_, key_)); |
| 1601 EXPECT_FALSE(session_); | 1643 EXPECT_FALSE(session_); |
| 1602 | 1644 |
| 1603 // Check that the NetLog was filled reasonably. | 1645 // Check that the NetLog was filled reasonably. |
| 1604 TestNetLogEntry::List entries; | 1646 TestNetLogEntry::List entries; |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1638 TEST_F(SpdySessionTest, NetLogOnSessionEOF) { | 1680 TEST_F(SpdySessionTest, NetLogOnSessionEOF) { |
| 1639 session_deps_.host_resolver->set_synchronous_mode(true); | 1681 session_deps_.host_resolver->set_synchronous_mode(true); |
| 1640 | 1682 |
| 1641 MockRead reads[] = { | 1683 MockRead reads[] = { |
| 1642 MockRead(SYNCHRONOUS, 0, 0) // EOF | 1684 MockRead(SYNCHRONOUS, 0, 0) // EOF |
| 1643 }; | 1685 }; |
| 1644 | 1686 |
| 1645 StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); | 1687 StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); |
| 1646 session_deps_.socket_factory->AddSocketDataProvider(&data); | 1688 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 1647 | 1689 |
| 1690 AddSSLSocketData(); |
| 1691 |
| 1648 CreateNetworkSession(); | 1692 CreateNetworkSession(); |
| 1649 CreateInsecureSpdySession(); | 1693 CreateSecureSpdySession(); |
| 1650 EXPECT_TRUE(HasSpdySession(spdy_session_pool_, key_)); | 1694 EXPECT_TRUE(HasSpdySession(spdy_session_pool_, key_)); |
| 1651 | 1695 |
| 1652 // Flush the read completion task. | 1696 // Flush the read completion task. |
| 1653 base::RunLoop().RunUntilIdle(); | 1697 base::RunLoop().RunUntilIdle(); |
| 1654 | 1698 |
| 1655 EXPECT_FALSE(HasSpdySession(spdy_session_pool_, key_)); | 1699 EXPECT_FALSE(HasSpdySession(spdy_session_pool_, key_)); |
| 1656 EXPECT_FALSE(session_); | 1700 EXPECT_FALSE(session_); |
| 1657 | 1701 |
| 1658 // Check that the NetLog was filled reasonably. | 1702 // Check that the NetLog was filled reasonably. |
| 1659 TestNetLogEntry::List entries; | 1703 TestNetLogEntry::List entries; |
| (...skipping 19 matching lines...) Expand all Loading... |
| 1679 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true)); | 1723 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, MEDIUM, true)); |
| 1680 MockWrite writes[] = { | 1724 MockWrite writes[] = { |
| 1681 CreateMockWrite(req, 0), | 1725 CreateMockWrite(req, 0), |
| 1682 }; | 1726 }; |
| 1683 MockRead reads[] = { | 1727 MockRead reads[] = { |
| 1684 MockRead(ASYNC, ERR_IO_PENDING, 1), MockRead(ASYNC, 0, 2) // EOF | 1728 MockRead(ASYNC, ERR_IO_PENDING, 1), MockRead(ASYNC, 0, 2) // EOF |
| 1685 }; | 1729 }; |
| 1686 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 1730 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 1687 session_deps_.socket_factory->AddSocketDataProvider(&data); | 1731 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 1688 | 1732 |
| 1733 AddSSLSocketData(); |
| 1734 |
| 1689 CreateNetworkSession(); | 1735 CreateNetworkSession(); |
| 1690 CreateInsecureSpdySession(); | 1736 CreateSecureSpdySession(); |
| 1691 | 1737 |
| 1692 base::WeakPtr<SpdyStream> spdy_stream = | 1738 base::WeakPtr<SpdyStream> spdy_stream = |
| 1693 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 1739 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 1694 test_url_, MEDIUM, NetLogWithSource()); | 1740 test_url_, MEDIUM, NetLogWithSource()); |
| 1695 test::StreamDelegateDoNothing delegate(spdy_stream); | 1741 test::StreamDelegateDoNothing delegate(spdy_stream); |
| 1696 spdy_stream->SetDelegate(&delegate); | 1742 spdy_stream->SetDelegate(&delegate); |
| 1697 | 1743 |
| 1698 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); | 1744 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); |
| 1699 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); | 1745 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); |
| 1700 | 1746 |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1736 CreateMockRead(resp_highest, 2), CreateMockRead(body_highest, 3), | 1782 CreateMockRead(resp_highest, 2), CreateMockRead(body_highest, 3), |
| 1737 CreateMockRead(resp_lowest, 4), CreateMockRead(body_lowest, 5), | 1783 CreateMockRead(resp_lowest, 4), CreateMockRead(body_lowest, 5), |
| 1738 MockRead(ASYNC, 0, 6) // EOF | 1784 MockRead(ASYNC, 0, 6) // EOF |
| 1739 }; | 1785 }; |
| 1740 | 1786 |
| 1741 session_deps_.host_resolver->set_synchronous_mode(true); | 1787 session_deps_.host_resolver->set_synchronous_mode(true); |
| 1742 | 1788 |
| 1743 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 1789 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 1744 session_deps_.socket_factory->AddSocketDataProvider(&data); | 1790 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 1745 | 1791 |
| 1792 AddSSLSocketData(); |
| 1793 |
| 1746 CreateNetworkSession(); | 1794 CreateNetworkSession(); |
| 1747 CreateInsecureSpdySession(); | 1795 CreateSecureSpdySession(); |
| 1748 | 1796 |
| 1749 base::WeakPtr<SpdyStream> spdy_stream_lowest = | 1797 base::WeakPtr<SpdyStream> spdy_stream_lowest = |
| 1750 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 1798 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 1751 test_url_, LOWEST, NetLogWithSource()); | 1799 test_url_, LOWEST, NetLogWithSource()); |
| 1752 ASSERT_TRUE(spdy_stream_lowest); | 1800 ASSERT_TRUE(spdy_stream_lowest); |
| 1753 EXPECT_EQ(0u, spdy_stream_lowest->stream_id()); | 1801 EXPECT_EQ(0u, spdy_stream_lowest->stream_id()); |
| 1754 test::StreamDelegateDoNothing delegate_lowest(spdy_stream_lowest); | 1802 test::StreamDelegateDoNothing delegate_lowest(spdy_stream_lowest); |
| 1755 spdy_stream_lowest->SetDelegate(&delegate_lowest); | 1803 spdy_stream_lowest->SetDelegate(&delegate_lowest); |
| 1756 | 1804 |
| 1757 base::WeakPtr<SpdyStream> spdy_stream_highest = | 1805 base::WeakPtr<SpdyStream> spdy_stream_highest = |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1796 MockRead reads[] = { | 1844 MockRead reads[] = { |
| 1797 CreateMockRead(resp2, 1), MockRead(ASYNC, ERR_IO_PENDING, 2), | 1845 CreateMockRead(resp2, 1), MockRead(ASYNC, ERR_IO_PENDING, 2), |
| 1798 CreateMockRead(body2, 3), MockRead(ASYNC, 0, 4) // EOF | 1846 CreateMockRead(body2, 3), MockRead(ASYNC, 0, 4) // EOF |
| 1799 }; | 1847 }; |
| 1800 | 1848 |
| 1801 session_deps_.host_resolver->set_synchronous_mode(true); | 1849 session_deps_.host_resolver->set_synchronous_mode(true); |
| 1802 | 1850 |
| 1803 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 1851 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 1804 session_deps_.socket_factory->AddSocketDataProvider(&data); | 1852 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 1805 | 1853 |
| 1854 AddSSLSocketData(); |
| 1855 |
| 1806 CreateNetworkSession(); | 1856 CreateNetworkSession(); |
| 1807 CreateInsecureSpdySession(); | 1857 CreateSecureSpdySession(); |
| 1808 | 1858 |
| 1809 base::WeakPtr<SpdyStream> spdy_stream1 = | 1859 base::WeakPtr<SpdyStream> spdy_stream1 = |
| 1810 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 1860 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 1811 test_url_, HIGHEST, NetLogWithSource()); | 1861 test_url_, HIGHEST, NetLogWithSource()); |
| 1812 ASSERT_TRUE(spdy_stream1); | 1862 ASSERT_TRUE(spdy_stream1); |
| 1813 EXPECT_EQ(0u, spdy_stream1->stream_id()); | 1863 EXPECT_EQ(0u, spdy_stream1->stream_id()); |
| 1814 test::StreamDelegateDoNothing delegate1(spdy_stream1); | 1864 test::StreamDelegateDoNothing delegate1(spdy_stream1); |
| 1815 spdy_stream1->SetDelegate(&delegate1); | 1865 spdy_stream1->SetDelegate(&delegate1); |
| 1816 | 1866 |
| 1817 base::WeakPtr<SpdyStream> spdy_stream2 = | 1867 base::WeakPtr<SpdyStream> spdy_stream2 = |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1855 MockWrite writes[] = { | 1905 MockWrite writes[] = { |
| 1856 MockWrite(ASYNC, 0, 1) // EOF | 1906 MockWrite(ASYNC, 0, 1) // EOF |
| 1857 }; | 1907 }; |
| 1858 | 1908 |
| 1859 MockRead reads[] = { | 1909 MockRead reads[] = { |
| 1860 MockRead(ASYNC, 0, 0) // EOF | 1910 MockRead(ASYNC, 0, 0) // EOF |
| 1861 }; | 1911 }; |
| 1862 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 1912 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 1863 session_deps_.socket_factory->AddSocketDataProvider(&data); | 1913 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 1864 | 1914 |
| 1915 AddSSLSocketData(); |
| 1916 |
| 1865 CreateNetworkSession(); | 1917 CreateNetworkSession(); |
| 1866 CreateInsecureSpdySession(); | 1918 CreateSecureSpdySession(); |
| 1867 | 1919 |
| 1868 base::WeakPtr<SpdyStream> spdy_stream1 = | 1920 base::WeakPtr<SpdyStream> spdy_stream1 = |
| 1869 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, session_, test_url_, | 1921 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, session_, test_url_, |
| 1870 HIGHEST, NetLogWithSource()); | 1922 HIGHEST, NetLogWithSource()); |
| 1871 ASSERT_TRUE(spdy_stream1); | 1923 ASSERT_TRUE(spdy_stream1); |
| 1872 EXPECT_EQ(0u, spdy_stream1->stream_id()); | 1924 EXPECT_EQ(0u, spdy_stream1->stream_id()); |
| 1873 | 1925 |
| 1874 base::WeakPtr<SpdyStream> spdy_stream2 = | 1926 base::WeakPtr<SpdyStream> spdy_stream2 = |
| 1875 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, session_, test_url_, | 1927 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, session_, test_url_, |
| 1876 LOWEST, NetLogWithSource()); | 1928 LOWEST, NetLogWithSource()); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 1907 } | 1959 } |
| 1908 | 1960 |
| 1909 // Create two streams that are set to close each other on close, and | 1961 // Create two streams that are set to close each other on close, and |
| 1910 // then close the session. Nothing should blow up. | 1962 // then close the session. Nothing should blow up. |
| 1911 TEST_F(SpdySessionTest, CloseSessionWithTwoCreatedMutuallyClosingStreams) { | 1963 TEST_F(SpdySessionTest, CloseSessionWithTwoCreatedMutuallyClosingStreams) { |
| 1912 session_deps_.host_resolver->set_synchronous_mode(true); | 1964 session_deps_.host_resolver->set_synchronous_mode(true); |
| 1913 | 1965 |
| 1914 SequencedSocketData data(nullptr, 0, nullptr, 0); | 1966 SequencedSocketData data(nullptr, 0, nullptr, 0); |
| 1915 session_deps_.socket_factory->AddSocketDataProvider(&data); | 1967 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 1916 | 1968 |
| 1969 AddSSLSocketData(); |
| 1970 |
| 1917 CreateNetworkSession(); | 1971 CreateNetworkSession(); |
| 1918 CreateInsecureSpdySession(); | 1972 CreateSecureSpdySession(); |
| 1919 | 1973 |
| 1920 base::WeakPtr<SpdyStream> spdy_stream1 = | 1974 base::WeakPtr<SpdyStream> spdy_stream1 = |
| 1921 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, session_, test_url_, | 1975 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, session_, test_url_, |
| 1922 HIGHEST, NetLogWithSource()); | 1976 HIGHEST, NetLogWithSource()); |
| 1923 ASSERT_TRUE(spdy_stream1); | 1977 ASSERT_TRUE(spdy_stream1); |
| 1924 EXPECT_EQ(0u, spdy_stream1->stream_id()); | 1978 EXPECT_EQ(0u, spdy_stream1->stream_id()); |
| 1925 | 1979 |
| 1926 base::WeakPtr<SpdyStream> spdy_stream2 = | 1980 base::WeakPtr<SpdyStream> spdy_stream2 = |
| 1927 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, session_, test_url_, | 1981 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, session_, test_url_, |
| 1928 LOWEST, NetLogWithSource()); | 1982 LOWEST, NetLogWithSource()); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1973 CreateMockWrite(req1, 0), CreateMockWrite(req2, 1), | 2027 CreateMockWrite(req1, 0), CreateMockWrite(req2, 1), |
| 1974 }; | 2028 }; |
| 1975 | 2029 |
| 1976 MockRead reads[] = { | 2030 MockRead reads[] = { |
| 1977 MockRead(ASYNC, ERR_IO_PENDING, 2), MockRead(ASYNC, 0, 3) // EOF | 2031 MockRead(ASYNC, ERR_IO_PENDING, 2), MockRead(ASYNC, 0, 3) // EOF |
| 1978 }; | 2032 }; |
| 1979 | 2033 |
| 1980 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 2034 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 1981 session_deps_.socket_factory->AddSocketDataProvider(&data); | 2035 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 1982 | 2036 |
| 2037 AddSSLSocketData(); |
| 2038 |
| 1983 CreateNetworkSession(); | 2039 CreateNetworkSession(); |
| 1984 CreateInsecureSpdySession(); | 2040 CreateSecureSpdySession(); |
| 1985 | 2041 |
| 1986 base::WeakPtr<SpdyStream> spdy_stream1 = | 2042 base::WeakPtr<SpdyStream> spdy_stream1 = |
| 1987 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 2043 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 1988 test_url_, MEDIUM, NetLogWithSource()); | 2044 test_url_, MEDIUM, NetLogWithSource()); |
| 1989 ASSERT_TRUE(spdy_stream1); | 2045 ASSERT_TRUE(spdy_stream1); |
| 1990 EXPECT_EQ(0u, spdy_stream1->stream_id()); | 2046 EXPECT_EQ(0u, spdy_stream1->stream_id()); |
| 1991 | 2047 |
| 1992 base::WeakPtr<SpdyStream> spdy_stream2 = | 2048 base::WeakPtr<SpdyStream> spdy_stream2 = |
| 1993 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 2049 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 1994 test_url_, MEDIUM, NetLogWithSource()); | 2050 test_url_, MEDIUM, NetLogWithSource()); |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2044 CreateMockWrite(req1, 0), CreateMockWrite(req2, 1), | 2100 CreateMockWrite(req1, 0), CreateMockWrite(req2, 1), |
| 2045 }; | 2101 }; |
| 2046 | 2102 |
| 2047 MockRead reads[] = { | 2103 MockRead reads[] = { |
| 2048 MockRead(ASYNC, ERR_IO_PENDING, 2), MockRead(ASYNC, 0, 3) // EOF | 2104 MockRead(ASYNC, ERR_IO_PENDING, 2), MockRead(ASYNC, 0, 3) // EOF |
| 2049 }; | 2105 }; |
| 2050 | 2106 |
| 2051 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 2107 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 2052 session_deps_.socket_factory->AddSocketDataProvider(&data); | 2108 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 2053 | 2109 |
| 2110 AddSSLSocketData(); |
| 2111 |
| 2054 CreateNetworkSession(); | 2112 CreateNetworkSession(); |
| 2055 CreateInsecureSpdySession(); | 2113 CreateSecureSpdySession(); |
| 2056 | 2114 |
| 2057 base::WeakPtr<SpdyStream> spdy_stream1 = | 2115 base::WeakPtr<SpdyStream> spdy_stream1 = |
| 2058 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 2116 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 2059 test_url_, MEDIUM, NetLogWithSource()); | 2117 test_url_, MEDIUM, NetLogWithSource()); |
| 2060 ASSERT_TRUE(spdy_stream1); | 2118 ASSERT_TRUE(spdy_stream1); |
| 2061 EXPECT_EQ(0u, spdy_stream1->stream_id()); | 2119 EXPECT_EQ(0u, spdy_stream1->stream_id()); |
| 2062 | 2120 |
| 2063 base::WeakPtr<SpdyStream> spdy_stream2 = | 2121 base::WeakPtr<SpdyStream> spdy_stream2 = |
| 2064 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 2122 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 2065 test_url_, MEDIUM, NetLogWithSource()); | 2123 test_url_, MEDIUM, NetLogWithSource()); |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2139 CreateMockWrite(req, 0), CreateMockWrite(goaway, 1), | 2197 CreateMockWrite(req, 0), CreateMockWrite(goaway, 1), |
| 2140 CreateMockWrite(rst, 3), | 2198 CreateMockWrite(rst, 3), |
| 2141 }; | 2199 }; |
| 2142 | 2200 |
| 2143 MockRead reads[] = { | 2201 MockRead reads[] = { |
| 2144 MockRead(ASYNC, 0, 2) // EOF | 2202 MockRead(ASYNC, 0, 2) // EOF |
| 2145 }; | 2203 }; |
| 2146 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 2204 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 2147 session_deps_.socket_factory->AddSocketDataProvider(&data); | 2205 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 2148 | 2206 |
| 2207 AddSSLSocketData(); |
| 2208 |
| 2149 CreateNetworkSession(); | 2209 CreateNetworkSession(); |
| 2150 CreateInsecureSpdySession(); | 2210 CreateSecureSpdySession(); |
| 2151 | 2211 |
| 2152 base::WeakPtr<SpdyStream> spdy_stream = | 2212 base::WeakPtr<SpdyStream> spdy_stream = |
| 2153 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 2213 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 2154 test_url_, MEDIUM, NetLogWithSource()); | 2214 test_url_, MEDIUM, NetLogWithSource()); |
| 2155 ASSERT_TRUE(spdy_stream); | 2215 ASSERT_TRUE(spdy_stream); |
| 2156 EXPECT_EQ(0u, spdy_stream->stream_id()); | 2216 EXPECT_EQ(0u, spdy_stream->stream_id()); |
| 2157 | 2217 |
| 2158 SessionClosingDelegate delegate(spdy_stream, session_); | 2218 SessionClosingDelegate delegate(spdy_stream, session_); |
| 2159 spdy_stream->SetDelegate(&delegate); | 2219 spdy_stream->SetDelegate(&delegate); |
| 2160 | 2220 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 2179 EXPECT_TRUE(data.AllWriteDataConsumed()); | 2239 EXPECT_TRUE(data.AllWriteDataConsumed()); |
| 2180 EXPECT_TRUE(data.AllReadDataConsumed()); | 2240 EXPECT_TRUE(data.AllReadDataConsumed()); |
| 2181 } | 2241 } |
| 2182 | 2242 |
| 2183 TEST_F(SpdySessionTest, VerifyDomainAuthentication) { | 2243 TEST_F(SpdySessionTest, VerifyDomainAuthentication) { |
| 2184 session_deps_.host_resolver->set_synchronous_mode(true); | 2244 session_deps_.host_resolver->set_synchronous_mode(true); |
| 2185 | 2245 |
| 2186 SequencedSocketData data(nullptr, 0, nullptr, 0); | 2246 SequencedSocketData data(nullptr, 0, nullptr, 0); |
| 2187 session_deps_.socket_factory->AddSocketDataProvider(&data); | 2247 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 2188 | 2248 |
| 2189 // Load a cert that is valid for: | 2249 AddSSLSocketData(); |
| 2190 // www.example.org | |
| 2191 // mail.example.org | |
| 2192 // mail.example.com | |
| 2193 base::FilePath certs_dir = GetTestCertsDirectory(); | |
| 2194 scoped_refptr<X509Certificate> test_cert( | |
| 2195 ImportCertFromFile(certs_dir, "spdy_pooling.pem")); | |
| 2196 ASSERT_NE(static_cast<X509Certificate*>(nullptr), test_cert.get()); | |
| 2197 | |
| 2198 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); | |
| 2199 ssl.cert = test_cert; | |
| 2200 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); | |
| 2201 | 2250 |
| 2202 CreateNetworkSession(); | 2251 CreateNetworkSession(); |
| 2203 CreateSecureSpdySession(); | 2252 CreateSecureSpdySession(); |
| 2204 | 2253 |
| 2205 EXPECT_TRUE(session_->VerifyDomainAuthentication("www.example.org")); | 2254 EXPECT_TRUE(session_->VerifyDomainAuthentication("www.example.org")); |
| 2206 EXPECT_TRUE(session_->VerifyDomainAuthentication("mail.example.org")); | 2255 EXPECT_TRUE(session_->VerifyDomainAuthentication("mail.example.org")); |
| 2207 EXPECT_TRUE(session_->VerifyDomainAuthentication("mail.example.com")); | 2256 EXPECT_TRUE(session_->VerifyDomainAuthentication("mail.example.com")); |
| 2208 EXPECT_FALSE(session_->VerifyDomainAuthentication("mail.google.com")); | 2257 EXPECT_FALSE(session_->VerifyDomainAuthentication("mail.google.com")); |
| 2209 } | 2258 } |
| 2210 | 2259 |
| 2211 TEST_F(SpdySessionTest, ConnectionPooledWithTlsChannelId) { | 2260 TEST_F(SpdySessionTest, ConnectionPooledWithTlsChannelId) { |
| 2212 session_deps_.host_resolver->set_synchronous_mode(true); | 2261 session_deps_.host_resolver->set_synchronous_mode(true); |
| 2213 | 2262 |
| 2214 SequencedSocketData data(nullptr, 0, nullptr, 0); | 2263 SequencedSocketData data(nullptr, 0, nullptr, 0); |
| 2215 session_deps_.socket_factory->AddSocketDataProvider(&data); | 2264 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 2216 | 2265 |
| 2217 // Load a cert that is valid for: | 2266 ssl_.channel_id_sent = true; |
| 2218 // www.example.org | 2267 AddSSLSocketData(); |
| 2219 // mail.example.org | |
| 2220 // mail.example.com | |
| 2221 base::FilePath certs_dir = GetTestCertsDirectory(); | |
| 2222 scoped_refptr<X509Certificate> test_cert( | |
| 2223 ImportCertFromFile(certs_dir, "spdy_pooling.pem")); | |
| 2224 ASSERT_NE(static_cast<X509Certificate*>(nullptr), test_cert.get()); | |
| 2225 | |
| 2226 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); | |
| 2227 ssl.channel_id_sent = true; | |
| 2228 ssl.cert = test_cert; | |
| 2229 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); | |
| 2230 | 2268 |
| 2231 CreateNetworkSession(); | 2269 CreateNetworkSession(); |
| 2232 CreateSecureSpdySession(); | 2270 CreateSecureSpdySession(); |
| 2233 | 2271 |
| 2234 EXPECT_TRUE(session_->VerifyDomainAuthentication("www.example.org")); | 2272 EXPECT_TRUE(session_->VerifyDomainAuthentication("www.example.org")); |
| 2235 EXPECT_TRUE(session_->VerifyDomainAuthentication("mail.example.org")); | 2273 EXPECT_TRUE(session_->VerifyDomainAuthentication("mail.example.org")); |
| 2236 EXPECT_FALSE(session_->VerifyDomainAuthentication("mail.example.com")); | 2274 EXPECT_FALSE(session_->VerifyDomainAuthentication("mail.example.com")); |
| 2237 EXPECT_FALSE(session_->VerifyDomainAuthentication("mail.google.com")); | 2275 EXPECT_FALSE(session_->VerifyDomainAuthentication("mail.google.com")); |
| 2238 } | 2276 } |
| 2239 | 2277 |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2282 CreateMockRead(body2, 7), | 2320 CreateMockRead(body2, 7), |
| 2283 CreateMockRead(resp3, 9), | 2321 CreateMockRead(resp3, 9), |
| 2284 CreateMockRead(body3, 10), | 2322 CreateMockRead(body3, 10), |
| 2285 MockRead(ASYNC, ERR_IO_PENDING, 11), | 2323 MockRead(ASYNC, ERR_IO_PENDING, 11), |
| 2286 MockRead(ASYNC, 0, 12) // EOF | 2324 MockRead(ASYNC, 0, 12) // EOF |
| 2287 }; | 2325 }; |
| 2288 | 2326 |
| 2289 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 2327 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 2290 session_deps_.socket_factory->AddSocketDataProvider(&data); | 2328 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 2291 | 2329 |
| 2330 AddSSLSocketData(); |
| 2331 |
| 2292 CreateNetworkSession(); | 2332 CreateNetworkSession(); |
| 2293 CreateInsecureSpdySession(); | 2333 CreateSecureSpdySession(); |
| 2294 | 2334 |
| 2295 // Read the settings frame. | 2335 // Read the settings frame. |
| 2296 base::RunLoop().RunUntilIdle(); | 2336 base::RunLoop().RunUntilIdle(); |
| 2297 | 2337 |
| 2298 base::WeakPtr<SpdyStream> spdy_stream1 = | 2338 base::WeakPtr<SpdyStream> spdy_stream1 = |
| 2299 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 2339 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 2300 test_url_, LOWEST, NetLogWithSource()); | 2340 test_url_, LOWEST, NetLogWithSource()); |
| 2301 ASSERT_TRUE(spdy_stream1); | 2341 ASSERT_TRUE(spdy_stream1); |
| 2302 EXPECT_EQ(0u, spdy_stream1->stream_id()); | 2342 EXPECT_EQ(0u, spdy_stream1->stream_id()); |
| 2303 test::StreamDelegateDoNothing delegate1(spdy_stream1); | 2343 test::StreamDelegateDoNothing delegate1(spdy_stream1); |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2387 TEST_F(SpdySessionTest, CancelTwoStalledCreateStream) { | 2427 TEST_F(SpdySessionTest, CancelTwoStalledCreateStream) { |
| 2388 session_deps_.host_resolver->set_synchronous_mode(true); | 2428 session_deps_.host_resolver->set_synchronous_mode(true); |
| 2389 | 2429 |
| 2390 MockRead reads[] = { | 2430 MockRead reads[] = { |
| 2391 MockRead(SYNCHRONOUS, ERR_IO_PENDING) // Stall forever. | 2431 MockRead(SYNCHRONOUS, ERR_IO_PENDING) // Stall forever. |
| 2392 }; | 2432 }; |
| 2393 | 2433 |
| 2394 StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); | 2434 StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); |
| 2395 session_deps_.socket_factory->AddSocketDataProvider(&data); | 2435 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 2396 | 2436 |
| 2437 AddSSLSocketData(); |
| 2438 |
| 2397 CreateNetworkSession(); | 2439 CreateNetworkSession(); |
| 2398 CreateInsecureSpdySession(); | 2440 CreateSecureSpdySession(); |
| 2399 | 2441 |
| 2400 // Leave room for only one more stream to be created. | 2442 // Leave room for only one more stream to be created. |
| 2401 for (size_t i = 0; i < kInitialMaxConcurrentStreams - 1; ++i) { | 2443 for (size_t i = 0; i < kInitialMaxConcurrentStreams - 1; ++i) { |
| 2402 base::WeakPtr<SpdyStream> spdy_stream = | 2444 base::WeakPtr<SpdyStream> spdy_stream = |
| 2403 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, session_, | 2445 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, session_, |
| 2404 test_url_, MEDIUM, NetLogWithSource()); | 2446 test_url_, MEDIUM, NetLogWithSource()); |
| 2405 ASSERT_TRUE(spdy_stream); | 2447 ASSERT_TRUE(spdy_stream); |
| 2406 } | 2448 } |
| 2407 | 2449 |
| 2408 base::WeakPtr<SpdyStream> spdy_stream1 = | 2450 base::WeakPtr<SpdyStream> spdy_stream1 = |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2500 CreateMockRead(partial_data_frame, 4, SYNCHRONOUS), | 2542 CreateMockRead(partial_data_frame, 4, SYNCHRONOUS), |
| 2501 CreateMockRead(partial_data_frame, 5, SYNCHRONOUS), | 2543 CreateMockRead(partial_data_frame, 5, SYNCHRONOUS), |
| 2502 CreateMockRead(finish_data_frame, 6, SYNCHRONOUS), | 2544 CreateMockRead(finish_data_frame, 6, SYNCHRONOUS), |
| 2503 MockRead(ASYNC, 0, 7) // EOF | 2545 MockRead(ASYNC, 0, 7) // EOF |
| 2504 }; | 2546 }; |
| 2505 | 2547 |
| 2506 // Create SpdySession and SpdyStream and send the request. | 2548 // Create SpdySession and SpdyStream and send the request. |
| 2507 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 2549 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 2508 session_deps_.socket_factory->AddSocketDataProvider(&data); | 2550 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 2509 | 2551 |
| 2552 AddSSLSocketData(); |
| 2553 |
| 2510 CreateNetworkSession(); | 2554 CreateNetworkSession(); |
| 2511 CreateInsecureSpdySession(); | 2555 CreateSecureSpdySession(); |
| 2512 | 2556 |
| 2513 base::WeakPtr<SpdyStream> spdy_stream1 = | 2557 base::WeakPtr<SpdyStream> spdy_stream1 = |
| 2514 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 2558 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 2515 test_url_, MEDIUM, NetLogWithSource()); | 2559 test_url_, MEDIUM, NetLogWithSource()); |
| 2516 ASSERT_TRUE(spdy_stream1); | 2560 ASSERT_TRUE(spdy_stream1); |
| 2517 EXPECT_EQ(0u, spdy_stream1->stream_id()); | 2561 EXPECT_EQ(0u, spdy_stream1->stream_id()); |
| 2518 test::StreamDelegateDoNothing delegate1(spdy_stream1); | 2562 test::StreamDelegateDoNothing delegate1(spdy_stream1); |
| 2519 spdy_stream1->SetDelegate(&delegate1); | 2563 spdy_stream1->SetDelegate(&delegate1); |
| 2520 | 2564 |
| 2521 SpdyHeaderBlock headers1(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); | 2565 SpdyHeaderBlock headers1(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2560 SpdySerializedFrame resp1(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); | 2604 SpdySerializedFrame resp1(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); |
| 2561 | 2605 |
| 2562 MockRead reads[] = { | 2606 MockRead reads[] = { |
| 2563 CreateMockRead(resp1, 1), MockRead(ASYNC, 0, 2) // EOF | 2607 CreateMockRead(resp1, 1), MockRead(ASYNC, 0, 2) // EOF |
| 2564 }; | 2608 }; |
| 2565 | 2609 |
| 2566 // Create SpdySession and SpdyStream and send the request. | 2610 // Create SpdySession and SpdyStream and send the request. |
| 2567 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 2611 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 2568 session_deps_.socket_factory->AddSocketDataProvider(&data); | 2612 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 2569 | 2613 |
| 2614 AddSSLSocketData(); |
| 2615 |
| 2570 CreateNetworkSession(); | 2616 CreateNetworkSession(); |
| 2571 CreateInsecureSpdySession(); | 2617 CreateSecureSpdySession(); |
| 2572 | 2618 |
| 2573 base::WeakPtr<SpdyStream> spdy_stream1 = | 2619 base::WeakPtr<SpdyStream> spdy_stream1 = |
| 2574 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 2620 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 2575 test_url_, MEDIUM, NetLogWithSource()); | 2621 test_url_, MEDIUM, NetLogWithSource()); |
| 2576 ASSERT_TRUE(spdy_stream1); | 2622 ASSERT_TRUE(spdy_stream1); |
| 2577 EXPECT_EQ(0u, spdy_stream1->stream_id()); | 2623 EXPECT_EQ(0u, spdy_stream1->stream_id()); |
| 2578 test::StreamDelegateDoNothing delegate1(spdy_stream1); | 2624 test::StreamDelegateDoNothing delegate1(spdy_stream1); |
| 2579 spdy_stream1->SetDelegate(&delegate1); | 2625 spdy_stream1->SetDelegate(&delegate1); |
| 2580 | 2626 |
| 2581 SpdyHeaderBlock headers1(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); | 2627 SpdyHeaderBlock headers1(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2628 CreateMockRead(partial_data_frame, 4, SYNCHRONOUS), | 2674 CreateMockRead(partial_data_frame, 4, SYNCHRONOUS), |
| 2629 CreateMockRead(partial_data_frame, 5, SYNCHRONOUS), | 2675 CreateMockRead(partial_data_frame, 5, SYNCHRONOUS), |
| 2630 CreateMockRead(finish_data_frame, 6, SYNCHRONOUS), | 2676 CreateMockRead(finish_data_frame, 6, SYNCHRONOUS), |
| 2631 MockRead(ASYNC, 0, 7) // EOF | 2677 MockRead(ASYNC, 0, 7) // EOF |
| 2632 }; | 2678 }; |
| 2633 | 2679 |
| 2634 // Create SpdySession and SpdyStream and send the request. | 2680 // Create SpdySession and SpdyStream and send the request. |
| 2635 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 2681 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 2636 session_deps_.socket_factory->AddSocketDataProvider(&data); | 2682 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 2637 | 2683 |
| 2684 AddSSLSocketData(); |
| 2685 |
| 2638 CreateNetworkSession(); | 2686 CreateNetworkSession(); |
| 2639 CreateInsecureSpdySession(); | 2687 CreateSecureSpdySession(); |
| 2640 | 2688 |
| 2641 base::WeakPtr<SpdyStream> spdy_stream1 = | 2689 base::WeakPtr<SpdyStream> spdy_stream1 = |
| 2642 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 2690 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 2643 test_url_, MEDIUM, NetLogWithSource()); | 2691 test_url_, MEDIUM, NetLogWithSource()); |
| 2644 ASSERT_TRUE(spdy_stream1); | 2692 ASSERT_TRUE(spdy_stream1); |
| 2645 EXPECT_EQ(0u, spdy_stream1->stream_id()); | 2693 EXPECT_EQ(0u, spdy_stream1->stream_id()); |
| 2646 test::StreamDelegateDoNothing delegate1(spdy_stream1); | 2694 test::StreamDelegateDoNothing delegate1(spdy_stream1); |
| 2647 spdy_stream1->SetDelegate(&delegate1); | 2695 spdy_stream1->SetDelegate(&delegate1); |
| 2648 | 2696 |
| 2649 SpdyHeaderBlock headers1(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); | 2697 SpdyHeaderBlock headers1(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2707 CreateMockRead(partial_data_frame, 5, SYNCHRONOUS), | 2755 CreateMockRead(partial_data_frame, 5, SYNCHRONOUS), |
| 2708 CreateMockRead(partial_data_frame, 6, SYNCHRONOUS), | 2756 CreateMockRead(partial_data_frame, 6, SYNCHRONOUS), |
| 2709 CreateMockRead(finish_data_frame, 7, SYNCHRONOUS), | 2757 CreateMockRead(finish_data_frame, 7, SYNCHRONOUS), |
| 2710 MockRead(ASYNC, 0, 8) // EOF | 2758 MockRead(ASYNC, 0, 8) // EOF |
| 2711 }; | 2759 }; |
| 2712 | 2760 |
| 2713 // Create SpdySession and SpdyStream and send the request. | 2761 // Create SpdySession and SpdyStream and send the request. |
| 2714 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 2762 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 2715 session_deps_.socket_factory->AddSocketDataProvider(&data); | 2763 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 2716 | 2764 |
| 2765 AddSSLSocketData(); |
| 2766 |
| 2717 CreateNetworkSession(); | 2767 CreateNetworkSession(); |
| 2718 CreateInsecureSpdySession(); | 2768 CreateSecureSpdySession(); |
| 2719 | 2769 |
| 2720 base::WeakPtr<SpdyStream> spdy_stream1 = | 2770 base::WeakPtr<SpdyStream> spdy_stream1 = |
| 2721 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 2771 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 2722 test_url_, MEDIUM, NetLogWithSource()); | 2772 test_url_, MEDIUM, NetLogWithSource()); |
| 2723 ASSERT_TRUE(spdy_stream1); | 2773 ASSERT_TRUE(spdy_stream1); |
| 2724 EXPECT_EQ(0u, spdy_stream1->stream_id()); | 2774 EXPECT_EQ(0u, spdy_stream1->stream_id()); |
| 2725 test::StreamDelegateDoNothing delegate1(spdy_stream1); | 2775 test::StreamDelegateDoNothing delegate1(spdy_stream1); |
| 2726 spdy_stream1->SetDelegate(&delegate1); | 2776 spdy_stream1->SetDelegate(&delegate1); |
| 2727 | 2777 |
| 2728 SpdyHeaderBlock headers1(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); | 2778 SpdyHeaderBlock headers1(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2812 CreateMockRead(eightk_data_frame, 10, SYNCHRONOUS), | 2862 CreateMockRead(eightk_data_frame, 10, SYNCHRONOUS), |
| 2813 CreateMockRead(twok_data_frame, 11, SYNCHRONOUS), | 2863 CreateMockRead(twok_data_frame, 11, SYNCHRONOUS), |
| 2814 CreateMockRead(finish_data_frame, 12, SYNCHRONOUS), | 2864 CreateMockRead(finish_data_frame, 12, SYNCHRONOUS), |
| 2815 MockRead(ASYNC, 0, 13) // EOF | 2865 MockRead(ASYNC, 0, 13) // EOF |
| 2816 }; | 2866 }; |
| 2817 | 2867 |
| 2818 // Create SpdySession and SpdyStream and send the request. | 2868 // Create SpdySession and SpdyStream and send the request. |
| 2819 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 2869 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 2820 session_deps_.socket_factory->AddSocketDataProvider(&data); | 2870 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 2821 | 2871 |
| 2872 AddSSLSocketData(); |
| 2873 |
| 2822 CreateNetworkSession(); | 2874 CreateNetworkSession(); |
| 2823 CreateInsecureSpdySession(); | 2875 CreateSecureSpdySession(); |
| 2824 | 2876 |
| 2825 base::WeakPtr<SpdyStream> spdy_stream1 = | 2877 base::WeakPtr<SpdyStream> spdy_stream1 = |
| 2826 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 2878 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 2827 test_url_, MEDIUM, NetLogWithSource()); | 2879 test_url_, MEDIUM, NetLogWithSource()); |
| 2828 ASSERT_TRUE(spdy_stream1); | 2880 ASSERT_TRUE(spdy_stream1); |
| 2829 EXPECT_EQ(0u, spdy_stream1->stream_id()); | 2881 EXPECT_EQ(0u, spdy_stream1->stream_id()); |
| 2830 test::StreamDelegateDoNothing delegate1(spdy_stream1); | 2882 test::StreamDelegateDoNothing delegate1(spdy_stream1); |
| 2831 spdy_stream1->SetDelegate(&delegate1); | 2883 spdy_stream1->SetDelegate(&delegate1); |
| 2832 | 2884 |
| 2833 SpdyHeaderBlock headers1(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); | 2885 SpdyHeaderBlock headers1(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2874 | 2926 |
| 2875 MockRead reads[] = { | 2927 MockRead reads[] = { |
| 2876 CreateMockRead(resp1, 1), MockRead(ASYNC, ERR_IO_PENDING, 2), | 2928 CreateMockRead(resp1, 1), MockRead(ASYNC, ERR_IO_PENDING, 2), |
| 2877 CreateMockRead(body1, 3), CreateMockRead(goaway, 4), | 2929 CreateMockRead(body1, 3), CreateMockRead(goaway, 4), |
| 2878 }; | 2930 }; |
| 2879 | 2931 |
| 2880 // Create SpdySession and SpdyStream and send the request. | 2932 // Create SpdySession and SpdyStream and send the request. |
| 2881 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 2933 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 2882 session_deps_.socket_factory->AddSocketDataProvider(&data); | 2934 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 2883 | 2935 |
| 2936 AddSSLSocketData(); |
| 2937 |
| 2884 CreateNetworkSession(); | 2938 CreateNetworkSession(); |
| 2885 CreateInsecureSpdySession(); | 2939 CreateSecureSpdySession(); |
| 2886 | 2940 |
| 2887 base::WeakPtr<SpdyStream> spdy_stream1 = | 2941 base::WeakPtr<SpdyStream> spdy_stream1 = |
| 2888 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 2942 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 2889 test_url_, MEDIUM, NetLogWithSource()); | 2943 test_url_, MEDIUM, NetLogWithSource()); |
| 2890 test::StreamDelegateDoNothing delegate1(spdy_stream1); | 2944 test::StreamDelegateDoNothing delegate1(spdy_stream1); |
| 2891 spdy_stream1->SetDelegate(&delegate1); | 2945 spdy_stream1->SetDelegate(&delegate1); |
| 2892 ASSERT_TRUE(spdy_stream1); | 2946 ASSERT_TRUE(spdy_stream1); |
| 2893 EXPECT_EQ(0u, spdy_stream1->stream_id()); | 2947 EXPECT_EQ(0u, spdy_stream1->stream_id()); |
| 2894 | 2948 |
| 2895 SpdyHeaderBlock headers1(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); | 2949 SpdyHeaderBlock headers1(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2938 ClientSocketPoolManager::set_max_sockets_per_pool( | 2992 ClientSocketPoolManager::set_max_sockets_per_pool( |
| 2939 HttpNetworkSession::NORMAL_SOCKET_POOL, 1); | 2993 HttpNetworkSession::NORMAL_SOCKET_POOL, 1); |
| 2940 | 2994 |
| 2941 MockRead reads[] = { | 2995 MockRead reads[] = { |
| 2942 MockRead(SYNCHRONOUS, ERR_IO_PENDING) // Stall forever. | 2996 MockRead(SYNCHRONOUS, ERR_IO_PENDING) // Stall forever. |
| 2943 }; | 2997 }; |
| 2944 StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); | 2998 StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); |
| 2945 session_deps_.socket_factory->AddSocketDataProvider(&data); | 2999 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 2946 session_deps_.socket_factory->AddSocketDataProvider(&data); | 3000 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 2947 | 3001 |
| 3002 AddSSLSocketData(); |
| 3003 |
| 2948 CreateNetworkSession(); | 3004 CreateNetworkSession(); |
| 2949 | 3005 |
| 2950 TransportClientSocketPool* pool = | 3006 TransportClientSocketPool* pool = |
| 2951 http_session_->GetTransportSocketPool( | 3007 http_session_->GetTransportSocketPool( |
| 2952 HttpNetworkSession::NORMAL_SOCKET_POOL); | 3008 HttpNetworkSession::NORMAL_SOCKET_POOL); |
| 2953 | 3009 |
| 2954 // Create an idle SPDY session. | 3010 // Create an idle SPDY session. |
| 2955 CreateInsecureSpdySession(); | 3011 CreateSecureSpdySession(); |
| 2956 EXPECT_FALSE(pool->IsStalled()); | 3012 EXPECT_FALSE(pool->IsStalled()); |
| 2957 | 3013 |
| 2958 // Trying to create a new connection should cause the pool to be stalled, and | 3014 // Trying to create a new connection should cause the pool to be stalled, and |
| 2959 // post a task asynchronously to try and close the session. | 3015 // post a task asynchronously to try and close the session. |
| 2960 TestCompletionCallback callback2; | 3016 TestCompletionCallback callback2; |
| 2961 HostPortPair host_port2("2.com", 80); | 3017 HostPortPair host_port2("2.com", 80); |
| 2962 scoped_refptr<TransportSocketParams> params2(new TransportSocketParams( | 3018 scoped_refptr<TransportSocketParams> params2(new TransportSocketParams( |
| 2963 host_port2, false, OnHostResolutionCallback(), | 3019 host_port2, false, OnHostResolutionCallback(), |
| 2964 TransportSocketParams::COMBINE_CONNECT_AND_WRITE_DEFAULT)); | 3020 TransportSocketParams::COMBINE_CONNECT_AND_WRITE_DEFAULT)); |
| 2965 std::unique_ptr<ClientSocketHandle> connection2(new ClientSocketHandle); | 3021 std::unique_ptr<ClientSocketHandle> connection2(new ClientSocketHandle); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 2985 ClientSocketPoolManager::set_max_sockets_per_pool( | 3041 ClientSocketPoolManager::set_max_sockets_per_pool( |
| 2986 HttpNetworkSession::NORMAL_SOCKET_POOL, 1); | 3042 HttpNetworkSession::NORMAL_SOCKET_POOL, 1); |
| 2987 | 3043 |
| 2988 MockRead reads[] = { | 3044 MockRead reads[] = { |
| 2989 MockRead(SYNCHRONOUS, ERR_IO_PENDING) // Stall forever. | 3045 MockRead(SYNCHRONOUS, ERR_IO_PENDING) // Stall forever. |
| 2990 }; | 3046 }; |
| 2991 StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); | 3047 StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); |
| 2992 session_deps_.socket_factory->AddSocketDataProvider(&data); | 3048 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 2993 session_deps_.socket_factory->AddSocketDataProvider(&data); | 3049 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 2994 | 3050 |
| 3051 AddSSLSocketData(); |
| 3052 |
| 2995 session_deps_.host_resolver->set_synchronous_mode(true); | 3053 session_deps_.host_resolver->set_synchronous_mode(true); |
| 2996 session_deps_.host_resolver->rules()->AddIPLiteralRule( | 3054 session_deps_.host_resolver->rules()->AddIPLiteralRule( |
| 2997 "1.com", "192.168.0.2", std::string()); | 3055 "www.example.org", "192.168.0.2", std::string()); |
| 2998 session_deps_.host_resolver->rules()->AddIPLiteralRule( | 3056 session_deps_.host_resolver->rules()->AddIPLiteralRule( |
| 2999 "2.com", "192.168.0.2", std::string()); | 3057 "mail.example.org", "192.168.0.2", std::string()); |
| 3000 // Not strictly needed. | 3058 // Not strictly needed. |
| 3001 session_deps_.host_resolver->rules()->AddIPLiteralRule( | 3059 session_deps_.host_resolver->rules()->AddIPLiteralRule( |
| 3002 "3.com", "192.168.0.3", std::string()); | 3060 "3.com", "192.168.0.3", std::string()); |
| 3003 | 3061 |
| 3004 CreateNetworkSession(); | 3062 CreateNetworkSession(); |
| 3005 | 3063 |
| 3006 TransportClientSocketPool* pool = | 3064 TransportClientSocketPool* pool = |
| 3007 http_session_->GetTransportSocketPool( | 3065 http_session_->GetTransportSocketPool( |
| 3008 HttpNetworkSession::NORMAL_SOCKET_POOL); | 3066 HttpNetworkSession::NORMAL_SOCKET_POOL); |
| 3009 | 3067 |
| 3010 // Create an idle SPDY session. | 3068 // Create an idle SPDY session. |
| 3011 SpdySessionKey key1(HostPortPair("1.com", 80), ProxyServer::Direct(), | 3069 SpdySessionKey key1(HostPortPair("www.example.org", 80), |
| 3012 PRIVACY_MODE_DISABLED); | 3070 ProxyServer::Direct(), PRIVACY_MODE_DISABLED); |
| 3013 base::WeakPtr<SpdySession> session1 = ::net::CreateInsecureSpdySession( | 3071 base::WeakPtr<SpdySession> session1 = ::net::CreateSecureSpdySession( |
| 3014 http_session_.get(), key1, NetLogWithSource()); | 3072 http_session_.get(), key1, NetLogWithSource()); |
| 3015 EXPECT_FALSE(pool->IsStalled()); | 3073 EXPECT_FALSE(pool->IsStalled()); |
| 3016 | 3074 |
| 3017 // Set up an alias for the idle SPDY session, increasing its ref count to 2. | 3075 // Set up an alias for the idle SPDY session, increasing its ref count to 2. |
| 3018 SpdySessionKey key2(HostPortPair("2.com", 80), ProxyServer::Direct(), | 3076 SpdySessionKey key2(HostPortPair("mail.example.org", 80), |
| 3019 PRIVACY_MODE_DISABLED); | 3077 ProxyServer::Direct(), PRIVACY_MODE_DISABLED); |
| 3020 HostResolver::RequestInfo info(key2.host_port_pair()); | 3078 HostResolver::RequestInfo info(key2.host_port_pair()); |
| 3021 AddressList addresses; | 3079 AddressList addresses; |
| 3022 std::unique_ptr<HostResolver::Request> request; | 3080 std::unique_ptr<HostResolver::Request> request; |
| 3023 // Pre-populate the DNS cache, since a synchronous resolution is required in | 3081 // Pre-populate the DNS cache, since a synchronous resolution is required in |
| 3024 // order to create the alias. | 3082 // order to create the alias. |
| 3025 session_deps_.host_resolver->Resolve(info, DEFAULT_PRIORITY, &addresses, | 3083 session_deps_.host_resolver->Resolve(info, DEFAULT_PRIORITY, &addresses, |
| 3026 CompletionCallback(), &request, | 3084 CompletionCallback(), &request, |
| 3027 NetLogWithSource()); | 3085 NetLogWithSource()); |
| 3028 // Get a session for |key2|, which should return the session created earlier. | 3086 // Get a session for |key2|, which should return the session created earlier. |
| 3029 base::WeakPtr<SpdySession> session2 = | 3087 base::WeakPtr<SpdySession> session2 = |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3076 writes, arraysize(writes)); | 3134 writes, arraysize(writes)); |
| 3077 session_deps_.socket_factory->AddSocketDataProvider(&data); | 3135 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 3078 | 3136 |
| 3079 MockRead http_reads[] = { | 3137 MockRead http_reads[] = { |
| 3080 MockRead(SYNCHRONOUS, ERR_IO_PENDING) // Stall forever. | 3138 MockRead(SYNCHRONOUS, ERR_IO_PENDING) // Stall forever. |
| 3081 }; | 3139 }; |
| 3082 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr, | 3140 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr, |
| 3083 0); | 3141 0); |
| 3084 session_deps_.socket_factory->AddSocketDataProvider(&http_data); | 3142 session_deps_.socket_factory->AddSocketDataProvider(&http_data); |
| 3085 | 3143 |
| 3144 AddSSLSocketData(); |
| 3086 | 3145 |
| 3087 CreateNetworkSession(); | 3146 CreateNetworkSession(); |
| 3088 | 3147 |
| 3089 TransportClientSocketPool* pool = | 3148 TransportClientSocketPool* pool = |
| 3090 http_session_->GetTransportSocketPool( | 3149 http_session_->GetTransportSocketPool( |
| 3091 HttpNetworkSession::NORMAL_SOCKET_POOL); | 3150 HttpNetworkSession::NORMAL_SOCKET_POOL); |
| 3092 | 3151 |
| 3093 // Create a SPDY session. | 3152 // Create a SPDY session. |
| 3094 CreateInsecureSpdySession(); | 3153 CreateSecureSpdySession(); |
| 3095 EXPECT_FALSE(pool->IsStalled()); | 3154 EXPECT_FALSE(pool->IsStalled()); |
| 3096 | 3155 |
| 3097 // Create a stream using the session, and send a request. | 3156 // Create a stream using the session, and send a request. |
| 3098 | 3157 |
| 3099 TestCompletionCallback callback1; | 3158 TestCompletionCallback callback1; |
| 3100 base::WeakPtr<SpdyStream> spdy_stream1 = CreateStreamSynchronously( | 3159 base::WeakPtr<SpdyStream> spdy_stream1 = CreateStreamSynchronously( |
| 3101 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, DEFAULT_PRIORITY, | 3160 SPDY_REQUEST_RESPONSE_STREAM, session_, test_url_, DEFAULT_PRIORITY, |
| 3102 NetLogWithSource()); | 3161 NetLogWithSource()); |
| 3103 ASSERT_TRUE(spdy_stream1.get()); | 3162 ASSERT_TRUE(spdy_stream1.get()); |
| 3104 test::StreamDelegateDoNothing delegate1(spdy_stream1); | 3163 test::StreamDelegateDoNothing delegate1(spdy_stream1); |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3212 | 3271 |
| 3213 SpdySerializedFrame rst( | 3272 SpdySerializedFrame rst( |
| 3214 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_REFUSED_STREAM)); | 3273 spdy_util_.ConstructSpdyRstStream(1, RST_STREAM_REFUSED_STREAM)); |
| 3215 MockRead reads[] = { | 3274 MockRead reads[] = { |
| 3216 MockRead(ASYNC, ERR_IO_PENDING, 1), CreateMockRead(rst, 2), | 3275 MockRead(ASYNC, ERR_IO_PENDING, 1), CreateMockRead(rst, 2), |
| 3217 MockRead(ASYNC, ERR_IO_PENDING, 3), MockRead(ASYNC, 0, 4) // EOF | 3276 MockRead(ASYNC, ERR_IO_PENDING, 3), MockRead(ASYNC, 0, 4) // EOF |
| 3218 }; | 3277 }; |
| 3219 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 3278 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 3220 session_deps_.socket_factory->AddSocketDataProvider(&data); | 3279 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 3221 | 3280 |
| 3281 AddSSLSocketData(); |
| 3282 |
| 3222 CreateNetworkSession(); | 3283 CreateNetworkSession(); |
| 3223 CreateInsecureSpdySession(); | 3284 CreateSecureSpdySession(); |
| 3224 | 3285 |
| 3225 base::WeakPtr<SpdyStream> spdy_stream = | 3286 base::WeakPtr<SpdyStream> spdy_stream = |
| 3226 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 3287 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 3227 test_url_, MEDIUM, NetLogWithSource()); | 3288 test_url_, MEDIUM, NetLogWithSource()); |
| 3228 ASSERT_TRUE(spdy_stream); | 3289 ASSERT_TRUE(spdy_stream); |
| 3229 EXPECT_EQ(0u, spdy_stream->stream_id()); | 3290 EXPECT_EQ(0u, spdy_stream->stream_id()); |
| 3230 | 3291 |
| 3231 StreamCreatingDelegate delegate(spdy_stream, session_); | 3292 StreamCreatingDelegate delegate(spdy_stream, session_); |
| 3232 spdy_stream->SetDelegate(&delegate); | 3293 spdy_stream->SetDelegate(&delegate); |
| 3233 | 3294 |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3275 SpdySerializedFrame settings_ack(spdy_util_.ConstructSpdySettingsAck()); | 3336 SpdySerializedFrame settings_ack(spdy_util_.ConstructSpdySettingsAck()); |
| 3276 MockWrite writes[] = { | 3337 MockWrite writes[] = { |
| 3277 CreateMockWrite(settings_ack, 3), | 3338 CreateMockWrite(settings_ack, 3), |
| 3278 }; | 3339 }; |
| 3279 | 3340 |
| 3280 session_deps_.host_resolver->set_synchronous_mode(true); | 3341 session_deps_.host_resolver->set_synchronous_mode(true); |
| 3281 | 3342 |
| 3282 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 3343 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 3283 session_deps_.socket_factory->AddSocketDataProvider(&data); | 3344 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 3284 | 3345 |
| 3346 AddSSLSocketData(); |
| 3347 |
| 3285 CreateNetworkSession(); | 3348 CreateNetworkSession(); |
| 3286 CreateInsecureSpdySession(); | 3349 CreateSecureSpdySession(); |
| 3287 base::WeakPtr<SpdyStream> spdy_stream1 = | 3350 base::WeakPtr<SpdyStream> spdy_stream1 = |
| 3288 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, session_, test_url_, | 3351 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, session_, test_url_, |
| 3289 MEDIUM, NetLogWithSource()); | 3352 MEDIUM, NetLogWithSource()); |
| 3290 ASSERT_TRUE(spdy_stream1); | 3353 ASSERT_TRUE(spdy_stream1); |
| 3291 TestCompletionCallback callback1; | 3354 TestCompletionCallback callback1; |
| 3292 EXPECT_NE(spdy_stream1->send_window_size(), window_size); | 3355 EXPECT_NE(spdy_stream1->send_window_size(), window_size); |
| 3293 | 3356 |
| 3294 // Process the SETTINGS frame. | 3357 // Process the SETTINGS frame. |
| 3295 base::RunLoop().RunUntilIdle(); | 3358 base::RunLoop().RunUntilIdle(); |
| 3296 EXPECT_EQ(session_->stream_initial_send_window_size(), window_size); | 3359 EXPECT_EQ(session_->stream_initial_send_window_size(), window_size); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3328 MockRead(ASYNC, ERR_IO_PENDING, 1), MockRead(ASYNC, 0, 2) // EOF | 3391 MockRead(ASYNC, ERR_IO_PENDING, 1), MockRead(ASYNC, 0, 2) // EOF |
| 3329 }; | 3392 }; |
| 3330 SpdySerializedFrame window_update(spdy_util_.ConstructSpdyWindowUpdate( | 3393 SpdySerializedFrame window_update(spdy_util_.ConstructSpdyWindowUpdate( |
| 3331 kSessionFlowControlStreamId, initial_window_size + delta_window_size)); | 3394 kSessionFlowControlStreamId, initial_window_size + delta_window_size)); |
| 3332 MockWrite writes[] = { | 3395 MockWrite writes[] = { |
| 3333 CreateMockWrite(window_update, 0), | 3396 CreateMockWrite(window_update, 0), |
| 3334 }; | 3397 }; |
| 3335 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 3398 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 3336 session_deps_.socket_factory->AddSocketDataProvider(&data); | 3399 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 3337 | 3400 |
| 3401 AddSSLSocketData(); |
| 3402 |
| 3338 CreateNetworkSession(); | 3403 CreateNetworkSession(); |
| 3339 CreateInsecureSpdySession(); | 3404 CreateSecureSpdySession(); |
| 3340 | 3405 |
| 3341 EXPECT_EQ(initial_window_size, session_->session_recv_window_size_); | 3406 EXPECT_EQ(initial_window_size, session_->session_recv_window_size_); |
| 3342 EXPECT_EQ(0, session_->session_unacked_recv_window_bytes_); | 3407 EXPECT_EQ(0, session_->session_unacked_recv_window_bytes_); |
| 3343 | 3408 |
| 3344 session_->IncreaseRecvWindowSize(delta_window_size); | 3409 session_->IncreaseRecvWindowSize(delta_window_size); |
| 3345 EXPECT_EQ(initial_window_size + delta_window_size, | 3410 EXPECT_EQ(initial_window_size + delta_window_size, |
| 3346 session_->session_recv_window_size_); | 3411 session_->session_recv_window_size_); |
| 3347 EXPECT_EQ(delta_window_size, session_->session_unacked_recv_window_bytes_); | 3412 EXPECT_EQ(delta_window_size, session_->session_unacked_recv_window_bytes_); |
| 3348 | 3413 |
| 3349 // Should trigger sending a WINDOW_UPDATE frame. | 3414 // Should trigger sending a WINDOW_UPDATE frame. |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3403 session_deps_.host_resolver->set_synchronous_mode(true); | 3468 session_deps_.host_resolver->set_synchronous_mode(true); |
| 3404 | 3469 |
| 3405 SpdySerializedFrame resp(spdy_util_.ConstructSpdyDataFrame(1, false)); | 3470 SpdySerializedFrame resp(spdy_util_.ConstructSpdyDataFrame(1, false)); |
| 3406 MockRead reads[] = { | 3471 MockRead reads[] = { |
| 3407 CreateMockRead(resp, 0), MockRead(ASYNC, ERR_IO_PENDING, 1), | 3472 CreateMockRead(resp, 0), MockRead(ASYNC, ERR_IO_PENDING, 1), |
| 3408 MockRead(ASYNC, 0, 2) // EOF | 3473 MockRead(ASYNC, 0, 2) // EOF |
| 3409 }; | 3474 }; |
| 3410 SequencedSocketData data(reads, arraysize(reads), nullptr, 0); | 3475 SequencedSocketData data(reads, arraysize(reads), nullptr, 0); |
| 3411 session_deps_.socket_factory->AddSocketDataProvider(&data); | 3476 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 3412 | 3477 |
| 3478 AddSSLSocketData(); |
| 3479 |
| 3413 CreateNetworkSession(); | 3480 CreateNetworkSession(); |
| 3414 CreateInsecureSpdySession(); | 3481 CreateSecureSpdySession(); |
| 3415 | 3482 |
| 3416 EXPECT_EQ(kDefaultInitialWindowSize, session_->session_recv_window_size_); | 3483 EXPECT_EQ(kDefaultInitialWindowSize, session_->session_recv_window_size_); |
| 3417 EXPECT_EQ(0, session_->session_unacked_recv_window_bytes_); | 3484 EXPECT_EQ(0, session_->session_unacked_recv_window_bytes_); |
| 3418 | 3485 |
| 3419 base::RunLoop().RunUntilIdle(); | 3486 base::RunLoop().RunUntilIdle(); |
| 3420 | 3487 |
| 3421 EXPECT_EQ(kDefaultInitialWindowSize, session_->session_recv_window_size_); | 3488 EXPECT_EQ(kDefaultInitialWindowSize, session_->session_recv_window_size_); |
| 3422 EXPECT_EQ(kUploadDataSize, session_->session_unacked_recv_window_bytes_); | 3489 EXPECT_EQ(kUploadDataSize, session_->session_unacked_recv_window_bytes_); |
| 3423 | 3490 |
| 3424 EXPECT_TRUE(session_); | 3491 EXPECT_TRUE(session_); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 3435 const int padding_length = 42; | 3502 const int padding_length = 42; |
| 3436 SpdySerializedFrame resp(spdy_util_.ConstructSpdyDataFrame( | 3503 SpdySerializedFrame resp(spdy_util_.ConstructSpdyDataFrame( |
| 3437 1, kUploadData, kUploadDataSize, false, padding_length)); | 3504 1, kUploadData, kUploadDataSize, false, padding_length)); |
| 3438 MockRead reads[] = { | 3505 MockRead reads[] = { |
| 3439 CreateMockRead(resp, 0), MockRead(ASYNC, ERR_IO_PENDING, 1), | 3506 CreateMockRead(resp, 0), MockRead(ASYNC, ERR_IO_PENDING, 1), |
| 3440 MockRead(ASYNC, 0, 2) // EOF | 3507 MockRead(ASYNC, 0, 2) // EOF |
| 3441 }; | 3508 }; |
| 3442 SequencedSocketData data(reads, arraysize(reads), nullptr, 0); | 3509 SequencedSocketData data(reads, arraysize(reads), nullptr, 0); |
| 3443 session_deps_.socket_factory->AddSocketDataProvider(&data); | 3510 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 3444 | 3511 |
| 3512 AddSSLSocketData(); |
| 3513 |
| 3445 CreateNetworkSession(); | 3514 CreateNetworkSession(); |
| 3446 CreateInsecureSpdySession(); | 3515 CreateSecureSpdySession(); |
| 3447 | 3516 |
| 3448 EXPECT_EQ(kDefaultInitialWindowSize, session_->session_recv_window_size_); | 3517 EXPECT_EQ(kDefaultInitialWindowSize, session_->session_recv_window_size_); |
| 3449 EXPECT_EQ(0, session_->session_unacked_recv_window_bytes_); | 3518 EXPECT_EQ(0, session_->session_unacked_recv_window_bytes_); |
| 3450 | 3519 |
| 3451 base::RunLoop().RunUntilIdle(); | 3520 base::RunLoop().RunUntilIdle(); |
| 3452 | 3521 |
| 3453 EXPECT_EQ(kDefaultInitialWindowSize, session_->session_recv_window_size_); | 3522 EXPECT_EQ(kDefaultInitialWindowSize, session_->session_recv_window_size_); |
| 3454 EXPECT_EQ(kUploadDataSize + padding_length, | 3523 EXPECT_EQ(kUploadDataSize + padding_length, |
| 3455 session_->session_unacked_recv_window_bytes_); | 3524 session_->session_unacked_recv_window_bytes_); |
| 3456 | 3525 |
| (...skipping 20 matching lines...) Expand all Loading... |
| 3477 SpdySerializedFrame data_frame(spdy_util_.ConstructSpdyDataFrame( | 3546 SpdySerializedFrame data_frame(spdy_util_.ConstructSpdyDataFrame( |
| 3478 1, payload.data(), data_frame_size, false)); | 3547 1, payload.data(), data_frame_size, false)); |
| 3479 MockRead reads[] = { | 3548 MockRead reads[] = { |
| 3480 CreateMockRead(resp, 1), MockRead(ASYNC, ERR_IO_PENDING, 2), | 3549 CreateMockRead(resp, 1), MockRead(ASYNC, ERR_IO_PENDING, 2), |
| 3481 CreateMockRead(data_frame, 3), MockRead(ASYNC, ERR_IO_PENDING, 5), | 3550 CreateMockRead(data_frame, 3), MockRead(ASYNC, ERR_IO_PENDING, 5), |
| 3482 MockRead(ASYNC, 0, 6), | 3551 MockRead(ASYNC, 0, 6), |
| 3483 }; | 3552 }; |
| 3484 | 3553 |
| 3485 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 3554 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 3486 session_deps_.socket_factory->AddSocketDataProvider(&data); | 3555 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 3556 |
| 3557 AddSSLSocketData(); |
| 3558 |
| 3487 CreateNetworkSession(); | 3559 CreateNetworkSession(); |
| 3488 | 3560 |
| 3489 SpdySessionPoolPeer pool_peer(spdy_session_pool_); | 3561 SpdySessionPoolPeer pool_peer(spdy_session_pool_); |
| 3490 pool_peer.SetStreamInitialRecvWindowSize(stream_max_recv_window_size); | 3562 pool_peer.SetStreamInitialRecvWindowSize(stream_max_recv_window_size); |
| 3491 CreateInsecureSpdySession(); | 3563 CreateSecureSpdySession(); |
| 3492 | 3564 |
| 3493 base::WeakPtr<SpdyStream> spdy_stream = | 3565 base::WeakPtr<SpdyStream> spdy_stream = |
| 3494 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 3566 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 3495 test_url_, LOWEST, NetLogWithSource()); | 3567 test_url_, LOWEST, NetLogWithSource()); |
| 3496 EXPECT_EQ(stream_max_recv_window_size, spdy_stream->recv_window_size()); | 3568 EXPECT_EQ(stream_max_recv_window_size, spdy_stream->recv_window_size()); |
| 3497 | 3569 |
| 3498 test::StreamDelegateDoNothing delegate(spdy_stream); | 3570 test::StreamDelegateDoNothing delegate(spdy_stream); |
| 3499 spdy_stream->SetDelegate(&delegate); | 3571 spdy_stream->SetDelegate(&delegate); |
| 3500 | 3572 |
| 3501 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); | 3573 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3550 const std::string second_data_frame(second_data_frame_size, 'b'); | 3622 const std::string second_data_frame(second_data_frame_size, 'b'); |
| 3551 SpdySerializedFrame second(spdy_util_.ConstructSpdyDataFrame( | 3623 SpdySerializedFrame second(spdy_util_.ConstructSpdyDataFrame( |
| 3552 1, second_data_frame.data(), second_data_frame_size, false)); | 3624 1, second_data_frame.data(), second_data_frame_size, false)); |
| 3553 MockRead reads[] = { | 3625 MockRead reads[] = { |
| 3554 CreateMockRead(first, 0), MockRead(ASYNC, ERR_IO_PENDING, 1), | 3626 CreateMockRead(first, 0), MockRead(ASYNC, ERR_IO_PENDING, 1), |
| 3555 CreateMockRead(second, 2), MockRead(ASYNC, 0, 3), | 3627 CreateMockRead(second, 2), MockRead(ASYNC, 0, 3), |
| 3556 }; | 3628 }; |
| 3557 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 3629 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 3558 session_deps_.socket_factory->AddSocketDataProvider(&data); | 3630 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 3559 | 3631 |
| 3632 AddSSLSocketData(); |
| 3633 |
| 3560 CreateNetworkSession(); | 3634 CreateNetworkSession(); |
| 3561 CreateInsecureSpdySession(); | 3635 CreateSecureSpdySession(); |
| 3562 // Setting session level receiving window size to smaller than initial is not | 3636 // Setting session level receiving window size to smaller than initial is not |
| 3563 // possible via SpdySessionPoolPeer. | 3637 // possible via SpdySessionPoolPeer. |
| 3564 session_->session_recv_window_size_ = session_max_recv_window_size; | 3638 session_->session_recv_window_size_ = session_max_recv_window_size; |
| 3565 | 3639 |
| 3566 // First data frame is immediately consumed and does not trigger | 3640 // First data frame is immediately consumed and does not trigger |
| 3567 // WINDOW_UPDATE. | 3641 // WINDOW_UPDATE. |
| 3568 base::RunLoop().RunUntilIdle(); | 3642 base::RunLoop().RunUntilIdle(); |
| 3569 EXPECT_EQ(first_data_frame_size, | 3643 EXPECT_EQ(first_data_frame_size, |
| 3570 session_->session_unacked_recv_window_bytes_); | 3644 session_->session_unacked_recv_window_bytes_); |
| 3571 EXPECT_EQ(session_max_recv_window_size, session_->session_recv_window_size_); | 3645 EXPECT_EQ(session_max_recv_window_size, session_->session_recv_window_size_); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3611 MockRead reads[] = { | 3685 MockRead reads[] = { |
| 3612 CreateMockRead(resp, 1), MockRead(ASYNC, ERR_IO_PENDING, 2), | 3686 CreateMockRead(resp, 1), MockRead(ASYNC, ERR_IO_PENDING, 2), |
| 3613 CreateMockRead(first, 3), MockRead(ASYNC, ERR_IO_PENDING, 4), | 3687 CreateMockRead(first, 3), MockRead(ASYNC, ERR_IO_PENDING, 4), |
| 3614 CreateMockRead(second, 5), MockRead(ASYNC, ERR_IO_PENDING, 7), | 3688 CreateMockRead(second, 5), MockRead(ASYNC, ERR_IO_PENDING, 7), |
| 3615 MockRead(ASYNC, 0, 8), | 3689 MockRead(ASYNC, 0, 8), |
| 3616 }; | 3690 }; |
| 3617 | 3691 |
| 3618 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 3692 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 3619 session_deps_.socket_factory->AddSocketDataProvider(&data); | 3693 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 3620 | 3694 |
| 3695 AddSSLSocketData(); |
| 3696 |
| 3621 CreateNetworkSession(); | 3697 CreateNetworkSession(); |
| 3622 SpdySessionPoolPeer pool_peer(spdy_session_pool_); | 3698 SpdySessionPoolPeer pool_peer(spdy_session_pool_); |
| 3623 pool_peer.SetStreamInitialRecvWindowSize(stream_max_recv_window_size); | 3699 pool_peer.SetStreamInitialRecvWindowSize(stream_max_recv_window_size); |
| 3624 | 3700 |
| 3625 CreateInsecureSpdySession(); | 3701 CreateSecureSpdySession(); |
| 3626 | 3702 |
| 3627 base::WeakPtr<SpdyStream> spdy_stream = | 3703 base::WeakPtr<SpdyStream> spdy_stream = |
| 3628 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 3704 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 3629 test_url_, LOWEST, NetLogWithSource()); | 3705 test_url_, LOWEST, NetLogWithSource()); |
| 3630 test::StreamDelegateDoNothing delegate(spdy_stream); | 3706 test::StreamDelegateDoNothing delegate(spdy_stream); |
| 3631 spdy_stream->SetDelegate(&delegate); | 3707 spdy_stream->SetDelegate(&delegate); |
| 3632 | 3708 |
| 3633 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); | 3709 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); |
| 3634 EXPECT_EQ(ERR_IO_PENDING, spdy_stream->SendRequestHeaders( | 3710 EXPECT_EQ(ERR_IO_PENDING, spdy_stream->SendRequestHeaders( |
| 3635 std::move(headers), NO_MORE_DATA_TO_SEND)); | 3711 std::move(headers), NO_MORE_DATA_TO_SEND)); |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3699 MockRead reads[] = { | 3775 MockRead reads[] = { |
| 3700 CreateMockRead(resp, 1), CreateMockRead(echo, 3), | 3776 CreateMockRead(resp, 1), CreateMockRead(echo, 3), |
| 3701 MockRead(ASYNC, ERR_IO_PENDING, 4), MockRead(ASYNC, 0, 5) // EOF | 3777 MockRead(ASYNC, ERR_IO_PENDING, 4), MockRead(ASYNC, 0, 5) // EOF |
| 3702 }; | 3778 }; |
| 3703 | 3779 |
| 3704 // Create SpdySession and SpdyStream and send the request. | 3780 // Create SpdySession and SpdyStream and send the request. |
| 3705 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 3781 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 3706 session_deps_.host_resolver->set_synchronous_mode(true); | 3782 session_deps_.host_resolver->set_synchronous_mode(true); |
| 3707 session_deps_.socket_factory->AddSocketDataProvider(&data); | 3783 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 3708 | 3784 |
| 3785 AddSSLSocketData(); |
| 3786 |
| 3709 CreateNetworkSession(); | 3787 CreateNetworkSession(); |
| 3710 CreateInsecureSpdySession(); | 3788 CreateSecureSpdySession(); |
| 3711 | 3789 |
| 3712 base::WeakPtr<SpdyStream> stream = | 3790 base::WeakPtr<SpdyStream> stream = |
| 3713 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, session_, test_url_, | 3791 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, session_, test_url_, |
| 3714 MEDIUM, NetLogWithSource()); | 3792 MEDIUM, NetLogWithSource()); |
| 3715 ASSERT_TRUE(stream); | 3793 ASSERT_TRUE(stream); |
| 3716 EXPECT_EQ(0u, stream->stream_id()); | 3794 EXPECT_EQ(0u, stream->stream_id()); |
| 3717 | 3795 |
| 3718 DropReceivedDataDelegate delegate(stream, msg_data); | 3796 DropReceivedDataDelegate delegate(stream, msg_data); |
| 3719 stream->SetDelegate(&delegate); | 3797 stream->SetDelegate(&delegate); |
| 3720 | 3798 |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3762 MockRead reads[] = { | 3840 MockRead reads[] = { |
| 3763 MockRead(ASYNC, ERR_IO_PENDING, 1), CreateMockRead(resp, 2), | 3841 MockRead(ASYNC, ERR_IO_PENDING, 1), CreateMockRead(resp, 2), |
| 3764 MockRead(ASYNC, 0, 3) // EOF | 3842 MockRead(ASYNC, 0, 3) // EOF |
| 3765 }; | 3843 }; |
| 3766 | 3844 |
| 3767 // Create SpdySession and SpdyStream and send the request. | 3845 // Create SpdySession and SpdyStream and send the request. |
| 3768 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 3846 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 3769 session_deps_.host_resolver->set_synchronous_mode(true); | 3847 session_deps_.host_resolver->set_synchronous_mode(true); |
| 3770 session_deps_.socket_factory->AddSocketDataProvider(&data); | 3848 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 3771 | 3849 |
| 3850 AddSSLSocketData(); |
| 3851 |
| 3772 CreateNetworkSession(); | 3852 CreateNetworkSession(); |
| 3773 CreateInsecureSpdySession(); | 3853 CreateSecureSpdySession(); |
| 3774 | 3854 |
| 3775 base::WeakPtr<SpdyStream> stream = | 3855 base::WeakPtr<SpdyStream> stream = |
| 3776 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, session_, test_url_, | 3856 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, session_, test_url_, |
| 3777 MEDIUM, NetLogWithSource()); | 3857 MEDIUM, NetLogWithSource()); |
| 3778 ASSERT_TRUE(stream); | 3858 ASSERT_TRUE(stream); |
| 3779 EXPECT_EQ(0u, stream->stream_id()); | 3859 EXPECT_EQ(0u, stream->stream_id()); |
| 3780 | 3860 |
| 3781 test::StreamDelegateSendImmediate delegate(stream, msg_data); | 3861 test::StreamDelegateSendImmediate delegate(stream, msg_data); |
| 3782 stream->SetDelegate(&delegate); | 3862 stream->SetDelegate(&delegate); |
| 3783 | 3863 |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3843 CreateMockRead(window_update, 6), | 3923 CreateMockRead(window_update, 6), |
| 3844 MockRead(ASYNC, ERR_IO_PENDING, 7), | 3924 MockRead(ASYNC, ERR_IO_PENDING, 7), |
| 3845 MockRead(ASYNC, 0, 8) // EOF | 3925 MockRead(ASYNC, 0, 8) // EOF |
| 3846 }; | 3926 }; |
| 3847 | 3927 |
| 3848 // Create SpdySession and SpdyStream and send the request. | 3928 // Create SpdySession and SpdyStream and send the request. |
| 3849 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 3929 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 3850 session_deps_.host_resolver->set_synchronous_mode(true); | 3930 session_deps_.host_resolver->set_synchronous_mode(true); |
| 3851 session_deps_.socket_factory->AddSocketDataProvider(&data); | 3931 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 3852 | 3932 |
| 3933 AddSSLSocketData(); |
| 3934 |
| 3853 CreateNetworkSession(); | 3935 CreateNetworkSession(); |
| 3854 CreateInsecureSpdySession(); | 3936 CreateSecureSpdySession(); |
| 3855 | 3937 |
| 3856 base::WeakPtr<SpdyStream> stream = | 3938 base::WeakPtr<SpdyStream> stream = |
| 3857 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, session_, test_url_, | 3939 CreateStreamSynchronously(SPDY_BIDIRECTIONAL_STREAM, session_, test_url_, |
| 3858 MEDIUM, NetLogWithSource()); | 3940 MEDIUM, NetLogWithSource()); |
| 3859 ASSERT_TRUE(stream); | 3941 ASSERT_TRUE(stream); |
| 3860 EXPECT_EQ(0u, stream->stream_id()); | 3942 EXPECT_EQ(0u, stream->stream_id()); |
| 3861 | 3943 |
| 3862 test::StreamDelegateSendImmediate delegate(stream, msg_data); | 3944 test::StreamDelegateSendImmediate delegate(stream, msg_data); |
| 3863 stream->SetDelegate(&delegate); | 3945 stream->SetDelegate(&delegate); |
| 3864 | 3946 |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3939 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); | 4021 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); |
| 3940 SpdySerializedFrame echo( | 4022 SpdySerializedFrame echo( |
| 3941 spdy_util_.ConstructSpdyDataFrame(1, kBodyData, kBodyDataSize, false)); | 4023 spdy_util_.ConstructSpdyDataFrame(1, kBodyData, kBodyDataSize, false)); |
| 3942 MockRead reads[] = { | 4024 MockRead reads[] = { |
| 3943 CreateMockRead(resp, 2), MockRead(ASYNC, 0, 3) // EOF | 4025 CreateMockRead(resp, 2), MockRead(ASYNC, 0, 3) // EOF |
| 3944 }; | 4026 }; |
| 3945 | 4027 |
| 3946 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 4028 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 3947 session_deps_.socket_factory->AddSocketDataProvider(&data); | 4029 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 3948 | 4030 |
| 4031 AddSSLSocketData(); |
| 4032 |
| 3949 CreateNetworkSession(); | 4033 CreateNetworkSession(); |
| 3950 CreateInsecureSpdySession(); | 4034 CreateSecureSpdySession(); |
| 3951 | 4035 |
| 3952 base::WeakPtr<SpdyStream> stream = | 4036 base::WeakPtr<SpdyStream> stream = |
| 3953 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 4037 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 3954 test_url_, LOWEST, NetLogWithSource()); | 4038 test_url_, LOWEST, NetLogWithSource()); |
| 3955 ASSERT_TRUE(stream); | 4039 ASSERT_TRUE(stream); |
| 3956 | 4040 |
| 3957 test::StreamDelegateWithBody delegate(stream, kBodyDataStringPiece); | 4041 test::StreamDelegateWithBody delegate(stream, kBodyDataStringPiece); |
| 3958 stream->SetDelegate(&delegate); | 4042 stream->SetDelegate(&delegate); |
| 3959 | 4043 |
| 3960 EXPECT_FALSE(stream->send_stalled_by_flow_control()); | 4044 EXPECT_FALSE(stream->send_stalled_by_flow_control()); |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4059 SpdySerializedFrame resp1(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); | 4143 SpdySerializedFrame resp1(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); |
| 4060 SpdySerializedFrame resp2(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 3)); | 4144 SpdySerializedFrame resp2(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 3)); |
| 4061 MockRead reads[] = { | 4145 MockRead reads[] = { |
| 4062 CreateMockRead(resp1, 4), CreateMockRead(resp2, 5), | 4146 CreateMockRead(resp1, 4), CreateMockRead(resp2, 5), |
| 4063 MockRead(ASYNC, 0, 6) // EOF | 4147 MockRead(ASYNC, 0, 6) // EOF |
| 4064 }; | 4148 }; |
| 4065 | 4149 |
| 4066 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 4150 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 4067 session_deps_.socket_factory->AddSocketDataProvider(&data); | 4151 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 4068 | 4152 |
| 4153 AddSSLSocketData(); |
| 4154 |
| 4069 CreateNetworkSession(); | 4155 CreateNetworkSession(); |
| 4070 CreateInsecureSpdySession(); | 4156 CreateSecureSpdySession(); |
| 4071 | 4157 |
| 4072 base::WeakPtr<SpdyStream> stream1 = | 4158 base::WeakPtr<SpdyStream> stream1 = |
| 4073 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 4159 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 4074 test_url_, LOWEST, NetLogWithSource()); | 4160 test_url_, LOWEST, NetLogWithSource()); |
| 4075 ASSERT_TRUE(stream1); | 4161 ASSERT_TRUE(stream1); |
| 4076 | 4162 |
| 4077 test::StreamDelegateWithBody delegate1(stream1, kBodyDataStringPiece); | 4163 test::StreamDelegateWithBody delegate1(stream1, kBodyDataStringPiece); |
| 4078 stream1->SetDelegate(&delegate1); | 4164 stream1->SetDelegate(&delegate1); |
| 4079 | 4165 |
| 4080 base::WeakPtr<SpdyStream> stream2 = | 4166 base::WeakPtr<SpdyStream> stream2 = |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4190 | 4276 |
| 4191 SpdySerializedFrame resp2(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 3)); | 4277 SpdySerializedFrame resp2(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 3)); |
| 4192 MockRead reads[] = { | 4278 MockRead reads[] = { |
| 4193 CreateMockRead(resp2, 4), MockRead(ASYNC, ERR_IO_PENDING, 5), | 4279 CreateMockRead(resp2, 4), MockRead(ASYNC, ERR_IO_PENDING, 5), |
| 4194 MockRead(ASYNC, 0, 6) // EOF | 4280 MockRead(ASYNC, 0, 6) // EOF |
| 4195 }; | 4281 }; |
| 4196 | 4282 |
| 4197 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 4283 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 4198 session_deps_.socket_factory->AddSocketDataProvider(&data); | 4284 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 4199 | 4285 |
| 4286 AddSSLSocketData(); |
| 4287 |
| 4200 CreateNetworkSession(); | 4288 CreateNetworkSession(); |
| 4201 CreateInsecureSpdySession(); | 4289 CreateSecureSpdySession(); |
| 4202 | 4290 |
| 4203 base::WeakPtr<SpdyStream> stream1 = | 4291 base::WeakPtr<SpdyStream> stream1 = |
| 4204 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 4292 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 4205 test_url_, LOWEST, NetLogWithSource()); | 4293 test_url_, LOWEST, NetLogWithSource()); |
| 4206 ASSERT_TRUE(stream1); | 4294 ASSERT_TRUE(stream1); |
| 4207 | 4295 |
| 4208 test::StreamDelegateWithBody delegate1(stream1, kBodyDataStringPiece); | 4296 test::StreamDelegateWithBody delegate1(stream1, kBodyDataStringPiece); |
| 4209 stream1->SetDelegate(&delegate1); | 4297 stream1->SetDelegate(&delegate1); |
| 4210 | 4298 |
| 4211 base::WeakPtr<SpdyStream> stream2 = | 4299 base::WeakPtr<SpdyStream> stream2 = |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4322 CreateMockWrite(req1, 0), CreateMockWrite(req2, 1), | 4410 CreateMockWrite(req1, 0), CreateMockWrite(req2, 1), |
| 4323 }; | 4411 }; |
| 4324 | 4412 |
| 4325 MockRead reads[] = { | 4413 MockRead reads[] = { |
| 4326 MockRead(ASYNC, ERR_IO_PENDING, 2), MockRead(ASYNC, 0, 3) // EOF | 4414 MockRead(ASYNC, ERR_IO_PENDING, 2), MockRead(ASYNC, 0, 3) // EOF |
| 4327 }; | 4415 }; |
| 4328 | 4416 |
| 4329 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 4417 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 4330 session_deps_.socket_factory->AddSocketDataProvider(&data); | 4418 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 4331 | 4419 |
| 4420 AddSSLSocketData(); |
| 4421 |
| 4332 CreateNetworkSession(); | 4422 CreateNetworkSession(); |
| 4333 CreateInsecureSpdySession(); | 4423 CreateSecureSpdySession(); |
| 4334 | 4424 |
| 4335 base::WeakPtr<SpdyStream> stream1 = | 4425 base::WeakPtr<SpdyStream> stream1 = |
| 4336 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 4426 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 4337 test_url_, LOWEST, NetLogWithSource()); | 4427 test_url_, LOWEST, NetLogWithSource()); |
| 4338 ASSERT_TRUE(stream1); | 4428 ASSERT_TRUE(stream1); |
| 4339 | 4429 |
| 4340 test::StreamDelegateWithBody delegate1(stream1, kBodyDataStringPiece); | 4430 test::StreamDelegateWithBody delegate1(stream1, kBodyDataStringPiece); |
| 4341 stream1->SetDelegate(&delegate1); | 4431 stream1->SetDelegate(&delegate1); |
| 4342 | 4432 |
| 4343 base::WeakPtr<SpdyStream> stream2 = | 4433 base::WeakPtr<SpdyStream> stream2 = |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4413 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); | 4503 SpdySerializedFrame resp(spdy_util_.ConstructSpdyGetReply(nullptr, 0, 1)); |
| 4414 SpdySerializedFrame body(spdy_util_.ConstructSpdyDataFrame(1, true)); | 4504 SpdySerializedFrame body(spdy_util_.ConstructSpdyDataFrame(1, true)); |
| 4415 MockRead reads[] = { | 4505 MockRead reads[] = { |
| 4416 MockRead(ASYNC, ERR_IO_PENDING, 1), CreateMockRead(resp, 2), | 4506 MockRead(ASYNC, ERR_IO_PENDING, 1), CreateMockRead(resp, 2), |
| 4417 CreateMockRead(body, 3), | 4507 CreateMockRead(body, 3), |
| 4418 }; | 4508 }; |
| 4419 | 4509 |
| 4420 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 4510 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 4421 session_deps_.socket_factory->AddSocketDataProvider(&data); | 4511 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 4422 | 4512 |
| 4513 AddSSLSocketData(); |
| 4514 |
| 4423 CreateNetworkSession(); | 4515 CreateNetworkSession(); |
| 4424 CreateInsecureSpdySession(); | 4516 CreateSecureSpdySession(); |
| 4425 | 4517 |
| 4426 base::WeakPtr<SpdyStream> spdy_stream = | 4518 base::WeakPtr<SpdyStream> spdy_stream = |
| 4427 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 4519 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 4428 test_url_, LOWEST, NetLogWithSource()); | 4520 test_url_, LOWEST, NetLogWithSource()); |
| 4429 ASSERT_TRUE(spdy_stream); | 4521 ASSERT_TRUE(spdy_stream); |
| 4430 test::StreamDelegateDoNothing delegate(spdy_stream); | 4522 test::StreamDelegateDoNothing delegate(spdy_stream); |
| 4431 spdy_stream->SetDelegate(&delegate); | 4523 spdy_stream->SetDelegate(&delegate); |
| 4432 | 4524 |
| 4433 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); | 4525 SpdyHeaderBlock headers(spdy_util_.ConstructGetHeaderBlock(kDefaultUrl)); |
| 4434 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); | 4526 spdy_stream->SendRequestHeaders(std::move(headers), NO_MORE_DATA_TO_SEND); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4469 SpdySerializedFrame settings_ack(spdy_util_.ConstructSpdySettingsAck()); | 4561 SpdySerializedFrame settings_ack(spdy_util_.ConstructSpdySettingsAck()); |
| 4470 SpdySerializedFrame req( | 4562 SpdySerializedFrame req( |
| 4471 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); | 4563 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); |
| 4472 MockWrite writes[] = { | 4564 MockWrite writes[] = { |
| 4473 CreateMockWrite(settings_ack, 1), CreateMockWrite(req, 2), | 4565 CreateMockWrite(settings_ack, 1), CreateMockWrite(req, 2), |
| 4474 }; | 4566 }; |
| 4475 | 4567 |
| 4476 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 4568 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 4477 session_deps_.socket_factory->AddSocketDataProvider(&data); | 4569 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 4478 | 4570 |
| 4571 AddSSLSocketData(); |
| 4572 |
| 4479 CreateNetworkSession(); | 4573 CreateNetworkSession(); |
| 4480 CreateInsecureSpdySession(); | 4574 CreateSecureSpdySession(); |
| 4481 | 4575 |
| 4482 // Read the settings frame. | 4576 // Read the settings frame. |
| 4483 base::RunLoop().RunUntilIdle(); | 4577 base::RunLoop().RunUntilIdle(); |
| 4484 | 4578 |
| 4485 base::WeakPtr<SpdyStream> spdy_stream1 = | 4579 base::WeakPtr<SpdyStream> spdy_stream1 = |
| 4486 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 4580 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 4487 test_url_, LOWEST, NetLogWithSource()); | 4581 test_url_, LOWEST, NetLogWithSource()); |
| 4488 ASSERT_TRUE(spdy_stream1); | 4582 ASSERT_TRUE(spdy_stream1); |
| 4489 EXPECT_EQ(0u, spdy_stream1->stream_id()); | 4583 EXPECT_EQ(0u, spdy_stream1->stream_id()); |
| 4490 test::StreamDelegateDoNothing delegate1(spdy_stream1); | 4584 test::StreamDelegateDoNothing delegate1(spdy_stream1); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4548 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); | 4642 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); |
| 4549 SpdySerializedFrame rst( | 4643 SpdySerializedFrame rst( |
| 4550 spdy_util_.ConstructSpdyRstStream(4, RST_STREAM_REFUSED_STREAM)); | 4644 spdy_util_.ConstructSpdyRstStream(4, RST_STREAM_REFUSED_STREAM)); |
| 4551 MockWrite writes[] = { | 4645 MockWrite writes[] = { |
| 4552 CreateMockWrite(req, 0), CreateMockWrite(rst, 5), | 4646 CreateMockWrite(req, 0), CreateMockWrite(rst, 5), |
| 4553 }; | 4647 }; |
| 4554 | 4648 |
| 4555 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 4649 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 4556 session_deps_.socket_factory->AddSocketDataProvider(&data); | 4650 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 4557 | 4651 |
| 4652 AddSSLSocketData(); |
| 4653 |
| 4558 CreateNetworkSession(); | 4654 CreateNetworkSession(); |
| 4559 CreateInsecureSpdySession(); | 4655 CreateSecureSpdySession(); |
| 4560 session_->set_max_concurrent_pushed_streams(1); | 4656 session_->set_max_concurrent_pushed_streams(1); |
| 4561 | 4657 |
| 4562 base::WeakPtr<SpdyStream> spdy_stream1 = | 4658 base::WeakPtr<SpdyStream> spdy_stream1 = |
| 4563 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 4659 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 4564 test_url_, LOWEST, NetLogWithSource()); | 4660 test_url_, LOWEST, NetLogWithSource()); |
| 4565 ASSERT_TRUE(spdy_stream1); | 4661 ASSERT_TRUE(spdy_stream1); |
| 4566 EXPECT_EQ(0u, spdy_stream1->stream_id()); | 4662 EXPECT_EQ(0u, spdy_stream1->stream_id()); |
| 4567 test::StreamDelegateDoNothing delegate1(spdy_stream1); | 4663 test::StreamDelegateDoNothing delegate1(spdy_stream1); |
| 4568 spdy_stream1->SetDelegate(&delegate1); | 4664 spdy_stream1->SetDelegate(&delegate1); |
| 4569 | 4665 |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4640 | 4736 |
| 4641 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 4737 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 4642 session_deps_.socket_factory->AddSocketDataProvider(&data); | 4738 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 4643 | 4739 |
| 4644 std::unique_ptr<TestProxyDelegate> proxy_delegate(new TestProxyDelegate()); | 4740 std::unique_ptr<TestProxyDelegate> proxy_delegate(new TestProxyDelegate()); |
| 4645 proxy_delegate->set_trusted_spdy_proxy( | 4741 proxy_delegate->set_trusted_spdy_proxy( |
| 4646 net::ProxyServer(net::ProxyServer::SCHEME_HTTPS, | 4742 net::ProxyServer(net::ProxyServer::SCHEME_HTTPS, |
| 4647 HostPortPair(GURL(kDefaultUrl).host(), 443))); | 4743 HostPortPair(GURL(kDefaultUrl).host(), 443))); |
| 4648 session_deps_.proxy_delegate.reset(proxy_delegate.release()); | 4744 session_deps_.proxy_delegate.reset(proxy_delegate.release()); |
| 4649 | 4745 |
| 4650 // Load a cert that is valid for: | 4746 AddSSLSocketData(); |
| 4651 // www.example.org | |
| 4652 // mail.example.org | |
| 4653 // mail.example.com | |
| 4654 base::FilePath certs_dir = GetTestCertsDirectory(); | |
| 4655 scoped_refptr<X509Certificate> test_cert( | |
| 4656 ImportCertFromFile(certs_dir, "spdy_pooling.pem")); | |
| 4657 ASSERT_NE(static_cast<X509Certificate*>(nullptr), test_cert.get()); | |
| 4658 | |
| 4659 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); | |
| 4660 ssl.cert = test_cert; | |
| 4661 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); | |
| 4662 | 4747 |
| 4663 CreateNetworkSession(); | 4748 CreateNetworkSession(); |
| 4664 CreateSecureSpdySession(); | 4749 CreateSecureSpdySession(); |
| 4665 | 4750 |
| 4666 base::WeakPtr<SpdyStream> spdy_stream = | 4751 base::WeakPtr<SpdyStream> spdy_stream = |
| 4667 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 4752 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 4668 test_url_, LOWEST, NetLogWithSource()); | 4753 test_url_, LOWEST, NetLogWithSource()); |
| 4669 ASSERT_TRUE(spdy_stream); | 4754 ASSERT_TRUE(spdy_stream); |
| 4670 EXPECT_EQ(0u, spdy_stream->stream_id()); | 4755 EXPECT_EQ(0u, spdy_stream->stream_id()); |
| 4671 test::StreamDelegateDoNothing delegate(spdy_stream); | 4756 test::StreamDelegateDoNothing delegate(spdy_stream); |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4730 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); | 4815 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); |
| 4731 SpdySerializedFrame rst( | 4816 SpdySerializedFrame rst( |
| 4732 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_REFUSED_STREAM)); | 4817 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_REFUSED_STREAM)); |
| 4733 MockWrite writes[] = { | 4818 MockWrite writes[] = { |
| 4734 CreateMockWrite(req, 0), CreateMockWrite(rst, 3), | 4819 CreateMockWrite(req, 0), CreateMockWrite(rst, 3), |
| 4735 }; | 4820 }; |
| 4736 | 4821 |
| 4737 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 4822 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 4738 session_deps_.socket_factory->AddSocketDataProvider(&data); | 4823 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 4739 | 4824 |
| 4740 // Load a cert that is valid for: | 4825 AddSSLSocketData(); |
| 4741 // www.example.org | |
| 4742 // mail.example.org | |
| 4743 // mail.example.com | |
| 4744 base::FilePath certs_dir = GetTestCertsDirectory(); | |
| 4745 scoped_refptr<X509Certificate> test_cert( | |
| 4746 ImportCertFromFile(certs_dir, "spdy_pooling.pem")); | |
| 4747 ASSERT_NE(static_cast<X509Certificate*>(nullptr), test_cert.get()); | |
| 4748 | |
| 4749 SSLSocketDataProvider ssl(SYNCHRONOUS, OK); | |
| 4750 ssl.cert = test_cert; | |
| 4751 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl); | |
| 4752 | 4826 |
| 4753 CreateNetworkSession(); | 4827 CreateNetworkSession(); |
| 4754 CreateSecureSpdySession(); | 4828 CreateSecureSpdySession(); |
| 4755 | 4829 |
| 4756 base::WeakPtr<SpdyStream> spdy_stream = | 4830 base::WeakPtr<SpdyStream> spdy_stream = |
| 4757 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 4831 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 4758 test_url_, LOWEST, NetLogWithSource()); | 4832 test_url_, LOWEST, NetLogWithSource()); |
| 4759 ASSERT_TRUE(spdy_stream); | 4833 ASSERT_TRUE(spdy_stream); |
| 4760 EXPECT_EQ(0u, spdy_stream->stream_id()); | 4834 EXPECT_EQ(0u, spdy_stream->stream_id()); |
| 4761 test::StreamDelegateDoNothing delegate(spdy_stream); | 4835 test::StreamDelegateDoNothing delegate(spdy_stream); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4805 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); | 4879 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); |
| 4806 SpdySerializedFrame rst( | 4880 SpdySerializedFrame rst( |
| 4807 spdy_util_.ConstructSpdyRstStream(4, RST_STREAM_REFUSED_STREAM)); | 4881 spdy_util_.ConstructSpdyRstStream(4, RST_STREAM_REFUSED_STREAM)); |
| 4808 MockWrite writes[] = { | 4882 MockWrite writes[] = { |
| 4809 CreateMockWrite(req, 0), CreateMockWrite(rst, 7), | 4883 CreateMockWrite(req, 0), CreateMockWrite(rst, 7), |
| 4810 }; | 4884 }; |
| 4811 | 4885 |
| 4812 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 4886 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 4813 session_deps_.socket_factory->AddSocketDataProvider(&data); | 4887 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 4814 | 4888 |
| 4889 AddSSLSocketData(); |
| 4890 |
| 4815 CreateNetworkSession(); | 4891 CreateNetworkSession(); |
| 4816 CreateInsecureSpdySession(); | 4892 CreateSecureSpdySession(); |
| 4817 session_->set_max_concurrent_pushed_streams(1); | 4893 session_->set_max_concurrent_pushed_streams(1); |
| 4818 | 4894 |
| 4819 base::WeakPtr<SpdyStream> spdy_stream1 = | 4895 base::WeakPtr<SpdyStream> spdy_stream1 = |
| 4820 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 4896 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 4821 test_url_, LOWEST, NetLogWithSource()); | 4897 test_url_, LOWEST, NetLogWithSource()); |
| 4822 ASSERT_TRUE(spdy_stream1); | 4898 ASSERT_TRUE(spdy_stream1); |
| 4823 EXPECT_EQ(0u, spdy_stream1->stream_id()); | 4899 EXPECT_EQ(0u, spdy_stream1->stream_id()); |
| 4824 test::StreamDelegateDoNothing delegate1(spdy_stream1); | 4900 test::StreamDelegateDoNothing delegate1(spdy_stream1); |
| 4825 spdy_stream1->SetDelegate(&delegate1); | 4901 spdy_stream1->SetDelegate(&delegate1); |
| 4826 | 4902 |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4890 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); | 4966 spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true)); |
| 4891 SpdySerializedFrame rst( | 4967 SpdySerializedFrame rst( |
| 4892 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_CANCEL)); | 4968 spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_CANCEL)); |
| 4893 MockWrite writes[] = { | 4969 MockWrite writes[] = { |
| 4894 CreateMockWrite(req, 0), CreateMockWrite(rst, 5), | 4970 CreateMockWrite(req, 0), CreateMockWrite(rst, 5), |
| 4895 }; | 4971 }; |
| 4896 | 4972 |
| 4897 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); | 4973 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); |
| 4898 session_deps_.socket_factory->AddSocketDataProvider(&data); | 4974 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 4899 | 4975 |
| 4976 AddSSLSocketData(); |
| 4977 |
| 4900 CreateNetworkSession(); | 4978 CreateNetworkSession(); |
| 4901 CreateInsecureSpdySession(); | 4979 CreateSecureSpdySession(); |
| 4902 | 4980 |
| 4903 base::WeakPtr<SpdyStream> spdy_stream1 = | 4981 base::WeakPtr<SpdyStream> spdy_stream1 = |
| 4904 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, | 4982 CreateStreamSynchronously(SPDY_REQUEST_RESPONSE_STREAM, session_, |
| 4905 test_url_, LOWEST, NetLogWithSource()); | 4983 test_url_, LOWEST, NetLogWithSource()); |
| 4906 ASSERT_TRUE(spdy_stream1); | 4984 ASSERT_TRUE(spdy_stream1); |
| 4907 EXPECT_EQ(0u, spdy_stream1->stream_id()); | 4985 EXPECT_EQ(0u, spdy_stream1->stream_id()); |
| 4908 test::StreamDelegateDoNothing delegate1(spdy_stream1); | 4986 test::StreamDelegateDoNothing delegate1(spdy_stream1); |
| 4909 spdy_stream1->SetDelegate(&delegate1); | 4987 spdy_stream1->SetDelegate(&delegate1); |
| 4910 | 4988 |
| 4911 EXPECT_EQ(0u, session_->num_active_streams()); | 4989 EXPECT_EQ(0u, session_->num_active_streams()); |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4960 TEST_F(SpdySessionTest, RejectInvalidUnknownFrames) { | 5038 TEST_F(SpdySessionTest, RejectInvalidUnknownFrames) { |
| 4961 session_deps_.host_resolver->set_synchronous_mode(true); | 5039 session_deps_.host_resolver->set_synchronous_mode(true); |
| 4962 | 5040 |
| 4963 MockRead reads[] = { | 5041 MockRead reads[] = { |
| 4964 MockRead(SYNCHRONOUS, ERR_IO_PENDING) // Stall forever. | 5042 MockRead(SYNCHRONOUS, ERR_IO_PENDING) // Stall forever. |
| 4965 }; | 5043 }; |
| 4966 | 5044 |
| 4967 StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); | 5045 StaticSocketDataProvider data(reads, arraysize(reads), nullptr, 0); |
| 4968 session_deps_.socket_factory->AddSocketDataProvider(&data); | 5046 session_deps_.socket_factory->AddSocketDataProvider(&data); |
| 4969 | 5047 |
| 5048 AddSSLSocketData(); |
| 5049 |
| 4970 CreateNetworkSession(); | 5050 CreateNetworkSession(); |
| 4971 CreateInsecureSpdySession(); | 5051 CreateSecureSpdySession(); |
| 4972 | 5052 |
| 4973 session_->stream_hi_water_mark_ = 5; | 5053 session_->stream_hi_water_mark_ = 5; |
| 4974 // Low client (odd) ids are fine. | 5054 // Low client (odd) ids are fine. |
| 4975 EXPECT_TRUE(session_->OnUnknownFrame(3, 0)); | 5055 EXPECT_TRUE(session_->OnUnknownFrame(3, 0)); |
| 4976 // Client id exceeding watermark. | 5056 // Client id exceeding watermark. |
| 4977 EXPECT_FALSE(session_->OnUnknownFrame(9, 0)); | 5057 EXPECT_FALSE(session_->OnUnknownFrame(9, 0)); |
| 4978 | 5058 |
| 4979 session_->last_accepted_push_stream_id_ = 6; | 5059 session_->last_accepted_push_stream_id_ = 6; |
| 4980 // Low server (even) ids are fine. | 5060 // Low server (even) ids are fine. |
| 4981 EXPECT_TRUE(session_->OnUnknownFrame(2, 0)); | 5061 EXPECT_TRUE(session_->OnUnknownFrame(2, 0)); |
| 4982 // Server id exceeding last accepted id. | 5062 // Server id exceeding last accepted id. |
| 4983 EXPECT_FALSE(session_->OnUnknownFrame(8, 0)); | 5063 EXPECT_FALSE(session_->OnUnknownFrame(8, 0)); |
| 4984 } | 5064 } |
| 4985 | 5065 |
| 4986 class AltSvcFrameTest : public SpdySessionTest { | 5066 class AltSvcFrameTest : public SpdySessionTest { |
| 4987 public: | 5067 public: |
| 4988 AltSvcFrameTest() | 5068 AltSvcFrameTest() |
| 4989 : alternative_service_("quic", | 5069 : alternative_service_("quic", |
| 4990 "alternative.example.org", | 5070 "alternative.example.org", |
| 4991 443, | 5071 443, |
| 4992 86400, | 5072 86400, |
| 4993 SpdyAltSvcWireFormat::VersionVector()), | 5073 SpdyAltSvcWireFormat::VersionVector()) {} |
| 4994 ssl_(SYNCHRONOUS, OK) {} | |
| 4995 | 5074 |
| 4996 void AddSocketData(const SpdyAltSvcIR& altsvc_ir) { | 5075 void AddSocketData(const SpdyAltSvcIR& altsvc_ir) { |
| 4997 altsvc_frame_ = spdy_util_.SerializeFrame(altsvc_ir); | 5076 altsvc_frame_ = spdy_util_.SerializeFrame(altsvc_ir); |
| 4998 reads_.push_back(CreateMockRead(altsvc_frame_, 0)); | 5077 reads_.push_back(CreateMockRead(altsvc_frame_, 0)); |
| 4999 reads_.push_back(MockRead(ASYNC, 0, 1)); | 5078 reads_.push_back(MockRead(ASYNC, 0, 1)); |
| 5000 | 5079 |
| 5001 data_.reset( | 5080 data_.reset( |
| 5002 new SequencedSocketData(reads_.data(), reads_.size(), nullptr, 0)); | 5081 new SequencedSocketData(reads_.data(), reads_.size(), nullptr, 0)); |
| 5003 session_deps_.socket_factory->AddSocketDataProvider(data_.get()); | 5082 session_deps_.socket_factory->AddSocketDataProvider(data_.get()); |
| 5004 } | 5083 } |
| 5005 | 5084 |
| 5006 void AddSSLSocketData() { | |
| 5007 // Load a cert that is valid for | |
| 5008 // www.example.org, mail.example.org, and mail.example.com. | |
| 5009 cert_ = ImportCertFromFile(GetTestCertsDirectory(), "spdy_pooling.pem"); | |
| 5010 ASSERT_TRUE(cert_); | |
| 5011 ssl_.cert = cert_; | |
| 5012 session_deps_.socket_factory->AddSSLSocketDataProvider(&ssl_); | |
| 5013 } | |
| 5014 | |
| 5015 void CreateSecureSpdySession() { | 5085 void CreateSecureSpdySession() { |
| 5016 session_ = ::net::CreateSecureSpdySession(http_session_.get(), key_, | 5086 session_ = ::net::CreateSecureSpdySession(http_session_.get(), key_, |
| 5017 NetLogWithSource()); | 5087 NetLogWithSource()); |
| 5018 } | 5088 } |
| 5019 | 5089 |
| 5020 SpdyAltSvcWireFormat::AlternativeService alternative_service_; | 5090 SpdyAltSvcWireFormat::AlternativeService alternative_service_; |
| 5021 | 5091 |
| 5022 private: | 5092 private: |
| 5023 SpdySerializedFrame altsvc_frame_; | 5093 SpdySerializedFrame altsvc_frame_; |
| 5024 std::vector<MockRead> reads_; | 5094 std::vector<MockRead> reads_; |
| 5025 std::unique_ptr<SequencedSocketData> data_; | 5095 std::unique_ptr<SequencedSocketData> data_; |
| 5026 scoped_refptr<X509Certificate> cert_; | |
| 5027 SSLSocketDataProvider ssl_; | |
| 5028 }; | 5096 }; |
| 5029 | 5097 |
| 5030 TEST_F(AltSvcFrameTest, ProcessAltSvcFrame) { | 5098 TEST_F(AltSvcFrameTest, ProcessAltSvcFrame) { |
| 5031 const char origin[] = "https://mail.example.org"; | 5099 const char origin[] = "https://mail.example.org"; |
| 5032 SpdyAltSvcIR altsvc_ir(0); | 5100 SpdyAltSvcIR altsvc_ir(0); |
| 5033 altsvc_ir.add_altsvc(alternative_service_); | 5101 altsvc_ir.add_altsvc(alternative_service_); |
| 5034 altsvc_ir.set_origin(origin); | 5102 altsvc_ir.set_origin(origin); |
| 5035 AddSocketData(altsvc_ir); | 5103 AddSocketData(altsvc_ir); |
| 5036 AddSSLSocketData(); | 5104 AddSSLSocketData(); |
| 5037 | 5105 |
| (...skipping 442 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5480 ssl_info.cert = ImportCertFromFile(GetTestCertsDirectory(), | 5548 ssl_info.cert = ImportCertFromFile(GetTestCertsDirectory(), |
| 5481 "spdy_pooling.pem"); | 5549 "spdy_pooling.pem"); |
| 5482 ssl_info.is_issued_by_known_root = true; | 5550 ssl_info.is_issued_by_known_root = true; |
| 5483 ssl_info.public_key_hashes.push_back(test::GetTestHashValue(primary_pin)); | 5551 ssl_info.public_key_hashes.push_back(test::GetTestHashValue(primary_pin)); |
| 5484 | 5552 |
| 5485 EXPECT_TRUE(SpdySession::CanPool( | 5553 EXPECT_TRUE(SpdySession::CanPool( |
| 5486 &tss, ssl_info, "www.example.org", "mail.example.org")); | 5554 &tss, ssl_info, "www.example.org", "mail.example.org")); |
| 5487 } | 5555 } |
| 5488 | 5556 |
| 5489 } // namespace net | 5557 } // namespace net |
| OLD | NEW |