Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(70)

Side by Side Diff: net/spdy/spdy_session_unittest.cc

Issue 2365263004: Make (almost) all SpdySessions secure in unittests. (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/spdy/spdy_session_pool_unittest.cc ('k') | net/spdy/spdy_stream_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « net/spdy/spdy_session_pool_unittest.cc ('k') | net/spdy/spdy_stream_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698