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

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

Issue 1298253002: Remove reference counting from HttpNetworkSession. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: test Created 5 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_http_stream_unittest.cc ('k') | net/spdy/spdy_proxy_client_socket_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 <string> 5 #include <string>
6 #include <vector> 6 #include <vector>
7 7
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/bind_helpers.h" 9 #include "base/bind_helpers.h"
10 #include "base/files/file_util.h" 10 #include "base/files/file_util.h"
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 MockConnect hanging_connect(SYNCHRONOUS, ERR_IO_PENDING); 364 MockConnect hanging_connect(SYNCHRONOUS, ERR_IO_PENDING);
365 DeterministicSocketData* hanging_non_alt_svc_socket = 365 DeterministicSocketData* hanging_non_alt_svc_socket =
366 new DeterministicSocketData(NULL, 0, NULL, 0); 366 new DeterministicSocketData(NULL, 0, NULL, 0);
367 hanging_non_alt_svc_socket->set_connect_data(hanging_connect); 367 hanging_non_alt_svc_socket->set_connect_data(hanging_connect);
368 session_deps_->deterministic_socket_factory->AddSocketDataProvider( 368 session_deps_->deterministic_socket_factory->AddSocketDataProvider(
369 hanging_non_alt_svc_socket); 369 hanging_non_alt_svc_socket);
370 alternate_deterministic_vector_.push_back(hanging_non_alt_svc_socket); 370 alternate_deterministic_vector_.push_back(hanging_non_alt_svc_socket);
371 } 371 }
372 } 372 }
373 373
374 void SetSession(const scoped_refptr<HttpNetworkSession>& session) { 374 void SetSession(scoped_ptr<HttpNetworkSession> session) {
375 session_ = session; 375 session_ = session.Pass();
376 } 376 }
377 HttpNetworkTransaction* trans() { return trans_.get(); } 377 HttpNetworkTransaction* trans() { return trans_.get(); }
378 void ResetTrans() { trans_.reset(); } 378 void ResetTrans() { trans_.reset(); }
379 TransactionHelperResult& output() { return output_; } 379 TransactionHelperResult& output() { return output_; }
380 const HttpRequestInfo& request() const { return request_; } 380 const HttpRequestInfo& request() const { return request_; }
381 const scoped_refptr<HttpNetworkSession>& session() const { 381 HttpNetworkSession* session() const { return session_.get(); }
382 return session_;
383 }
384 scoped_ptr<SpdySessionDependencies>& session_deps() { 382 scoped_ptr<SpdySessionDependencies>& session_deps() {
385 return session_deps_; 383 return session_deps_;
386 } 384 }
387 int port() const { return port_; } 385 int port() const { return port_; }
388 SpdyNetworkTransactionTestParams test_params() const { 386 SpdyNetworkTransactionTestParams test_params() const {
389 return test_params_; 387 return test_params_;
390 } 388 }
391 389
392 private: 390 private:
393 typedef std::vector<SocketDataProvider*> DataVector; 391 typedef std::vector<SocketDataProvider*> DataVector;
394 typedef std::vector<DeterministicSocketData*> DeterministicDataVector; 392 typedef std::vector<DeterministicSocketData*> DeterministicDataVector;
395 typedef ScopedVector<SSLSocketDataProvider> SSLVector; 393 typedef ScopedVector<SSLSocketDataProvider> SSLVector;
396 typedef ScopedVector<SocketDataProvider> AlternateVector; 394 typedef ScopedVector<SocketDataProvider> AlternateVector;
397 typedef ScopedVector<DeterministicSocketData> AlternateDeterministicVector; 395 typedef ScopedVector<DeterministicSocketData> AlternateDeterministicVector;
398 HttpRequestInfo request_; 396 HttpRequestInfo request_;
399 RequestPriority priority_; 397 RequestPriority priority_;
400 scoped_ptr<SpdySessionDependencies> session_deps_; 398 scoped_ptr<SpdySessionDependencies> session_deps_;
401 scoped_refptr<HttpNetworkSession> session_; 399 scoped_ptr<HttpNetworkSession> session_;
402 TransactionHelperResult output_; 400 TransactionHelperResult output_;
403 scoped_ptr<SocketDataProvider> first_transaction_; 401 scoped_ptr<SocketDataProvider> first_transaction_;
404 SSLVector ssl_vector_; 402 SSLVector ssl_vector_;
405 TestCompletionCallback callback_; 403 TestCompletionCallback callback_;
406 scoped_ptr<HttpNetworkTransaction> trans_; 404 scoped_ptr<HttpNetworkTransaction> trans_;
407 scoped_ptr<HttpNetworkTransaction> trans_http_; 405 scoped_ptr<HttpNetworkTransaction> trans_http_;
408 DataVector data_vector_; 406 DataVector data_vector_;
409 DeterministicDataVector deterministic_data_vector_; 407 DeterministicDataVector deterministic_data_vector_;
410 AlternateVector alternate_vector_; 408 AlternateVector alternate_vector_;
411 AlternateDeterministicVector alternate_deterministic_vector_; 409 AlternateDeterministicVector alternate_deterministic_vector_;
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
580 578
581 void VerifyStreamsClosed(const NormalSpdyTransactionHelper& helper) { 579 void VerifyStreamsClosed(const NormalSpdyTransactionHelper& helper) {
582 // This lengthy block is reaching into the pool to dig out the active 580 // This lengthy block is reaching into the pool to dig out the active
583 // session. Once we have the session, we verify that the streams are 581 // session. Once we have the session, we verify that the streams are
584 // all closed and not leaked at this point. 582 // all closed and not leaked at this point.
585 const GURL& url = helper.request().url; 583 const GURL& url = helper.request().url;
586 HostPortPair host_port_pair(url.host(), 443); 584 HostPortPair host_port_pair(url.host(), 443);
587 SpdySessionKey key(host_port_pair, ProxyServer::Direct(), 585 SpdySessionKey key(host_port_pair, ProxyServer::Direct(),
588 PRIVACY_MODE_DISABLED); 586 PRIVACY_MODE_DISABLED);
589 BoundNetLog log; 587 BoundNetLog log;
590 const scoped_refptr<HttpNetworkSession>& session = helper.session(); 588 HttpNetworkSession* session = helper.session();
591 base::WeakPtr<SpdySession> spdy_session = 589 base::WeakPtr<SpdySession> spdy_session =
592 session->spdy_session_pool()->FindAvailableSession(key, log); 590 session->spdy_session_pool()->FindAvailableSession(key, log);
593 ASSERT_TRUE(spdy_session != NULL); 591 ASSERT_TRUE(spdy_session != NULL);
594 EXPECT_EQ(0u, spdy_session->num_active_streams()); 592 EXPECT_EQ(0u, spdy_session->num_active_streams());
595 EXPECT_EQ(0u, spdy_session->num_unclaimed_pushed_streams()); 593 EXPECT_EQ(0u, spdy_session->num_unclaimed_pushed_streams());
596 } 594 }
597 595
598 void RunServerPushTest(SequencedSocketData* data, 596 void RunServerPushTest(SequencedSocketData* data,
599 HttpResponseInfo* response, 597 HttpResponseInfo* response,
600 HttpResponseInfo* push_response, 598 HttpResponseInfo* push_response,
601 const std::string& expected) { 599 const std::string& expected) {
602 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, 600 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY,
603 BoundNetLog(), GetParam(), NULL); 601 BoundNetLog(), GetParam(), NULL);
604 helper.RunPreTestSetup(); 602 helper.RunPreTestSetup();
605 helper.AddData(data); 603 helper.AddData(data);
606 604
607 HttpNetworkTransaction* trans = helper.trans(); 605 HttpNetworkTransaction* trans = helper.trans();
608 606
609 // Start the transaction with basic parameters. 607 // Start the transaction with basic parameters.
610 TestCompletionCallback callback; 608 TestCompletionCallback callback;
611 int rv = trans->Start( 609 int rv = trans->Start(
612 &CreateGetRequest(), callback.callback(), BoundNetLog()); 610 &CreateGetRequest(), callback.callback(), BoundNetLog());
613 EXPECT_EQ(ERR_IO_PENDING, rv); 611 EXPECT_EQ(ERR_IO_PENDING, rv);
614 rv = callback.WaitForResult(); 612 rv = callback.WaitForResult();
615 613
616 // Request the pushed path. 614 // Request the pushed path.
617 scoped_ptr<HttpNetworkTransaction> trans2( 615 scoped_ptr<HttpNetworkTransaction> trans2(
618 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session().get())); 616 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session()));
619 rv = trans2->Start( 617 rv = trans2->Start(
620 &CreateGetPushRequest(), callback.callback(), BoundNetLog()); 618 &CreateGetPushRequest(), callback.callback(), BoundNetLog());
621 EXPECT_EQ(ERR_IO_PENDING, rv); 619 EXPECT_EQ(ERR_IO_PENDING, rv);
622 base::RunLoop().RunUntilIdle(); 620 base::RunLoop().RunUntilIdle();
623 621
624 // The data for the pushed path may be coming in more than 1 frame. Compile 622 // The data for the pushed path may be coming in more than 1 frame. Compile
625 // the results into a single string. 623 // the results into a single string.
626 624
627 // Read the server push body. 625 // Read the server push body.
628 std::string result2; 626 std::string result2;
(...skipping 18 matching lines...) Expand all
647 *push_response = *trans2->GetResponseInfo(); 645 *push_response = *trans2->GetResponseInfo();
648 646
649 VerifyStreamsClosed(helper); 647 VerifyStreamsClosed(helper);
650 } 648 }
651 649
652 static void DeleteSessionCallback(NormalSpdyTransactionHelper* helper, 650 static void DeleteSessionCallback(NormalSpdyTransactionHelper* helper,
653 int result) { 651 int result) {
654 helper->ResetTrans(); 652 helper->ResetTrans();
655 } 653 }
656 654
657 static void StartTransactionCallback( 655 static void StartTransactionCallback(HttpNetworkSession* session,
658 const scoped_refptr<HttpNetworkSession>& session, 656 GURL url,
659 GURL url, 657 int result) {
660 int result) {
661 scoped_ptr<HttpNetworkTransaction> trans( 658 scoped_ptr<HttpNetworkTransaction> trans(
662 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); 659 new HttpNetworkTransaction(DEFAULT_PRIORITY, session));
663 TestCompletionCallback callback; 660 TestCompletionCallback callback;
664 HttpRequestInfo request; 661 HttpRequestInfo request;
665 request.method = "GET"; 662 request.method = "GET";
666 request.url = url; 663 request.url = url;
667 request.load_flags = 0; 664 request.load_flags = 0;
668 int rv = trans->Start(&request, callback.callback(), BoundNetLog()); 665 int rv = trans->Start(&request, callback.callback(), BoundNetLog());
669 EXPECT_EQ(ERR_IO_PENDING, rv); 666 EXPECT_EQ(ERR_IO_PENDING, rv);
670 callback.WaitForResult(); 667 callback.WaitForResult();
671 } 668 }
672 669
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
717 ::testing::Values( 714 ::testing::Values(
718 SpdyNetworkTransactionTestParams(kProtoSPDY31, HTTPS_SPDY_VIA_NPN), 715 SpdyNetworkTransactionTestParams(kProtoSPDY31, HTTPS_SPDY_VIA_NPN),
719 SpdyNetworkTransactionTestParams(kProtoSPDY31, HTTP_SPDY_VIA_ALT_SVC), 716 SpdyNetworkTransactionTestParams(kProtoSPDY31, HTTP_SPDY_VIA_ALT_SVC),
720 SpdyNetworkTransactionTestParams(kProtoHTTP2, HTTPS_SPDY_VIA_NPN), 717 SpdyNetworkTransactionTestParams(kProtoHTTP2, HTTPS_SPDY_VIA_NPN),
721 SpdyNetworkTransactionTestParams(kProtoHTTP2, HTTP_SPDY_VIA_ALT_SVC))); 718 SpdyNetworkTransactionTestParams(kProtoHTTP2, HTTP_SPDY_VIA_ALT_SVC)));
722 719
723 // Verify HttpNetworkTransaction constructor. 720 // Verify HttpNetworkTransaction constructor.
724 TEST_P(SpdyNetworkTransactionTest, Constructor) { 721 TEST_P(SpdyNetworkTransactionTest, Constructor) {
725 scoped_ptr<SpdySessionDependencies> session_deps( 722 scoped_ptr<SpdySessionDependencies> session_deps(
726 CreateSpdySessionDependencies(GetParam())); 723 CreateSpdySessionDependencies(GetParam()));
727 scoped_refptr<HttpNetworkSession> session( 724 scoped_ptr<HttpNetworkSession> session(
728 SpdySessionDependencies::SpdyCreateSession(session_deps.get())); 725 SpdySessionDependencies::SpdyCreateSession(session_deps.get()));
729 scoped_ptr<HttpTransaction> trans( 726 scoped_ptr<HttpTransaction> trans(
730 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); 727 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get()));
731 } 728 }
732 729
733 TEST_P(SpdyNetworkTransactionTest, Get) { 730 TEST_P(SpdyNetworkTransactionTest, Get) {
734 // Construct the request. 731 // Construct the request.
735 scoped_ptr<SpdyFrame> req( 732 scoped_ptr<SpdyFrame> req(
736 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); 733 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true));
737 MockWrite writes[] = {CreateMockWrite(*req, 0)}; 734 MockWrite writes[] = {CreateMockWrite(*req, 0)};
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
885 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, 882 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY,
886 BoundNetLog(), GetParam(), NULL); 883 BoundNetLog(), GetParam(), NULL);
887 helper.RunPreTestSetup(); 884 helper.RunPreTestSetup();
888 helper.AddData(&data); 885 helper.AddData(&data);
889 // We require placeholder data because three get requests are sent out at 886 // We require placeholder data because three get requests are sent out at
890 // the same time which results in three sockets being connected. The first 887 // the same time which results in three sockets being connected. The first
891 // on will negotiate SPDY and will be used for all requests. 888 // on will negotiate SPDY and will be used for all requests.
892 helper.AddData(&data_placeholder); 889 helper.AddData(&data_placeholder);
893 helper.AddData(&data_placeholder); 890 helper.AddData(&data_placeholder);
894 scoped_ptr<HttpNetworkTransaction> trans1( 891 scoped_ptr<HttpNetworkTransaction> trans1(
895 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session().get())); 892 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session()));
896 scoped_ptr<HttpNetworkTransaction> trans2( 893 scoped_ptr<HttpNetworkTransaction> trans2(
897 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session().get())); 894 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session()));
898 scoped_ptr<HttpNetworkTransaction> trans3( 895 scoped_ptr<HttpNetworkTransaction> trans3(
899 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session().get())); 896 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session()));
900 897
901 TestCompletionCallback callback1; 898 TestCompletionCallback callback1;
902 TestCompletionCallback callback2; 899 TestCompletionCallback callback2;
903 TestCompletionCallback callback3; 900 TestCompletionCallback callback3;
904 901
905 HttpRequestInfo httpreq1 = CreateGetRequest(); 902 HttpRequestInfo httpreq1 = CreateGetRequest();
906 HttpRequestInfo httpreq2 = CreateGetRequest(); 903 HttpRequestInfo httpreq2 = CreateGetRequest();
907 HttpRequestInfo httpreq3 = CreateGetRequest(); 904 HttpRequestInfo httpreq3 = CreateGetRequest();
908 905
909 out.rv = trans1->Start(&httpreq1, callback1.callback(), log); 906 out.rv = trans1->Start(&httpreq1, callback1.callback(), log);
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
970 TransactionHelperResult out; 967 TransactionHelperResult out;
971 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, 968 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY,
972 BoundNetLog(), GetParam(), NULL); 969 BoundNetLog(), GetParam(), NULL);
973 helper.RunPreTestSetup(); 970 helper.RunPreTestSetup();
974 helper.AddData(&data); 971 helper.AddData(&data);
975 // We require placeholder data because two requests are sent out at 972 // We require placeholder data because two requests are sent out at
976 // the same time which results in two sockets being connected. The first 973 // the same time which results in two sockets being connected. The first
977 // on will negotiate SPDY and will be used for all requests. 974 // on will negotiate SPDY and will be used for all requests.
978 helper.AddData(&data_placeholder); 975 helper.AddData(&data_placeholder);
979 scoped_ptr<HttpNetworkTransaction> trans1( 976 scoped_ptr<HttpNetworkTransaction> trans1(
980 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session().get())); 977 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session()));
981 scoped_ptr<HttpNetworkTransaction> trans2( 978 scoped_ptr<HttpNetworkTransaction> trans2(
982 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session().get())); 979 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session()));
983 980
984 TestCompletionCallback callback1; 981 TestCompletionCallback callback1;
985 TestCompletionCallback callback2; 982 TestCompletionCallback callback2;
986 983
987 HttpRequestInfo httpreq1 = CreateGetRequest(); 984 HttpRequestInfo httpreq1 = CreateGetRequest();
988 HttpRequestInfo httpreq2 = CreateGetRequest(); 985 HttpRequestInfo httpreq2 = CreateGetRequest();
989 986
990 out.rv = trans1->Start(&httpreq1, callback1.callback(), log); 987 out.rv = trans1->Start(&httpreq1, callback1.callback(), log);
991 ASSERT_EQ(ERR_IO_PENDING, out.rv); 988 ASSERT_EQ(ERR_IO_PENDING, out.rv);
992 out.rv = trans2->Start(&httpreq2, callback2.callback(), log); 989 out.rv = trans2->Start(&httpreq2, callback2.callback(), log);
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
1058 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, 1055 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY,
1059 BoundNetLog(), GetParam(), NULL); 1056 BoundNetLog(), GetParam(), NULL);
1060 helper.RunPreTestSetup(); 1057 helper.RunPreTestSetup();
1061 helper.AddData(&preconnect_data); 1058 helper.AddData(&preconnect_data);
1062 // We require placeholder data because 3 connections are attempted (first is 1059 // We require placeholder data because 3 connections are attempted (first is
1063 // the preconnect, 2nd and 3rd are the never finished connections. 1060 // the preconnect, 2nd and 3rd are the never finished connections.
1064 helper.AddData(&data_placeholder); 1061 helper.AddData(&data_placeholder);
1065 helper.AddData(&data_placeholder); 1062 helper.AddData(&data_placeholder);
1066 1063
1067 scoped_ptr<HttpNetworkTransaction> trans1( 1064 scoped_ptr<HttpNetworkTransaction> trans1(
1068 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session().get())); 1065 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session()));
1069 scoped_ptr<HttpNetworkTransaction> trans2( 1066 scoped_ptr<HttpNetworkTransaction> trans2(
1070 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session().get())); 1067 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session()));
1071 1068
1072 TestCompletionCallback callback1; 1069 TestCompletionCallback callback1;
1073 TestCompletionCallback callback2; 1070 TestCompletionCallback callback2;
1074 1071
1075 HttpRequestInfo httpreq = CreateGetRequest(); 1072 HttpRequestInfo httpreq = CreateGetRequest();
1076 1073
1077 // Preconnect the first. 1074 // Preconnect the first.
1078 SSLConfig preconnect_ssl_config; 1075 SSLConfig preconnect_ssl_config;
1079 helper.session()->ssl_config_service()->GetSSLConfig(&preconnect_ssl_config); 1076 helper.session()->ssl_config_service()->GetSSLConfig(&preconnect_ssl_config);
1080 HttpStreamFactory* http_stream_factory = 1077 HttpStreamFactory* http_stream_factory =
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
1175 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); 1172 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
1176 1173
1177 BoundNetLog log; 1174 BoundNetLog log;
1178 TransactionHelperResult out; 1175 TransactionHelperResult out;
1179 { 1176 {
1180 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, 1177 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY,
1181 BoundNetLog(), GetParam(), NULL); 1178 BoundNetLog(), GetParam(), NULL);
1182 helper.RunPreTestSetup(); 1179 helper.RunPreTestSetup();
1183 helper.AddData(&data); 1180 helper.AddData(&data);
1184 scoped_ptr<HttpNetworkTransaction> trans1( 1181 scoped_ptr<HttpNetworkTransaction> trans1(
1185 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session().get())); 1182 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session()));
1186 scoped_ptr<HttpNetworkTransaction> trans2( 1183 scoped_ptr<HttpNetworkTransaction> trans2(
1187 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session().get())); 1184 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session()));
1188 scoped_ptr<HttpNetworkTransaction> trans3( 1185 scoped_ptr<HttpNetworkTransaction> trans3(
1189 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session().get())); 1186 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session()));
1190 1187
1191 TestCompletionCallback callback1; 1188 TestCompletionCallback callback1;
1192 TestCompletionCallback callback2; 1189 TestCompletionCallback callback2;
1193 TestCompletionCallback callback3; 1190 TestCompletionCallback callback3;
1194 1191
1195 HttpRequestInfo httpreq1 = CreateGetRequest(); 1192 HttpRequestInfo httpreq1 = CreateGetRequest();
1196 HttpRequestInfo httpreq2 = CreateGetRequest(); 1193 HttpRequestInfo httpreq2 = CreateGetRequest();
1197 HttpRequestInfo httpreq3 = CreateGetRequest(); 1194 HttpRequestInfo httpreq3 = CreateGetRequest();
1198 1195
1199 out.rv = trans1->Start(&httpreq1, callback1.callback(), log); 1196 out.rv = trans1->Start(&httpreq1, callback1.callback(), log);
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
1310 }; 1307 };
1311 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); 1308 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
1312 BoundNetLog log; 1309 BoundNetLog log;
1313 TransactionHelperResult out; 1310 TransactionHelperResult out;
1314 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, 1311 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY,
1315 BoundNetLog(), GetParam(), NULL); 1312 BoundNetLog(), GetParam(), NULL);
1316 helper.RunPreTestSetup(); 1313 helper.RunPreTestSetup();
1317 helper.AddData(&data); 1314 helper.AddData(&data);
1318 1315
1319 scoped_ptr<HttpNetworkTransaction> trans1( 1316 scoped_ptr<HttpNetworkTransaction> trans1(
1320 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session().get())); 1317 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session()));
1321 scoped_ptr<HttpNetworkTransaction> trans2( 1318 scoped_ptr<HttpNetworkTransaction> trans2(
1322 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session().get())); 1319 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session()));
1323 scoped_ptr<HttpNetworkTransaction> trans3( 1320 scoped_ptr<HttpNetworkTransaction> trans3(
1324 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session().get())); 1321 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session()));
1325 scoped_ptr<HttpNetworkTransaction> trans4( 1322 scoped_ptr<HttpNetworkTransaction> trans4(
1326 new HttpNetworkTransaction(HIGHEST, helper.session().get())); 1323 new HttpNetworkTransaction(HIGHEST, helper.session()));
1327 1324
1328 TestCompletionCallback callback1; 1325 TestCompletionCallback callback1;
1329 TestCompletionCallback callback2; 1326 TestCompletionCallback callback2;
1330 TestCompletionCallback callback3; 1327 TestCompletionCallback callback3;
1331 TestCompletionCallback callback4; 1328 TestCompletionCallback callback4;
1332 1329
1333 HttpRequestInfo httpreq1 = CreateGetRequest(); 1330 HttpRequestInfo httpreq1 = CreateGetRequest();
1334 HttpRequestInfo httpreq2 = CreateGetRequest(); 1331 HttpRequestInfo httpreq2 = CreateGetRequest();
1335 HttpRequestInfo httpreq3 = CreateGetRequest(); 1332 HttpRequestInfo httpreq3 = CreateGetRequest();
1336 HttpRequestInfo httpreq4 = CreateGetRequest(); 1333 HttpRequestInfo httpreq4 = CreateGetRequest();
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
1439 1436
1440 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes)); 1437 SequencedSocketData data(reads, arraysize(reads), writes, arraysize(writes));
1441 1438
1442 BoundNetLog log; 1439 BoundNetLog log;
1443 TransactionHelperResult out; 1440 TransactionHelperResult out;
1444 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, 1441 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY,
1445 BoundNetLog(), GetParam(), NULL); 1442 BoundNetLog(), GetParam(), NULL);
1446 helper.RunPreTestSetup(); 1443 helper.RunPreTestSetup();
1447 helper.AddData(&data); 1444 helper.AddData(&data);
1448 scoped_ptr<HttpNetworkTransaction> trans1( 1445 scoped_ptr<HttpNetworkTransaction> trans1(
1449 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session().get())); 1446 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session()));
1450 scoped_ptr<HttpNetworkTransaction> trans2( 1447 scoped_ptr<HttpNetworkTransaction> trans2(
1451 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session().get())); 1448 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session()));
1452 scoped_ptr<HttpNetworkTransaction> trans3( 1449 scoped_ptr<HttpNetworkTransaction> trans3(
1453 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session().get())); 1450 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session()));
1454 1451
1455 TestCompletionCallback callback1; 1452 TestCompletionCallback callback1;
1456 TestCompletionCallback callback2; 1453 TestCompletionCallback callback2;
1457 TestCompletionCallback callback3; 1454 TestCompletionCallback callback3;
1458 1455
1459 HttpRequestInfo httpreq1 = CreateGetRequest(); 1456 HttpRequestInfo httpreq1 = CreateGetRequest();
1460 HttpRequestInfo httpreq2 = CreateGetRequest(); 1457 HttpRequestInfo httpreq2 = CreateGetRequest();
1461 HttpRequestInfo httpreq3 = CreateGetRequest(); 1458 HttpRequestInfo httpreq3 = CreateGetRequest();
1462 1459
1463 out.rv = trans1->Start(&httpreq1, callback1.callback(), log); 1460 out.rv = trans1->Start(&httpreq1, callback1.callback(), log);
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
1570 BoundNetLog log; 1567 BoundNetLog log;
1571 TransactionHelperResult out; 1568 TransactionHelperResult out;
1572 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, 1569 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY,
1573 BoundNetLog(), GetParam(), NULL); 1570 BoundNetLog(), GetParam(), NULL);
1574 helper.RunPreTestSetup(); 1571 helper.RunPreTestSetup();
1575 helper.AddData(&data); 1572 helper.AddData(&data);
1576 // We require placeholder data because three get requests are sent out, so 1573 // We require placeholder data because three get requests are sent out, so
1577 // there needs to be three sets of SSL connection data. 1574 // there needs to be three sets of SSL connection data.
1578 helper.AddData(&data_placeholder); 1575 helper.AddData(&data_placeholder);
1579 helper.AddData(&data_placeholder); 1576 helper.AddData(&data_placeholder);
1580 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, helper.session().get()); 1577 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, helper.session());
1581 HttpNetworkTransaction trans2(DEFAULT_PRIORITY, helper.session().get()); 1578 HttpNetworkTransaction trans2(DEFAULT_PRIORITY, helper.session());
1582 HttpNetworkTransaction* trans3( 1579 HttpNetworkTransaction* trans3(
1583 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session().get())); 1580 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session()));
1584 1581
1585 TestCompletionCallback callback1; 1582 TestCompletionCallback callback1;
1586 TestCompletionCallback callback2; 1583 TestCompletionCallback callback2;
1587 KillerCallback callback3(trans3); 1584 KillerCallback callback3(trans3);
1588 1585
1589 HttpRequestInfo httpreq1 = CreateGetRequest(); 1586 HttpRequestInfo httpreq1 = CreateGetRequest();
1590 HttpRequestInfo httpreq2 = CreateGetRequest(); 1587 HttpRequestInfo httpreq2 = CreateGetRequest();
1591 HttpRequestInfo httpreq3 = CreateGetRequest(); 1588 HttpRequestInfo httpreq3 = CreateGetRequest();
1592 1589
1593 out.rv = trans1.Start(&httpreq1, callback1.callback(), log); 1590 out.rv = trans1.Start(&httpreq1, callback1.callback(), log);
(...skipping 2951 matching lines...) Expand 10 before | Expand all | Expand 10 after
4545 ASSERT_EQ(OK, ReadTransaction(helper.trans(), &response_data)); 4542 ASSERT_EQ(OK, ReadTransaction(helper.trans(), &response_data));
4546 EXPECT_EQ("hello", response_data); 4543 EXPECT_EQ("hello", response_data);
4547 } 4544 }
4548 4545
4549 // Test to make sure we can correctly connect through a proxy. 4546 // Test to make sure we can correctly connect through a proxy.
4550 TEST_P(SpdyNetworkTransactionTest, ProxyConnect) { 4547 TEST_P(SpdyNetworkTransactionTest, ProxyConnect) {
4551 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, 4548 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY,
4552 BoundNetLog(), GetParam(), NULL); 4549 BoundNetLog(), GetParam(), NULL);
4553 helper.session_deps() = CreateSpdySessionDependencies( 4550 helper.session_deps() = CreateSpdySessionDependencies(
4554 GetParam(), ProxyService::CreateFixedFromPacResult("PROXY myproxy:70")); 4551 GetParam(), ProxyService::CreateFixedFromPacResult("PROXY myproxy:70"));
4555 helper.SetSession(make_scoped_refptr( 4552 helper.SetSession(
4556 SpdySessionDependencies::SpdyCreateSession(helper.session_deps().get()))); 4553 SpdySessionDependencies::SpdyCreateSession(helper.session_deps().get()));
4557 helper.RunPreTestSetup(); 4554 helper.RunPreTestSetup();
4558 HttpNetworkTransaction* trans = helper.trans(); 4555 HttpNetworkTransaction* trans = helper.trans();
4559 4556
4560 const char kConnect443[] = { 4557 const char kConnect443[] = {
4561 "CONNECT www.example.org:443 HTTP/1.1\r\n" 4558 "CONNECT www.example.org:443 HTTP/1.1\r\n"
4562 "Host: www.example.org\r\n" 4559 "Host: www.example.org\r\n"
4563 "Proxy-Connection: keep-alive\r\n\r\n"}; 4560 "Proxy-Connection: keep-alive\r\n\r\n"};
4564 const char kHTTP200[] = {"HTTP/1.1 200 OK\r\n\r\n"}; 4561 const char kHTTP200[] = {"HTTP/1.1 200 OK\r\n\r\n"};
4565 scoped_ptr<SpdyFrame> req( 4562 scoped_ptr<SpdyFrame> req(
4566 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); 4563 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true));
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
4610 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, 4607 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY,
4611 BoundNetLog(), GetParam(), NULL); 4608 BoundNetLog(), GetParam(), NULL);
4612 4609
4613 // Use a proxy service which returns a proxy fallback list from DIRECT to 4610 // Use a proxy service which returns a proxy fallback list from DIRECT to
4614 // myproxy:70. For this test there will be no fallback, so it is equivalent 4611 // myproxy:70. For this test there will be no fallback, so it is equivalent
4615 // to simply DIRECT. The reason for appending the second proxy is to verify 4612 // to simply DIRECT. The reason for appending the second proxy is to verify
4616 // that the session pool key used does is just "DIRECT". 4613 // that the session pool key used does is just "DIRECT".
4617 helper.session_deps() = CreateSpdySessionDependencies( 4614 helper.session_deps() = CreateSpdySessionDependencies(
4618 GetParam(), 4615 GetParam(),
4619 ProxyService::CreateFixedFromPacResult("DIRECT; PROXY myproxy:70")); 4616 ProxyService::CreateFixedFromPacResult("DIRECT; PROXY myproxy:70"));
4620 helper.SetSession(make_scoped_refptr( 4617 helper.SetSession(
4621 SpdySessionDependencies::SpdyCreateSession(helper.session_deps().get()))); 4618 SpdySessionDependencies::SpdyCreateSession(helper.session_deps().get()));
4622 4619
4623 SpdySessionPool* spdy_session_pool = helper.session()->spdy_session_pool(); 4620 SpdySessionPool* spdy_session_pool = helper.session()->spdy_session_pool();
4624 helper.RunPreTestSetup(); 4621 helper.RunPreTestSetup();
4625 4622
4626 // Construct and send a simple GET request. 4623 // Construct and send a simple GET request.
4627 scoped_ptr<SpdyFrame> req( 4624 scoped_ptr<SpdyFrame> req(
4628 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true)); 4625 spdy_util_.ConstructSpdyGet(NULL, 0, false, 1, LOWEST, true));
4629 MockWrite writes[] = { 4626 MockWrite writes[] = {
4630 CreateMockWrite(*req, 0), 4627 CreateMockWrite(*req, 0),
4631 }; 4628 };
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
4696 reads2, arraysize(reads2), writes2, arraysize(writes2))); 4693 reads2, arraysize(reads2), writes2, arraysize(writes2)));
4697 4694
4698 // Create another request to www.example.org, but this time through a proxy. 4695 // Create another request to www.example.org, but this time through a proxy.
4699 HttpRequestInfo request_proxy; 4696 HttpRequestInfo request_proxy;
4700 request_proxy.method = "GET"; 4697 request_proxy.method = "GET";
4701 request_proxy.url = GURL(GetDefaultUrlWithPath("/foo.dat")); 4698 request_proxy.url = GURL(GetDefaultUrlWithPath("/foo.dat"));
4702 request_proxy.load_flags = 0; 4699 request_proxy.load_flags = 0;
4703 scoped_ptr<SpdySessionDependencies> ssd_proxy( 4700 scoped_ptr<SpdySessionDependencies> ssd_proxy(
4704 CreateSpdySessionDependencies(GetParam())); 4701 CreateSpdySessionDependencies(GetParam()));
4705 // Ensure that this transaction uses the same SpdySessionPool. 4702 // Ensure that this transaction uses the same SpdySessionPool.
4706 scoped_refptr<HttpNetworkSession> session_proxy( 4703 scoped_ptr<HttpNetworkSession> session_proxy(
4707 SpdySessionDependencies::SpdyCreateSession(ssd_proxy.get())); 4704 SpdySessionDependencies::SpdyCreateSession(ssd_proxy.get()));
4708 NormalSpdyTransactionHelper helper_proxy(request_proxy, DEFAULT_PRIORITY, 4705 NormalSpdyTransactionHelper helper_proxy(request_proxy, DEFAULT_PRIORITY,
4709 BoundNetLog(), GetParam(), NULL); 4706 BoundNetLog(), GetParam(), NULL);
4710 HttpNetworkSessionPeer session_peer(session_proxy); 4707 HttpNetworkSessionPeer session_peer(session_proxy.get());
4711 scoped_ptr<ProxyService> proxy_service( 4708 scoped_ptr<ProxyService> proxy_service(
4712 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70")); 4709 ProxyService::CreateFixedFromPacResult("PROXY myproxy:70"));
4713 session_peer.SetProxyService(proxy_service.get()); 4710 session_peer.SetProxyService(proxy_service.get());
4714 helper_proxy.session_deps().swap(ssd_proxy); 4711 helper_proxy.session_deps().swap(ssd_proxy);
4715 helper_proxy.SetSession(session_proxy); 4712 helper_proxy.SetSession(session_proxy.Pass());
4716 helper_proxy.RunPreTestSetup(); 4713 helper_proxy.RunPreTestSetup();
4717 helper_proxy.AddData(data_proxy.get()); 4714 helper_proxy.AddData(data_proxy.get());
4718 4715
4719 HttpNetworkTransaction* trans_proxy = helper_proxy.trans(); 4716 HttpNetworkTransaction* trans_proxy = helper_proxy.trans();
4720 TestCompletionCallback callback_proxy; 4717 TestCompletionCallback callback_proxy;
4721 int rv = trans_proxy->Start( 4718 int rv = trans_proxy->Start(
4722 &request_proxy, callback_proxy.callback(), BoundNetLog()); 4719 &request_proxy, callback_proxy.callback(), BoundNetLog());
4723 EXPECT_EQ(ERR_IO_PENDING, rv); 4720 EXPECT_EQ(ERR_IO_PENDING, rv);
4724 rv = callback_proxy.WaitForResult(); 4721 rv = callback_proxy.WaitForResult();
4725 EXPECT_EQ(0, rv); 4722 EXPECT_EQ(0, rv);
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
4780 arraysize(writes2)); 4777 arraysize(writes2));
4781 4778
4782 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY, 4779 NormalSpdyTransactionHelper helper(CreateGetRequest(), DEFAULT_PRIORITY,
4783 BoundNetLog(), GetParam(), NULL); 4780 BoundNetLog(), GetParam(), NULL);
4784 helper.AddData(&data1); 4781 helper.AddData(&data1);
4785 helper.AddData(&data2); 4782 helper.AddData(&data2);
4786 helper.RunPreTestSetup(); 4783 helper.RunPreTestSetup();
4787 4784
4788 for (int i = 0; i < 2; ++i) { 4785 for (int i = 0; i < 2; ++i) {
4789 scoped_ptr<HttpNetworkTransaction> trans( 4786 scoped_ptr<HttpNetworkTransaction> trans(
4790 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session().get())); 4787 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session()));
4791 4788
4792 TestCompletionCallback callback; 4789 TestCompletionCallback callback;
4793 int rv = trans->Start( 4790 int rv = trans->Start(
4794 &helper.request(), callback.callback(), BoundNetLog()); 4791 &helper.request(), callback.callback(), BoundNetLog());
4795 EXPECT_EQ(ERR_IO_PENDING, rv); 4792 EXPECT_EQ(ERR_IO_PENDING, rv);
4796 // On the second transaction, we trigger the RST. 4793 // On the second transaction, we trigger the RST.
4797 if (i == 1) { 4794 if (i == 1) {
4798 if (variant == VARIANT_RST_DURING_READ_COMPLETION) { 4795 if (variant == VARIANT_RST_DURING_READ_COMPLETION) {
4799 // Writes to the socket complete asynchronously on SPDY by running 4796 // Writes to the socket complete asynchronously on SPDY by running
4800 // through the message loop. Complete the write here. 4797 // through the message loop. Complete the write here.
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after
5096 int rv = trans->Start( 5093 int rv = trans->Start(
5097 &CreateGetRequest(), callback.callback(), BoundNetLog()); 5094 &CreateGetRequest(), callback.callback(), BoundNetLog());
5098 EXPECT_EQ(ERR_IO_PENDING, rv); 5095 EXPECT_EQ(ERR_IO_PENDING, rv);
5099 data.Run(); 5096 data.Run();
5100 rv = callback.WaitForResult(); 5097 rv = callback.WaitForResult();
5101 EXPECT_EQ(0, rv); 5098 EXPECT_EQ(0, rv);
5102 5099
5103 // Request the pushed path. At this point, we've received the push, but the 5100 // Request the pushed path. At this point, we've received the push, but the
5104 // headers are not yet complete. 5101 // headers are not yet complete.
5105 scoped_ptr<HttpNetworkTransaction> trans2( 5102 scoped_ptr<HttpNetworkTransaction> trans2(
5106 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session().get())); 5103 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session()));
5107 rv = trans2->Start( 5104 rv = trans2->Start(
5108 &CreateGetPushRequest(), callback.callback(), BoundNetLog()); 5105 &CreateGetPushRequest(), callback.callback(), BoundNetLog());
5109 EXPECT_EQ(ERR_IO_PENDING, rv); 5106 EXPECT_EQ(ERR_IO_PENDING, rv);
5110 data.RunFor(3); 5107 data.RunFor(3);
5111 base::RunLoop().RunUntilIdle(); 5108 base::RunLoop().RunUntilIdle();
5112 5109
5113 // Read the server push body. 5110 // Read the server push body.
5114 std::string result2; 5111 std::string result2;
5115 ReadResult(trans2.get(), &result2); 5112 ReadResult(trans2.get(), &result2);
5116 // Read the response body. 5113 // Read the response body.
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
5234 int rv = trans->Start( 5231 int rv = trans->Start(
5235 &CreateGetRequest(), callback.callback(), BoundNetLog()); 5232 &CreateGetRequest(), callback.callback(), BoundNetLog());
5236 EXPECT_EQ(ERR_IO_PENDING, rv); 5233 EXPECT_EQ(ERR_IO_PENDING, rv);
5237 data.Run(); 5234 data.Run();
5238 rv = callback.WaitForResult(); 5235 rv = callback.WaitForResult();
5239 EXPECT_EQ(0, rv); 5236 EXPECT_EQ(0, rv);
5240 5237
5241 // Request the pushed path. At this point, we've received the push, but the 5238 // Request the pushed path. At this point, we've received the push, but the
5242 // headers are not yet complete. 5239 // headers are not yet complete.
5243 scoped_ptr<HttpNetworkTransaction> trans2( 5240 scoped_ptr<HttpNetworkTransaction> trans2(
5244 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session().get())); 5241 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session()));
5245 rv = trans2->Start( 5242 rv = trans2->Start(
5246 &CreateGetPushRequest(), callback.callback(), BoundNetLog()); 5243 &CreateGetPushRequest(), callback.callback(), BoundNetLog());
5247 EXPECT_EQ(ERR_IO_PENDING, rv); 5244 EXPECT_EQ(ERR_IO_PENDING, rv);
5248 data.RunFor(3); 5245 data.RunFor(3);
5249 base::RunLoop().RunUntilIdle(); 5246 base::RunLoop().RunUntilIdle();
5250 5247
5251 // Read the server push body. 5248 // Read the server push body.
5252 std::string result2; 5249 std::string result2;
5253 ReadResult(trans2.get(), &result2); 5250 ReadResult(trans2.get(), &result2);
5254 // Read the response body. 5251 // Read the response body.
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
5350 int rv = trans->Start( 5347 int rv = trans->Start(
5351 &CreateGetRequest(), callback.callback(), BoundNetLog()); 5348 &CreateGetRequest(), callback.callback(), BoundNetLog());
5352 EXPECT_EQ(ERR_IO_PENDING, rv); 5349 EXPECT_EQ(ERR_IO_PENDING, rv);
5353 data.Run(); 5350 data.Run();
5354 rv = callback.WaitForResult(); 5351 rv = callback.WaitForResult();
5355 EXPECT_EQ(0, rv); 5352 EXPECT_EQ(0, rv);
5356 5353
5357 // Request the pushed path. At this point, we've received the push, but the 5354 // Request the pushed path. At this point, we've received the push, but the
5358 // headers are not yet complete. 5355 // headers are not yet complete.
5359 scoped_ptr<HttpNetworkTransaction> trans2( 5356 scoped_ptr<HttpNetworkTransaction> trans2(
5360 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session().get())); 5357 new HttpNetworkTransaction(DEFAULT_PRIORITY, helper.session()));
5361 rv = trans2->Start( 5358 rv = trans2->Start(
5362 &CreateGetPushRequest(), callback.callback(), BoundNetLog()); 5359 &CreateGetPushRequest(), callback.callback(), BoundNetLog());
5363 EXPECT_EQ(ERR_IO_PENDING, rv); 5360 EXPECT_EQ(ERR_IO_PENDING, rv);
5364 data.RunFor(2); 5361 data.RunFor(2);
5365 base::RunLoop().RunUntilIdle(); 5362 base::RunLoop().RunUntilIdle();
5366 5363
5367 // Read the server push body. 5364 // Read the server push body.
5368 std::string result2; 5365 std::string result2;
5369 ReadResult(trans2.get(), &result2); 5366 ReadResult(trans2.get(), &result2);
5370 // Read the response body. 5367 // Read the response body.
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after
5688 5685
5689 // Run the message loop, but do not allow the write to complete. 5686 // Run the message loop, but do not allow the write to complete.
5690 // This leaves the SpdySession with a write pending, which prevents 5687 // This leaves the SpdySession with a write pending, which prevents
5691 // SpdySession from attempting subsequent writes until this write completes. 5688 // SpdySession from attempting subsequent writes until this write completes.
5692 base::RunLoop().RunUntilIdle(); 5689 base::RunLoop().RunUntilIdle();
5693 5690
5694 // Now, start both new transactions 5691 // Now, start both new transactions
5695 HttpRequestInfo info2 = CreateGetRequest(); 5692 HttpRequestInfo info2 = CreateGetRequest();
5696 TestCompletionCallback callback2; 5693 TestCompletionCallback callback2;
5697 scoped_ptr<HttpNetworkTransaction> trans2( 5694 scoped_ptr<HttpNetworkTransaction> trans2(
5698 new HttpNetworkTransaction(MEDIUM, helper.session().get())); 5695 new HttpNetworkTransaction(MEDIUM, helper.session()));
5699 rv = trans2->Start(&info2, callback2.callback(), BoundNetLog()); 5696 rv = trans2->Start(&info2, callback2.callback(), BoundNetLog());
5700 EXPECT_EQ(ERR_IO_PENDING, rv); 5697 EXPECT_EQ(ERR_IO_PENDING, rv);
5701 base::RunLoop().RunUntilIdle(); 5698 base::RunLoop().RunUntilIdle();
5702 5699
5703 HttpRequestInfo info3 = CreateGetRequest(); 5700 HttpRequestInfo info3 = CreateGetRequest();
5704 TestCompletionCallback callback3; 5701 TestCompletionCallback callback3;
5705 scoped_ptr<HttpNetworkTransaction> trans3( 5702 scoped_ptr<HttpNetworkTransaction> trans3(
5706 new HttpNetworkTransaction(HIGHEST, helper.session().get())); 5703 new HttpNetworkTransaction(HIGHEST, helper.session()));
5707 rv = trans3->Start(&info3, callback3.callback(), BoundNetLog()); 5704 rv = trans3->Start(&info3, callback3.callback(), BoundNetLog());
5708 EXPECT_EQ(ERR_IO_PENDING, rv); 5705 EXPECT_EQ(ERR_IO_PENDING, rv);
5709 base::RunLoop().RunUntilIdle(); 5706 base::RunLoop().RunUntilIdle();
5710 5707
5711 // We now have two SYN_STREAM frames queued up which will be 5708 // We now have two SYN_STREAM frames queued up which will be
5712 // dequeued only once the first write completes, which we 5709 // dequeued only once the first write completes, which we
5713 // now allow to happen. 5710 // now allow to happen.
5714 data.RunFor(2); 5711 data.RunFor(2);
5715 EXPECT_EQ(OK, callback.WaitForResult()); 5712 EXPECT_EQ(OK, callback.WaitForResult());
5716 5713
(...skipping 875 matching lines...) Expand 10 before | Expand all | Expand 10 after
6592 TEST_P(SpdyNetworkTransactionTLSUsageCheckTest, TLSCipherSuiteSucky) { 6589 TEST_P(SpdyNetworkTransactionTLSUsageCheckTest, TLSCipherSuiteSucky) {
6593 scoped_ptr<SSLSocketDataProvider> ssl_provider( 6590 scoped_ptr<SSLSocketDataProvider> ssl_provider(
6594 new SSLSocketDataProvider(ASYNC, OK)); 6591 new SSLSocketDataProvider(ASYNC, OK));
6595 // Set to TLS_RSA_WITH_NULL_MD5 6592 // Set to TLS_RSA_WITH_NULL_MD5
6596 SSLConnectionStatusSetCipherSuite(0x1, &ssl_provider->connection_status); 6593 SSLConnectionStatusSetCipherSuite(0x1, &ssl_provider->connection_status);
6597 6594
6598 RunTLSUsageCheckTest(ssl_provider.Pass()); 6595 RunTLSUsageCheckTest(ssl_provider.Pass());
6599 } 6596 }
6600 6597
6601 } // namespace net 6598 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/spdy_http_stream_unittest.cc ('k') | net/spdy/spdy_proxy_client_socket_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698