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

Side by Side Diff: net/http/http_network_transaction_unittest.cc

Issue 2589363002: Fix use-after-scope issues in HttpNetworkTransactionTest. (Closed)
Patch Set: Created 3 years, 12 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 | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/http/http_network_transaction.h" 5 #include "net/http/http_network_transaction.h"
6 6
7 #include <math.h> // ceil 7 #include <math.h> // ceil
8 #include <stdarg.h> 8 #include <stdarg.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
(...skipping 829 matching lines...) Expand 10 before | Expand all | Expand 10 after
840 TEST_F(HttpNetworkTransactionTest, SimpleGETNoHeadersWeirdPort) { 840 TEST_F(HttpNetworkTransactionTest, SimpleGETNoHeadersWeirdPort) {
841 MockRead data_reads[] = { 841 MockRead data_reads[] = {
842 MockRead("hello world"), MockRead(SYNCHRONOUS, OK), 842 MockRead("hello world"), MockRead(SYNCHRONOUS, OK),
843 }; 843 };
844 844
845 StaticSocketDataProvider data(data_reads, arraysize(data_reads), nullptr, 0); 845 StaticSocketDataProvider data(data_reads, arraysize(data_reads), nullptr, 0);
846 session_deps_.socket_factory->AddSocketDataProvider(&data); 846 session_deps_.socket_factory->AddSocketDataProvider(&data);
847 847
848 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 848 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
849 849
850 HttpRequestInfo request;
850 std::unique_ptr<HttpTransaction> trans( 851 std::unique_ptr<HttpTransaction> trans(
851 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); 852 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get()));
852 853
853 HttpRequestInfo request;
854 request.method = "GET"; 854 request.method = "GET";
855 request.url = GURL("http://www.example.com:2000/"); 855 request.url = GURL("http://www.example.com:2000/");
856 TestCompletionCallback callback; 856 TestCompletionCallback callback;
857 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); 857 int rv = trans->Start(&request, callback.callback(), NetLogWithSource());
858 EXPECT_THAT(callback.GetResult(rv), IsError(ERR_INVALID_HTTP_RESPONSE)); 858 EXPECT_THAT(callback.GetResult(rv), IsError(ERR_INVALID_HTTP_RESPONSE));
859 } 859 }
860 860
861 // Response with no status line, and a weird port. Option to allow weird ports 861 // Response with no status line, and a weird port. Option to allow weird ports
862 // enabled. 862 // enabled.
863 TEST_F(HttpNetworkTransactionTest, SimpleGETNoHeadersWeirdPortAllowed) { 863 TEST_F(HttpNetworkTransactionTest, SimpleGETNoHeadersWeirdPortAllowed) {
864 MockRead data_reads[] = { 864 MockRead data_reads[] = {
865 MockRead("hello world"), MockRead(SYNCHRONOUS, OK), 865 MockRead("hello world"), MockRead(SYNCHRONOUS, OK),
866 }; 866 };
867 867
868 StaticSocketDataProvider data(data_reads, arraysize(data_reads), nullptr, 0); 868 StaticSocketDataProvider data(data_reads, arraysize(data_reads), nullptr, 0);
869 session_deps_.socket_factory->AddSocketDataProvider(&data); 869 session_deps_.socket_factory->AddSocketDataProvider(&data);
870 session_deps_.http_09_on_non_default_ports_enabled = true; 870 session_deps_.http_09_on_non_default_ports_enabled = true;
871 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 871 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
872 872
873 HttpRequestInfo request;
873 std::unique_ptr<HttpTransaction> trans( 874 std::unique_ptr<HttpTransaction> trans(
874 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); 875 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get()));
875 876
876 HttpRequestInfo request;
877 request.method = "GET"; 877 request.method = "GET";
878 request.url = GURL("http://www.example.com:2000/"); 878 request.url = GURL("http://www.example.com:2000/");
879 TestCompletionCallback callback; 879 TestCompletionCallback callback;
880 int rv = trans->Start(&request, callback.callback(), NetLogWithSource()); 880 int rv = trans->Start(&request, callback.callback(), NetLogWithSource());
881 EXPECT_THAT(callback.GetResult(rv), IsOk()); 881 EXPECT_THAT(callback.GetResult(rv), IsOk());
882 882
883 const HttpResponseInfo* info = trans->GetResponseInfo(); 883 const HttpResponseInfo* info = trans->GetResponseInfo();
884 ASSERT_TRUE(info->headers); 884 ASSERT_TRUE(info->headers);
885 EXPECT_EQ("HTTP/0.9 200 OK", info->headers->GetStatusLine()); 885 EXPECT_EQ("HTTP/0.9 200 OK", info->headers->GetStatusLine());
886 886
(...skipping 9499 matching lines...) Expand 10 before | Expand all | Expand 10 after
10386 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 10386 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
10387 HttpServerProperties* http_server_properties = 10387 HttpServerProperties* http_server_properties =
10388 session->http_server_properties(); 10388 session->http_server_properties();
10389 AlternativeService alternative_service(kProtoQUIC, alternative); 10389 AlternativeService alternative_service(kProtoQUIC, alternative);
10390 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 10390 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
10391 http_server_properties->SetAlternativeService(server, alternative_service, 10391 http_server_properties->SetAlternativeService(server, alternative_service,
10392 expiration); 10392 expiration);
10393 // Mark the QUIC alternative service as broken. 10393 // Mark the QUIC alternative service as broken.
10394 http_server_properties->MarkAlternativeServiceBroken(alternative_service); 10394 http_server_properties->MarkAlternativeServiceBroken(alternative_service);
10395 10395
10396 HttpRequestInfo request;
10396 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); 10397 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get());
10397 HttpRequestInfo request;
10398 request.method = "GET"; 10398 request.method = "GET";
10399 request.url = GURL(origin_url); 10399 request.url = GURL(origin_url);
10400 TestCompletionCallback callback; 10400 TestCompletionCallback callback;
10401 NetErrorDetails details; 10401 NetErrorDetails details;
10402 EXPECT_FALSE(details.quic_broken); 10402 EXPECT_FALSE(details.quic_broken);
10403 10403
10404 trans.Start(&request, callback.callback(), NetLogWithSource()); 10404 trans.Start(&request, callback.callback(), NetLogWithSource());
10405 trans.PopulateNetErrorDetails(&details); 10405 trans.PopulateNetErrorDetails(&details);
10406 EXPECT_TRUE(details.quic_broken); 10406 EXPECT_TRUE(details.quic_broken);
10407 } 10407 }
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
10459 10459
10460 http_server_properties->SetAlternativeServices( 10460 http_server_properties->SetAlternativeServices(
10461 server, alternative_service_info_vector); 10461 server, alternative_service_info_vector);
10462 10462
10463 // Mark one of the QUIC alternative service as broken. 10463 // Mark one of the QUIC alternative service as broken.
10464 http_server_properties->MarkAlternativeServiceBroken(alternative_service1); 10464 http_server_properties->MarkAlternativeServiceBroken(alternative_service1);
10465 10465
10466 const AlternativeServiceVector alternative_service_vector = 10466 const AlternativeServiceVector alternative_service_vector =
10467 http_server_properties->GetAlternativeServices(server); 10467 http_server_properties->GetAlternativeServices(server);
10468 10468
10469 HttpRequestInfo request;
10469 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); 10470 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get());
10470 HttpRequestInfo request;
10471 request.method = "GET"; 10471 request.method = "GET";
10472 request.url = GURL(origin_url); 10472 request.url = GURL(origin_url);
10473 TestCompletionCallback callback; 10473 TestCompletionCallback callback;
10474 NetErrorDetails details; 10474 NetErrorDetails details;
10475 EXPECT_FALSE(details.quic_broken); 10475 EXPECT_FALSE(details.quic_broken);
10476 10476
10477 trans.Start(&request, callback.callback(), NetLogWithSource()); 10477 trans.Start(&request, callback.callback(), NetLogWithSource());
10478 trans.PopulateNetErrorDetails(&details); 10478 trans.PopulateNetErrorDetails(&details);
10479 EXPECT_FALSE(details.quic_broken); 10479 EXPECT_FALSE(details.quic_broken);
10480 } 10480 }
(...skipping 3330 matching lines...) Expand 10 before | Expand all | Expand 10 after
13811 13811
13812 // Set up alternative service for server. 13812 // Set up alternative service for server.
13813 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 13813 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
13814 HttpServerProperties* http_server_properties = 13814 HttpServerProperties* http_server_properties =
13815 session->http_server_properties(); 13815 session->http_server_properties();
13816 AlternativeService alternative_service(kProtoHTTP2, alternative); 13816 AlternativeService alternative_service(kProtoHTTP2, alternative);
13817 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 13817 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
13818 http_server_properties->SetAlternativeService(server, alternative_service, 13818 http_server_properties->SetAlternativeService(server, alternative_service,
13819 expiration); 13819 expiration);
13820 13820
13821 HttpRequestInfo request;
13821 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); 13822 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get());
13822 HttpRequestInfo request;
13823 request.method = "GET"; 13823 request.method = "GET";
13824 request.url = GURL("https://www.example.org:443"); 13824 request.url = GURL("https://www.example.org:443");
13825 TestCompletionCallback callback; 13825 TestCompletionCallback callback;
13826 13826
13827 // HTTP/2 (or SPDY) is required for alternative service, if HTTP/1.1 is 13827 // HTTP/2 (or SPDY) is required for alternative service, if HTTP/1.1 is
13828 // negotiated, the alternate Job should fail with ERR_ALPN_NEGOTIATION_FAILED. 13828 // negotiated, the alternate Job should fail with ERR_ALPN_NEGOTIATION_FAILED.
13829 int rv = trans.Start(&request, callback.callback(), NetLogWithSource()); 13829 int rv = trans.Start(&request, callback.callback(), NetLogWithSource());
13830 EXPECT_THAT(callback.GetResult(rv), IsError(ERR_ALPN_NEGOTIATION_FAILED)); 13830 EXPECT_THAT(callback.GetResult(rv), IsError(ERR_ALPN_NEGOTIATION_FAILED));
13831 } 13831 }
13832 13832
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
13986 // Set up alternative service for server. 13986 // Set up alternative service for server.
13987 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 13987 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
13988 HttpServerProperties* http_server_properties = 13988 HttpServerProperties* http_server_properties =
13989 session->http_server_properties(); 13989 session->http_server_properties();
13990 AlternativeService alternative_service(kProtoHTTP2, alternative); 13990 AlternativeService alternative_service(kProtoHTTP2, alternative);
13991 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1); 13991 base::Time expiration = base::Time::Now() + base::TimeDelta::FromDays(1);
13992 http_server_properties->SetAlternativeService(server, alternative_service, 13992 http_server_properties->SetAlternativeService(server, alternative_service,
13993 expiration); 13993 expiration);
13994 13994
13995 // First transaction to alternative to open an HTTP/1.1 socket. 13995 // First transaction to alternative to open an HTTP/1.1 socket.
13996 HttpRequestInfo request1;
13996 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, session.get()); 13997 HttpNetworkTransaction trans1(DEFAULT_PRIORITY, session.get());
13997 HttpRequestInfo request1;
13998 request1.method = "GET"; 13998 request1.method = "GET";
13999 request1.url = GURL(alternative_url); 13999 request1.url = GURL(alternative_url);
14000 request1.load_flags = 0; 14000 request1.load_flags = 0;
14001 TestCompletionCallback callback1; 14001 TestCompletionCallback callback1;
14002 14002
14003 int rv = trans1.Start(&request1, callback1.callback(), NetLogWithSource()); 14003 int rv = trans1.Start(&request1, callback1.callback(), NetLogWithSource());
14004 EXPECT_THAT(callback1.GetResult(rv), IsOk()); 14004 EXPECT_THAT(callback1.GetResult(rv), IsOk());
14005 const HttpResponseInfo* response1 = trans1.GetResponseInfo(); 14005 const HttpResponseInfo* response1 = trans1.GetResponseInfo();
14006 ASSERT_TRUE(response1); 14006 ASSERT_TRUE(response1);
14007 ASSERT_TRUE(response1->headers); 14007 ASSERT_TRUE(response1->headers);
14008 EXPECT_EQ("HTTP/1.1 200 OK", response1->headers->GetStatusLine()); 14008 EXPECT_EQ("HTTP/1.1 200 OK", response1->headers->GetStatusLine());
14009 EXPECT_TRUE(response1->was_alpn_negotiated); 14009 EXPECT_TRUE(response1->was_alpn_negotiated);
14010 EXPECT_FALSE(response1->was_fetched_via_spdy); 14010 EXPECT_FALSE(response1->was_fetched_via_spdy);
14011 std::string response_data1; 14011 std::string response_data1;
14012 ASSERT_THAT(ReadTransaction(&trans1, &response_data1), IsOk()); 14012 ASSERT_THAT(ReadTransaction(&trans1, &response_data1), IsOk());
14013 EXPECT_EQ("first HTTP/1.1 response from alternative", response_data1); 14013 EXPECT_EQ("first HTTP/1.1 response from alternative", response_data1);
14014 14014
14015 // Request for origin.example.org, which has an alternative service. This 14015 // Request for origin.example.org, which has an alternative service. This
14016 // will start two Jobs: the alternative looks for connections to pool to, 14016 // will start two Jobs: the alternative looks for connections to pool to,
14017 // finds one which is HTTP/1.1, and should ignore it, and should not try to 14017 // finds one which is HTTP/1.1, and should ignore it, and should not try to
14018 // open other connections to alternative server. The Job to server fails, so 14018 // open other connections to alternative server. The Job to server fails, so
14019 // this request fails. 14019 // this request fails.
14020 HttpRequestInfo request2;
14020 HttpNetworkTransaction trans2(DEFAULT_PRIORITY, session.get()); 14021 HttpNetworkTransaction trans2(DEFAULT_PRIORITY, session.get());
14021 HttpRequestInfo request2;
14022 request2.method = "GET"; 14022 request2.method = "GET";
14023 request2.url = GURL(origin_url); 14023 request2.url = GURL(origin_url);
14024 request2.load_flags = 0; 14024 request2.load_flags = 0;
14025 TestCompletionCallback callback2; 14025 TestCompletionCallback callback2;
14026 14026
14027 rv = trans2.Start(&request2, callback2.callback(), NetLogWithSource()); 14027 rv = trans2.Start(&request2, callback2.callback(), NetLogWithSource());
14028 EXPECT_THAT(callback2.GetResult(rv), IsError(ERR_CONNECTION_REFUSED)); 14028 EXPECT_THAT(callback2.GetResult(rv), IsError(ERR_CONNECTION_REFUSED));
14029 14029
14030 // Another transaction to alternative. This is to test that the HTTP/1.1 14030 // Another transaction to alternative. This is to test that the HTTP/1.1
14031 // socket is still open and in the pool. 14031 // socket is still open and in the pool.
14032 HttpRequestInfo request3;
14032 HttpNetworkTransaction trans3(DEFAULT_PRIORITY, session.get()); 14033 HttpNetworkTransaction trans3(DEFAULT_PRIORITY, session.get());
14033 HttpRequestInfo request3;
14034 request3.method = "GET"; 14034 request3.method = "GET";
14035 request3.url = GURL(alternative_url); 14035 request3.url = GURL(alternative_url);
14036 request3.load_flags = 0; 14036 request3.load_flags = 0;
14037 TestCompletionCallback callback3; 14037 TestCompletionCallback callback3;
14038 14038
14039 rv = trans3.Start(&request3, callback3.callback(), NetLogWithSource()); 14039 rv = trans3.Start(&request3, callback3.callback(), NetLogWithSource());
14040 EXPECT_THAT(callback3.GetResult(rv), IsOk()); 14040 EXPECT_THAT(callback3.GetResult(rv), IsOk());
14041 const HttpResponseInfo* response3 = trans3.GetResponseInfo(); 14041 const HttpResponseInfo* response3 = trans3.GetResponseInfo();
14042 ASSERT_TRUE(response3); 14042 ASSERT_TRUE(response3);
14043 ASSERT_TRUE(response3->headers); 14043 ASSERT_TRUE(response3->headers);
(...skipping 1089 matching lines...) Expand 10 before | Expand all | Expand 10 after
15133 } // namespace 15133 } // namespace
15134 15134
15135 // Make sure that HttpNetworkTransaction passes on its priority to its 15135 // Make sure that HttpNetworkTransaction passes on its priority to its
15136 // stream request on start. 15136 // stream request on start.
15137 TEST_F(HttpNetworkTransactionTest, SetStreamRequestPriorityOnStart) { 15137 TEST_F(HttpNetworkTransactionTest, SetStreamRequestPriorityOnStart) {
15138 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 15138 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
15139 HttpNetworkSessionPeer peer(session.get()); 15139 HttpNetworkSessionPeer peer(session.get());
15140 FakeStreamFactory* fake_factory = new FakeStreamFactory(); 15140 FakeStreamFactory* fake_factory = new FakeStreamFactory();
15141 peer.SetHttpStreamFactory(std::unique_ptr<HttpStreamFactory>(fake_factory)); 15141 peer.SetHttpStreamFactory(std::unique_ptr<HttpStreamFactory>(fake_factory));
15142 15142
15143 HttpRequestInfo request;
15143 HttpNetworkTransaction trans(LOW, session.get()); 15144 HttpNetworkTransaction trans(LOW, session.get());
15144 15145
15145 ASSERT_FALSE(fake_factory->last_stream_request()); 15146 ASSERT_FALSE(fake_factory->last_stream_request());
15146 15147
15147 HttpRequestInfo request;
15148 TestCompletionCallback callback; 15148 TestCompletionCallback callback;
15149 EXPECT_EQ(ERR_IO_PENDING, 15149 EXPECT_EQ(ERR_IO_PENDING,
15150 trans.Start(&request, callback.callback(), NetLogWithSource())); 15150 trans.Start(&request, callback.callback(), NetLogWithSource()));
15151 15151
15152 base::WeakPtr<FakeStreamRequest> fake_request = 15152 base::WeakPtr<FakeStreamRequest> fake_request =
15153 fake_factory->last_stream_request(); 15153 fake_factory->last_stream_request();
15154 ASSERT_TRUE(fake_request); 15154 ASSERT_TRUE(fake_request);
15155 EXPECT_EQ(LOW, fake_request->priority()); 15155 EXPECT_EQ(LOW, fake_request->priority());
15156 } 15156 }
15157 15157
15158 // Make sure that HttpNetworkTransaction passes on its priority 15158 // Make sure that HttpNetworkTransaction passes on its priority
15159 // updates to its stream request. 15159 // updates to its stream request.
15160 TEST_F(HttpNetworkTransactionTest, SetStreamRequestPriority) { 15160 TEST_F(HttpNetworkTransactionTest, SetStreamRequestPriority) {
15161 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 15161 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
15162 HttpNetworkSessionPeer peer(session.get()); 15162 HttpNetworkSessionPeer peer(session.get());
15163 FakeStreamFactory* fake_factory = new FakeStreamFactory(); 15163 FakeStreamFactory* fake_factory = new FakeStreamFactory();
15164 peer.SetHttpStreamFactory(std::unique_ptr<HttpStreamFactory>(fake_factory)); 15164 peer.SetHttpStreamFactory(std::unique_ptr<HttpStreamFactory>(fake_factory));
15165 15165
15166 HttpRequestInfo request;
15166 HttpNetworkTransaction trans(LOW, session.get()); 15167 HttpNetworkTransaction trans(LOW, session.get());
15167 15168
15168 HttpRequestInfo request;
15169 TestCompletionCallback callback; 15169 TestCompletionCallback callback;
15170 EXPECT_EQ(ERR_IO_PENDING, 15170 EXPECT_EQ(ERR_IO_PENDING,
15171 trans.Start(&request, callback.callback(), NetLogWithSource())); 15171 trans.Start(&request, callback.callback(), NetLogWithSource()));
15172 15172
15173 base::WeakPtr<FakeStreamRequest> fake_request = 15173 base::WeakPtr<FakeStreamRequest> fake_request =
15174 fake_factory->last_stream_request(); 15174 fake_factory->last_stream_request();
15175 ASSERT_TRUE(fake_request); 15175 ASSERT_TRUE(fake_request);
15176 EXPECT_EQ(LOW, fake_request->priority()); 15176 EXPECT_EQ(LOW, fake_request->priority());
15177 15177
15178 trans.SetPriority(LOWEST); 15178 trans.SetPriority(LOWEST);
15179 ASSERT_TRUE(fake_request); 15179 ASSERT_TRUE(fake_request);
15180 EXPECT_EQ(LOWEST, fake_request->priority()); 15180 EXPECT_EQ(LOWEST, fake_request->priority());
15181 } 15181 }
15182 15182
15183 // Make sure that HttpNetworkTransaction passes on its priority 15183 // Make sure that HttpNetworkTransaction passes on its priority
15184 // updates to its stream. 15184 // updates to its stream.
15185 TEST_F(HttpNetworkTransactionTest, SetStreamPriority) { 15185 TEST_F(HttpNetworkTransactionTest, SetStreamPriority) {
15186 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 15186 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
15187 HttpNetworkSessionPeer peer(session.get()); 15187 HttpNetworkSessionPeer peer(session.get());
15188 FakeStreamFactory* fake_factory = new FakeStreamFactory(); 15188 FakeStreamFactory* fake_factory = new FakeStreamFactory();
15189 peer.SetHttpStreamFactory(std::unique_ptr<HttpStreamFactory>(fake_factory)); 15189 peer.SetHttpStreamFactory(std::unique_ptr<HttpStreamFactory>(fake_factory));
15190 15190
15191 HttpRequestInfo request;
15191 HttpNetworkTransaction trans(LOW, session.get()); 15192 HttpNetworkTransaction trans(LOW, session.get());
15192 15193
15193 HttpRequestInfo request;
15194 TestCompletionCallback callback; 15194 TestCompletionCallback callback;
15195 EXPECT_EQ(ERR_IO_PENDING, 15195 EXPECT_EQ(ERR_IO_PENDING,
15196 trans.Start(&request, callback.callback(), NetLogWithSource())); 15196 trans.Start(&request, callback.callback(), NetLogWithSource()));
15197 15197
15198 base::WeakPtr<FakeStreamRequest> fake_request = 15198 base::WeakPtr<FakeStreamRequest> fake_request =
15199 fake_factory->last_stream_request(); 15199 fake_factory->last_stream_request();
15200 ASSERT_TRUE(fake_request); 15200 ASSERT_TRUE(fake_request);
15201 base::WeakPtr<FakeStream> fake_stream = fake_request->FinishStreamRequest(); 15201 base::WeakPtr<FakeStream> fake_stream = fake_request->FinishStreamRequest();
15202 ASSERT_TRUE(fake_stream); 15202 ASSERT_TRUE(fake_stream);
15203 EXPECT_EQ(LOW, fake_stream->priority()); 15203 EXPECT_EQ(LOW, fake_stream->priority());
15204 15204
15205 trans.SetPriority(LOWEST); 15205 trans.SetPriority(LOWEST);
15206 EXPECT_EQ(LOWEST, fake_stream->priority()); 15206 EXPECT_EQ(LOWEST, fake_stream->priority());
15207 } 15207 }
15208 15208
15209 TEST_F(HttpNetworkTransactionTest, CreateWebSocketHandshakeStream) { 15209 TEST_F(HttpNetworkTransactionTest, CreateWebSocketHandshakeStream) {
15210 // The same logic needs to be tested for both ws: and wss: schemes, but this 15210 // The same logic needs to be tested for both ws: and wss: schemes, but this
15211 // test is already parameterised on NextProto, so it uses a loop to verify 15211 // test is already parameterised on NextProto, so it uses a loop to verify
15212 // that the different schemes work. 15212 // that the different schemes work.
15213 std::string test_cases[] = {"ws://www.example.org/", 15213 std::string test_cases[] = {"ws://www.example.org/",
15214 "wss://www.example.org/"}; 15214 "wss://www.example.org/"};
15215 for (size_t i = 0; i < arraysize(test_cases); ++i) { 15215 for (size_t i = 0; i < arraysize(test_cases); ++i) {
15216 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 15216 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
15217 HttpNetworkSessionPeer peer(session.get()); 15217 HttpNetworkSessionPeer peer(session.get());
15218 FakeStreamFactory* fake_factory = new FakeStreamFactory(); 15218 FakeStreamFactory* fake_factory = new FakeStreamFactory();
15219 FakeWebSocketStreamCreateHelper websocket_stream_create_helper; 15219 FakeWebSocketStreamCreateHelper websocket_stream_create_helper;
15220 peer.SetHttpStreamFactoryForWebSocket( 15220 peer.SetHttpStreamFactoryForWebSocket(
15221 std::unique_ptr<HttpStreamFactory>(fake_factory)); 15221 std::unique_ptr<HttpStreamFactory>(fake_factory));
15222 15222
15223 HttpRequestInfo request;
15223 HttpNetworkTransaction trans(LOW, session.get()); 15224 HttpNetworkTransaction trans(LOW, session.get());
15224 trans.SetWebSocketHandshakeStreamCreateHelper( 15225 trans.SetWebSocketHandshakeStreamCreateHelper(
15225 &websocket_stream_create_helper); 15226 &websocket_stream_create_helper);
15226 15227
15227 HttpRequestInfo request;
15228 TestCompletionCallback callback; 15228 TestCompletionCallback callback;
15229 request.method = "GET"; 15229 request.method = "GET";
15230 request.url = GURL(test_cases[i]); 15230 request.url = GURL(test_cases[i]);
15231 15231
15232 EXPECT_EQ(ERR_IO_PENDING, 15232 EXPECT_EQ(ERR_IO_PENDING,
15233 trans.Start(&request, callback.callback(), NetLogWithSource())); 15233 trans.Start(&request, callback.callback(), NetLogWithSource()));
15234 15234
15235 base::WeakPtr<FakeStreamRequest> fake_request = 15235 base::WeakPtr<FakeStreamRequest> fake_request =
15236 fake_factory->last_stream_request(); 15236 fake_factory->last_stream_request();
15237 ASSERT_TRUE(fake_request); 15237 ASSERT_TRUE(fake_request);
(...skipping 1263 matching lines...) Expand 10 before | Expand all | Expand 10 after
16501 base::RunLoop().RunUntilIdle(); 16501 base::RunLoop().RunUntilIdle();
16502 16502
16503 EXPECT_TRUE(trans.GetResponseInfo()->was_fetched_via_spdy); 16503 EXPECT_TRUE(trans.GetResponseInfo()->was_fetched_via_spdy);
16504 HttpRequestHeaders headers; 16504 HttpRequestHeaders headers;
16505 ASSERT_TRUE(trans.GetFullRequestHeaders(&headers)); 16505 ASSERT_TRUE(trans.GetFullRequestHeaders(&headers));
16506 EXPECT_TRUE(headers.HasHeader(HttpRequestHeaders::kTokenBinding)); 16506 EXPECT_TRUE(headers.HasHeader(HttpRequestHeaders::kTokenBinding));
16507 } 16507 }
16508 #endif // !defined(OS_IOS) 16508 #endif // !defined(OS_IOS)
16509 16509
16510 } // namespace net 16510 } // namespace net
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698