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

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

Issue 1850043002: Check whether to enable token binding in preconnect.cc (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: HttpNetworkSession::GetSSLConfig populates both server and proxy configs Created 4 years, 8 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/http/http_network_transaction.cc ('k') | net/http/http_stream_factory.h » ('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 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 1477 matching lines...) Expand 10 before | Expand all | Expand 10 after
1488 data2_reads.push_back( 1488 data2_reads.push_back(
1489 MockRead(ASYNC, kHttpResponse, strlen(kHttpResponse), 1)); 1489 MockRead(ASYNC, kHttpResponse, strlen(kHttpResponse), 1));
1490 data2_reads.push_back(MockRead(ASYNC, kHttpData, strlen(kHttpData), 2)); 1490 data2_reads.push_back(MockRead(ASYNC, kHttpData, strlen(kHttpData), 2));
1491 data2_reads.push_back(MockRead(ASYNC, OK, 3)); 1491 data2_reads.push_back(MockRead(ASYNC, OK, 3));
1492 } 1492 }
1493 SequencedSocketData data2(&data2_reads[0], data2_reads.size(), 1493 SequencedSocketData data2(&data2_reads[0], data2_reads.size(),
1494 &data2_writes[0], data2_writes.size()); 1494 &data2_writes[0], data2_writes.size());
1495 session_deps_.socket_factory->AddSocketDataProvider(&data2); 1495 session_deps_.socket_factory->AddSocketDataProvider(&data2);
1496 1496
1497 // Preconnect a socket. 1497 // Preconnect a socket.
1498 SSLConfig ssl_config; 1498 session->http_stream_factory()->PreconnectStreams(1, request);
1499 session->ssl_config_service()->GetSSLConfig(&ssl_config);
1500 session->GetAlpnProtos(&ssl_config.alpn_protos);
1501 session->GetNpnProtos(&ssl_config.npn_protos);
1502 session->http_stream_factory()->PreconnectStreams(1, request, ssl_config,
1503 ssl_config);
1504 // Wait for the preconnect to complete. 1499 // Wait for the preconnect to complete.
1505 // TODO(davidben): Some way to wait for an idle socket count might be handy. 1500 // TODO(davidben): Some way to wait for an idle socket count might be handy.
1506 base::RunLoop().RunUntilIdle(); 1501 base::RunLoop().RunUntilIdle();
1507 EXPECT_EQ(1, GetIdleSocketCountInSSLSocketPool(session.get())); 1502 EXPECT_EQ(1, GetIdleSocketCountInSSLSocketPool(session.get()));
1508 1503
1509 // Make the request. 1504 // Make the request.
1510 TestCompletionCallback callback; 1505 TestCompletionCallback callback;
1511 1506
1512 std::unique_ptr<HttpTransaction> trans( 1507 std::unique_ptr<HttpTransaction> trans(
1513 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); 1508 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get()));
(...skipping 13161 matching lines...) Expand 10 before | Expand all | Expand 10 after
14675 HttpStreamRequest::Delegate* delegate, 14670 HttpStreamRequest::Delegate* delegate,
14676 WebSocketHandshakeStreamBase::CreateHelper* create_helper, 14671 WebSocketHandshakeStreamBase::CreateHelper* create_helper,
14677 const BoundNetLog& net_log) override { 14672 const BoundNetLog& net_log) override {
14678 FakeStreamRequest* fake_request = 14673 FakeStreamRequest* fake_request =
14679 new FakeStreamRequest(priority, delegate, create_helper); 14674 new FakeStreamRequest(priority, delegate, create_helper);
14680 last_stream_request_ = fake_request->AsWeakPtr(); 14675 last_stream_request_ = fake_request->AsWeakPtr();
14681 return fake_request; 14676 return fake_request;
14682 } 14677 }
14683 14678
14684 void PreconnectStreams(int num_streams, 14679 void PreconnectStreams(int num_streams,
14685 const HttpRequestInfo& info, 14680 const HttpRequestInfo& info) override {
14686 const SSLConfig& server_ssl_config,
14687 const SSLConfig& proxy_ssl_config) override {
14688 ADD_FAILURE(); 14681 ADD_FAILURE();
14689 } 14682 }
14690 14683
14691 const HostMappingRules* GetHostMappingRules() const override { 14684 const HostMappingRules* GetHostMappingRules() const override {
14692 ADD_FAILURE(); 14685 ADD_FAILURE();
14693 return NULL; 14686 return NULL;
14694 } 14687 }
14695 14688
14696 private: 14689 private:
14697 base::WeakPtr<FakeStreamRequest> last_stream_request_; 14690 base::WeakPtr<FakeStreamRequest> last_stream_request_;
(...skipping 389 matching lines...) Expand 10 before | Expand all | Expand 10 after
15087 }; 15080 };
15088 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), 15081 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads),
15089 http_writes, arraysize(http_writes)); 15082 http_writes, arraysize(http_writes));
15090 session_deps_.socket_factory->AddSocketDataProvider(&http_data); 15083 session_deps_.socket_factory->AddSocketDataProvider(&http_data);
15091 15084
15092 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 15085 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
15093 15086
15094 // Preconnect an SSL socket. A preconnect is needed because connect jobs are 15087 // Preconnect an SSL socket. A preconnect is needed because connect jobs are
15095 // cancelled when a normal transaction is cancelled. 15088 // cancelled when a normal transaction is cancelled.
15096 HttpStreamFactory* http_stream_factory = session->http_stream_factory(); 15089 HttpStreamFactory* http_stream_factory = session->http_stream_factory();
15097 SSLConfig ssl_config; 15090 http_stream_factory->PreconnectStreams(1, ssl_request);
15098 session->ssl_config_service()->GetSSLConfig(&ssl_config);
15099 http_stream_factory->PreconnectStreams(1, ssl_request, ssl_config,
15100 ssl_config);
15101 EXPECT_EQ(0, GetIdleSocketCountInSSLSocketPool(session.get())); 15091 EXPECT_EQ(0, GetIdleSocketCountInSSLSocketPool(session.get()));
15102 15092
15103 // Start the HTTP request. Pool should stall. 15093 // Start the HTTP request. Pool should stall.
15104 TestCompletionCallback http_callback; 15094 TestCompletionCallback http_callback;
15105 std::unique_ptr<HttpTransaction> http_trans( 15095 std::unique_ptr<HttpTransaction> http_trans(
15106 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get())); 15096 new HttpNetworkTransaction(DEFAULT_PRIORITY, session.get()));
15107 ASSERT_EQ(ERR_IO_PENDING, 15097 ASSERT_EQ(ERR_IO_PENDING,
15108 http_trans->Start(&http_request, http_callback.callback(), 15098 http_trans->Start(&http_request, http_callback.callback(),
15109 BoundNetLog())); 15099 BoundNetLog()));
15110 EXPECT_TRUE(IsTransportSocketPoolStalled(session.get())); 15100 EXPECT_TRUE(IsTransportSocketPoolStalled(session.get()));
(...skipping 806 matching lines...) Expand 10 before | Expand all | Expand 10 after
15917 trans->GetTotalSentBytes()); 15907 trans->GetTotalSentBytes());
15918 EXPECT_EQ(CountReadBytes(data_reads, arraysize(data_reads)), 15908 EXPECT_EQ(CountReadBytes(data_reads, arraysize(data_reads)),
15919 trans->GetTotalReceivedBytes()); 15909 trans->GetTotalReceivedBytes());
15920 } 15910 }
15921 15911
15922 TEST_P(HttpNetworkTransactionTest, EnableNPN) { 15912 TEST_P(HttpNetworkTransactionTest, EnableNPN) {
15923 session_deps_.enable_npn = true; 15913 session_deps_.enable_npn = true;
15924 15914
15925 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 15915 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
15926 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); 15916 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get());
15917 HttpRequestInfo request;
15918 TestCompletionCallback callback;
15919 EXPECT_EQ(ERR_IO_PENDING,
15920 trans.Start(&request, callback.callback(), BoundNetLog()));
15927 15921
15928 EXPECT_THAT(trans.server_ssl_config_.alpn_protos, 15922 EXPECT_THAT(trans.server_ssl_config_.alpn_protos,
15929 testing::ElementsAre(kProtoHTTP2, kProtoSPDY31, kProtoHTTP11)); 15923 testing::ElementsAre(kProtoHTTP2, kProtoSPDY31, kProtoHTTP11));
15930 EXPECT_THAT(trans.server_ssl_config_.npn_protos, 15924 EXPECT_THAT(trans.server_ssl_config_.npn_protos,
15931 testing::ElementsAre(kProtoHTTP2, kProtoSPDY31, kProtoHTTP11)); 15925 testing::ElementsAre(kProtoHTTP2, kProtoSPDY31, kProtoHTTP11));
15932 } 15926 }
15933 15927
15934 TEST_P(HttpNetworkTransactionTest, DisableNPN) { 15928 TEST_P(HttpNetworkTransactionTest, DisableNPN) {
15935 session_deps_.enable_npn = false; 15929 session_deps_.enable_npn = false;
15936 15930
15937 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_)); 15931 std::unique_ptr<HttpNetworkSession> session(CreateSession(&session_deps_));
15938 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get()); 15932 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get());
15933 HttpRequestInfo request;
15934 TestCompletionCallback callback;
15935 EXPECT_EQ(ERR_IO_PENDING,
15936 trans.Start(&request, callback.callback(), BoundNetLog()));
15939 15937
15940 EXPECT_THAT(trans.server_ssl_config_.alpn_protos, 15938 EXPECT_THAT(trans.server_ssl_config_.alpn_protos,
15941 testing::ElementsAre(kProtoHTTP2, kProtoSPDY31, kProtoHTTP11)); 15939 testing::ElementsAre(kProtoHTTP2, kProtoSPDY31, kProtoHTTP11));
15942 EXPECT_TRUE(trans.server_ssl_config_.npn_protos.empty()); 15940 EXPECT_TRUE(trans.server_ssl_config_.npn_protos.empty());
15943 } 15941 }
15944 15942
15945 #if !defined(OS_IOS) 15943 #if !defined(OS_IOS)
15946 TEST_P(HttpNetworkTransactionTest, TokenBindingSpdy) { 15944 TEST_P(HttpNetworkTransactionTest, TokenBindingSpdy) {
15947 const std::string https_url = "https://www.example.com"; 15945 const std::string https_url = "https://www.example.com";
15948 HttpRequestInfo request; 15946 HttpRequestInfo request;
(...skipping 25 matching lines...) Expand all
15974 base::MessageLoop::current()->RunUntilIdle(); 15972 base::MessageLoop::current()->RunUntilIdle();
15975 15973
15976 EXPECT_TRUE(trans.GetResponseInfo()->was_fetched_via_spdy); 15974 EXPECT_TRUE(trans.GetResponseInfo()->was_fetched_via_spdy);
15977 HttpRequestHeaders headers; 15975 HttpRequestHeaders headers;
15978 ASSERT_TRUE(trans.GetFullRequestHeaders(&headers)); 15976 ASSERT_TRUE(trans.GetFullRequestHeaders(&headers));
15979 EXPECT_TRUE(headers.HasHeader(HttpRequestHeaders::kTokenBinding)); 15977 EXPECT_TRUE(headers.HasHeader(HttpRequestHeaders::kTokenBinding));
15980 } 15978 }
15981 #endif // !defined(OS_IOS) 15979 #endif // !defined(OS_IOS)
15982 15980
15983 } // namespace net 15981 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_network_transaction.cc ('k') | net/http/http_stream_factory.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698