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

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

Issue 699123002: Remove HttpStreamBase. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 6 years, 1 month 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_stream_factory_impl_request_unittest.cc ('k') | net/net.gypi » ('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/http/http_stream_factory_impl.h" 5 #include "net/http/http_stream_factory_impl.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
51 }; 51 };
52 52
53 explicit MockWebSocketHandshakeStream(StreamType type) : type_(type) {} 53 explicit MockWebSocketHandshakeStream(StreamType type) : type_(type) {}
54 54
55 ~MockWebSocketHandshakeStream() override {} 55 ~MockWebSocketHandshakeStream() override {}
56 56
57 StreamType type() const { 57 StreamType type() const {
58 return type_; 58 return type_;
59 } 59 }
60 60
61 // HttpStreamBase methods 61 // HttpStream methods
62 int InitializeStream(const HttpRequestInfo* request_info, 62 int InitializeStream(const HttpRequestInfo* request_info,
63 RequestPriority priority, 63 RequestPriority priority,
64 const BoundNetLog& net_log, 64 const BoundNetLog& net_log,
65 const CompletionCallback& callback) override { 65 const CompletionCallback& callback) override {
66 return ERR_IO_PENDING; 66 return ERR_IO_PENDING;
67 } 67 }
68 int SendRequest(const HttpRequestHeaders& request_headers, 68 int SendRequest(const HttpRequestHeaders& request_headers,
69 HttpResponseInfo* response, 69 HttpResponseInfo* response,
70 const CompletionCallback& callback) override { 70 const CompletionCallback& callback) override {
71 return ERR_IO_PENDING; 71 return ERR_IO_PENDING;
(...skipping 14 matching lines...) Expand all
86 bool IsConnectionReusable() const override { return false; } 86 bool IsConnectionReusable() const override { return false; }
87 int64 GetTotalReceivedBytes() const override { return 0; } 87 int64 GetTotalReceivedBytes() const override { return 0; }
88 bool GetLoadTimingInfo(LoadTimingInfo* load_timing_info) const override { 88 bool GetLoadTimingInfo(LoadTimingInfo* load_timing_info) const override {
89 return false; 89 return false;
90 } 90 }
91 void GetSSLInfo(SSLInfo* ssl_info) override {} 91 void GetSSLInfo(SSLInfo* ssl_info) override {}
92 void GetSSLCertRequestInfo(SSLCertRequestInfo* cert_request_info) override {} 92 void GetSSLCertRequestInfo(SSLCertRequestInfo* cert_request_info) override {}
93 bool IsSpdyHttpStream() const override { return false; } 93 bool IsSpdyHttpStream() const override { return false; }
94 void Drain(HttpNetworkSession* session) override {} 94 void Drain(HttpNetworkSession* session) override {}
95 void SetPriority(RequestPriority priority) override {} 95 void SetPriority(RequestPriority priority) override {}
96 UploadProgress GetUploadProgress() const override { return UploadProgress(); }
97 HttpStream* RenewStreamForAuth() override { return nullptr; }
96 98
97 scoped_ptr<WebSocketStream> Upgrade() override { 99 scoped_ptr<WebSocketStream> Upgrade() override {
98 return scoped_ptr<WebSocketStream>(); 100 return scoped_ptr<WebSocketStream>();
99 } 101 }
100 102
101 private: 103 private:
102 const StreamType type_; 104 const StreamType type_;
103 }; 105 };
104 106
105 // HttpStreamFactoryImpl subclass that can wait until a preconnect is complete. 107 // HttpStreamFactoryImpl subclass that can wait until a preconnect is complete.
(...skipping 29 matching lines...) Expand all
135 class StreamRequestWaiter : public HttpStreamRequest::Delegate { 137 class StreamRequestWaiter : public HttpStreamRequest::Delegate {
136 public: 138 public:
137 StreamRequestWaiter() 139 StreamRequestWaiter()
138 : waiting_for_stream_(false), 140 : waiting_for_stream_(false),
139 stream_done_(false) {} 141 stream_done_(false) {}
140 142
141 // HttpStreamRequest::Delegate 143 // HttpStreamRequest::Delegate
142 144
143 void OnStreamReady(const SSLConfig& used_ssl_config, 145 void OnStreamReady(const SSLConfig& used_ssl_config,
144 const ProxyInfo& used_proxy_info, 146 const ProxyInfo& used_proxy_info,
145 HttpStreamBase* stream) override { 147 HttpStream* stream) override {
146 stream_done_ = true; 148 stream_done_ = true;
147 if (waiting_for_stream_) 149 if (waiting_for_stream_)
148 base::MessageLoop::current()->Quit(); 150 base::MessageLoop::current()->Quit();
149 stream_.reset(stream); 151 stream_.reset(stream);
150 used_ssl_config_ = used_ssl_config; 152 used_ssl_config_ = used_ssl_config;
151 used_proxy_info_ = used_proxy_info; 153 used_proxy_info_ = used_proxy_info;
152 } 154 }
153 155
154 void OnWebSocketHandshakeStreamReady( 156 void OnWebSocketHandshakeStreamReady(
155 const SSLConfig& used_ssl_config, 157 const SSLConfig& used_ssl_config,
(...skipping 17 matching lines...) Expand all
173 const SSLConfig& used_ssl_config, 175 const SSLConfig& used_ssl_config,
174 const ProxyInfo& used_proxy_info, 176 const ProxyInfo& used_proxy_info,
175 HttpAuthController* auth_controller) override {} 177 HttpAuthController* auth_controller) override {}
176 178
177 void OnNeedsClientAuth(const SSLConfig& used_ssl_config, 179 void OnNeedsClientAuth(const SSLConfig& used_ssl_config,
178 SSLCertRequestInfo* cert_info) override {} 180 SSLCertRequestInfo* cert_info) override {}
179 181
180 void OnHttpsProxyTunnelResponse(const HttpResponseInfo& response_info, 182 void OnHttpsProxyTunnelResponse(const HttpResponseInfo& response_info,
181 const SSLConfig& used_ssl_config, 183 const SSLConfig& used_ssl_config,
182 const ProxyInfo& used_proxy_info, 184 const ProxyInfo& used_proxy_info,
183 HttpStreamBase* stream) override {} 185 HttpStream* stream) override {}
184 186
185 void WaitForStream() { 187 void WaitForStream() {
186 while (!stream_done_) { 188 while (!stream_done_) {
187 waiting_for_stream_ = true; 189 waiting_for_stream_ = true;
188 base::MessageLoop::current()->Run(); 190 base::MessageLoop::current()->Run();
189 waiting_for_stream_ = false; 191 waiting_for_stream_ = false;
190 } 192 }
191 } 193 }
192 194
193 const SSLConfig& used_ssl_config() const { 195 const SSLConfig& used_ssl_config() const {
194 return used_ssl_config_; 196 return used_ssl_config_;
195 } 197 }
196 198
197 const ProxyInfo& used_proxy_info() const { 199 const ProxyInfo& used_proxy_info() const {
198 return used_proxy_info_; 200 return used_proxy_info_;
199 } 201 }
200 202
201 HttpStreamBase* stream() { 203 HttpStream* stream() {
202 return stream_.get(); 204 return stream_.get();
203 } 205 }
204 206
205 MockWebSocketHandshakeStream* websocket_stream() { 207 MockWebSocketHandshakeStream* websocket_stream() {
206 return static_cast<MockWebSocketHandshakeStream*>(websocket_stream_.get()); 208 return static_cast<MockWebSocketHandshakeStream*>(websocket_stream_.get());
207 } 209 }
208 210
209 bool stream_done() const { return stream_done_; } 211 bool stream_done() const { return stream_done_; }
210 212
211 private: 213 private:
212 bool waiting_for_stream_; 214 bool waiting_for_stream_;
213 bool stream_done_; 215 bool stream_done_;
214 scoped_ptr<HttpStreamBase> stream_; 216 scoped_ptr<HttpStream> stream_;
215 scoped_ptr<WebSocketHandshakeStreamBase> websocket_stream_; 217 scoped_ptr<WebSocketHandshakeStreamBase> websocket_stream_;
216 SSLConfig used_ssl_config_; 218 SSLConfig used_ssl_config_;
217 ProxyInfo used_proxy_info_; 219 ProxyInfo used_proxy_info_;
218 220
219 DISALLOW_COPY_AND_ASSIGN(StreamRequestWaiter); 221 DISALLOW_COPY_AND_ASSIGN(StreamRequestWaiter);
220 }; 222 };
221 223
222 class WebSocketSpdyHandshakeStream : public MockWebSocketHandshakeStream { 224 class WebSocketSpdyHandshakeStream : public MockWebSocketHandshakeStream {
223 public: 225 public:
224 explicit WebSocketSpdyHandshakeStream( 226 explicit WebSocketSpdyHandshakeStream(
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
375 typedef CapturePreconnectsSocketPool<HttpProxyClientSocketPool> 377 typedef CapturePreconnectsSocketPool<HttpProxyClientSocketPool>
376 CapturePreconnectsHttpProxySocketPool; 378 CapturePreconnectsHttpProxySocketPool;
377 typedef CapturePreconnectsSocketPool<SOCKSClientSocketPool> 379 typedef CapturePreconnectsSocketPool<SOCKSClientSocketPool>
378 CapturePreconnectsSOCKSSocketPool; 380 CapturePreconnectsSOCKSSocketPool;
379 typedef CapturePreconnectsSocketPool<SSLClientSocketPool> 381 typedef CapturePreconnectsSocketPool<SSLClientSocketPool>
380 CapturePreconnectsSSLSocketPool; 382 CapturePreconnectsSSLSocketPool;
381 383
382 template<typename ParentPool> 384 template<typename ParentPool>
383 CapturePreconnectsSocketPool<ParentPool>::CapturePreconnectsSocketPool( 385 CapturePreconnectsSocketPool<ParentPool>::CapturePreconnectsSocketPool(
384 HostResolver* host_resolver, CertVerifier* /* cert_verifier */) 386 HostResolver* host_resolver, CertVerifier* /* cert_verifier */)
385 : ParentPool(0, 0, NULL, host_resolver, NULL, NULL), 387 : ParentPool(0, 0, nullptr, host_resolver, nullptr, nullptr),
386 last_num_streams_(-1) {} 388 last_num_streams_(-1) {}
387 389
388 template<> 390 template<>
389 CapturePreconnectsHttpProxySocketPool::CapturePreconnectsSocketPool( 391 CapturePreconnectsHttpProxySocketPool::CapturePreconnectsSocketPool(
390 HostResolver* host_resolver, CertVerifier* /* cert_verifier */) 392 HostResolver* host_resolver, CertVerifier* /* cert_verifier */)
391 : HttpProxyClientSocketPool( 393 : HttpProxyClientSocketPool(
392 0, 0, NULL, host_resolver, NULL, NULL, NULL, NULL), 394 0, 0, nullptr, host_resolver, nullptr, nullptr, nullptr, nullptr),
393 last_num_streams_(-1) {} 395 last_num_streams_(-1) {}
394 396
395 template <> 397 template <>
396 CapturePreconnectsSSLSocketPool::CapturePreconnectsSocketPool( 398 CapturePreconnectsSSLSocketPool::CapturePreconnectsSocketPool(
397 HostResolver* host_resolver, 399 HostResolver* host_resolver,
398 CertVerifier* cert_verifier) 400 CertVerifier* cert_verifier)
399 : SSLClientSocketPool(0, 401 : SSLClientSocketPool(0,
400 0, 402 0,
401 NULL, // ssl_histograms 403 nullptr, // ssl_histograms
402 host_resolver, 404 host_resolver,
403 cert_verifier, 405 cert_verifier,
404 NULL, // channel_id_store 406 nullptr, // channel_id_store
405 NULL, // transport_security_state 407 nullptr, // transport_security_state
406 NULL, // cert_transparency_verifier 408 nullptr, // cert_transparency_verifier
407 std::string(), // ssl_session_cache_shard 409 std::string(), // ssl_session_cache_shard
408 NULL, // deterministic_socket_factory 410 nullptr, // deterministic_socket_factory
409 NULL, // transport_socket_pool 411 nullptr, // transport_socket_pool
410 NULL, 412 nullptr,
411 NULL, 413 nullptr,
412 NULL, // ssl_config_service 414 nullptr, // ssl_config_service
413 false, // enable_ssl_connect_job_waiting 415 false, // enable_ssl_connect_job_waiting
414 NULL), // net_log 416 nullptr), // net_log
415 last_num_streams_(-1) { 417 last_num_streams_(-1) {
416 } 418 }
417 419
418 class HttpStreamFactoryTest : public ::testing::Test, 420 class HttpStreamFactoryTest : public ::testing::Test,
419 public ::testing::WithParamInterface<NextProto> { 421 public ::testing::WithParamInterface<NextProto> {
420 }; 422 };
421 423
422 INSTANTIATE_TEST_CASE_P( 424 INSTANTIATE_TEST_CASE_P(
423 NextProto, 425 NextProto,
424 HttpStreamFactoryTest, 426 HttpStreamFactoryTest,
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
652 654
653 SSLConfig used_ssl_config = waiter.used_ssl_config(); 655 SSLConfig used_ssl_config = waiter.used_ssl_config();
654 EXPECT_EQ(used_ssl_config.channel_id_enabled, ssl_config.channel_id_enabled); 656 EXPECT_EQ(used_ssl_config.channel_id_enabled, ssl_config.channel_id_enabled);
655 } 657 }
656 658
657 namespace { 659 namespace {
658 // Return count of distinct groups in given socket pool. 660 // Return count of distinct groups in given socket pool.
659 int GetSocketPoolGroupCount(ClientSocketPool* pool) { 661 int GetSocketPoolGroupCount(ClientSocketPool* pool) {
660 int count = 0; 662 int count = 0;
661 scoped_ptr<base::DictionaryValue> dict(pool->GetInfoAsValue("", "", false)); 663 scoped_ptr<base::DictionaryValue> dict(pool->GetInfoAsValue("", "", false));
662 EXPECT_TRUE(dict != NULL); 664 EXPECT_TRUE(dict != nullptr);
663 base::DictionaryValue* groups = NULL; 665 base::DictionaryValue* groups = nullptr;
664 if (dict->GetDictionary("groups", &groups) && (groups != NULL)) { 666 if (dict->GetDictionary("groups", &groups) && (groups != nullptr)) {
665 count = static_cast<int>(groups->size()); 667 count = static_cast<int>(groups->size());
666 } 668 }
667 return count; 669 return count;
668 } 670 }
669 } // namespace 671 } // namespace
670 672
671 TEST_P(HttpStreamFactoryTest, PrivacyModeUsesDifferentSocketPoolGroup) { 673 TEST_P(HttpStreamFactoryTest, PrivacyModeUsesDifferentSocketPoolGroup) {
672 SpdySessionDependencies session_deps( 674 SpdySessionDependencies session_deps(
673 GetParam(), ProxyService::CreateDirect()); 675 GetParam(), ProxyService::CreateDirect());
674 676
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
771 scoped_ptr<HttpStreamRequest> request( 773 scoped_ptr<HttpStreamRequest> request(
772 session->http_stream_factory()->RequestStream( 774 session->http_stream_factory()->RequestStream(
773 request_info, 775 request_info,
774 DEFAULT_PRIORITY, 776 DEFAULT_PRIORITY,
775 ssl_config, 777 ssl_config,
776 ssl_config, 778 ssl_config,
777 &waiter, 779 &waiter,
778 BoundNetLog())); 780 BoundNetLog()));
779 waiter.WaitForStream(); 781 waiter.WaitForStream();
780 EXPECT_TRUE(waiter.stream_done()); 782 EXPECT_TRUE(waiter.stream_done());
781 ASSERT_TRUE(NULL != waiter.stream()); 783 ASSERT_TRUE(nullptr != waiter.stream());
782 EXPECT_TRUE(NULL == waiter.websocket_stream()); 784 EXPECT_TRUE(nullptr == waiter.websocket_stream());
783 EXPECT_FALSE(waiter.stream()->IsSpdyHttpStream()); 785 EXPECT_FALSE(waiter.stream()->IsSpdyHttpStream());
784 786
785 EXPECT_EQ(1, GetSocketPoolGroupCount( 787 EXPECT_EQ(1, GetSocketPoolGroupCount(
786 session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL))); 788 session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL)));
787 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSSLSocketPool( 789 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSSLSocketPool(
788 HttpNetworkSession::NORMAL_SOCKET_POOL))); 790 HttpNetworkSession::NORMAL_SOCKET_POOL)));
789 EXPECT_EQ(0, GetSocketPoolGroupCount( 791 EXPECT_EQ(0, GetSocketPoolGroupCount(
790 session->GetTransportSocketPool( 792 session->GetTransportSocketPool(
791 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); 793 HttpNetworkSession::WEBSOCKET_SOCKET_POOL)));
792 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSSLSocketPool( 794 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSSLSocketPool(
793 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); 795 HttpNetworkSession::WEBSOCKET_SOCKET_POOL)));
794 EXPECT_TRUE(waiter.used_proxy_info().is_direct()); 796 EXPECT_TRUE(waiter.used_proxy_info().is_direct());
795 } 797 }
796 798
797 TEST_P(HttpStreamFactoryTest, RequestHttpStreamOverSSL) { 799 TEST_P(HttpStreamFactoryTest, RequestHttpStreamOverSSL) {
798 SpdySessionDependencies session_deps( 800 SpdySessionDependencies session_deps(
799 GetParam(), ProxyService::CreateDirect()); 801 GetParam(), ProxyService::CreateDirect());
800 802
801 MockRead mock_read(ASYNC, OK); 803 MockRead mock_read(ASYNC, OK);
802 StaticSocketDataProvider socket_data(&mock_read, 1, NULL, 0); 804 StaticSocketDataProvider socket_data(&mock_read, 1, nullptr, 0);
803 socket_data.set_connect_data(MockConnect(ASYNC, OK)); 805 socket_data.set_connect_data(MockConnect(ASYNC, OK));
804 session_deps.socket_factory->AddSocketDataProvider(&socket_data); 806 session_deps.socket_factory->AddSocketDataProvider(&socket_data);
805 807
806 SSLSocketDataProvider ssl_socket_data(ASYNC, OK); 808 SSLSocketDataProvider ssl_socket_data(ASYNC, OK);
807 session_deps.socket_factory->AddSSLSocketDataProvider(&ssl_socket_data); 809 session_deps.socket_factory->AddSSLSocketDataProvider(&ssl_socket_data);
808 810
809 scoped_refptr<HttpNetworkSession> session( 811 scoped_refptr<HttpNetworkSession> session(
810 SpdySessionDependencies::SpdyCreateSession(&session_deps)); 812 SpdySessionDependencies::SpdyCreateSession(&session_deps));
811 813
812 // Now request a stream. 814 // Now request a stream.
813 HttpRequestInfo request_info; 815 HttpRequestInfo request_info;
814 request_info.method = "GET"; 816 request_info.method = "GET";
815 request_info.url = GURL("https://www.google.com"); 817 request_info.url = GURL("https://www.google.com");
816 request_info.load_flags = 0; 818 request_info.load_flags = 0;
817 819
818 SSLConfig ssl_config; 820 SSLConfig ssl_config;
819 StreamRequestWaiter waiter; 821 StreamRequestWaiter waiter;
820 scoped_ptr<HttpStreamRequest> request( 822 scoped_ptr<HttpStreamRequest> request(
821 session->http_stream_factory()->RequestStream( 823 session->http_stream_factory()->RequestStream(
822 request_info, 824 request_info,
823 DEFAULT_PRIORITY, 825 DEFAULT_PRIORITY,
824 ssl_config, 826 ssl_config,
825 ssl_config, 827 ssl_config,
826 &waiter, 828 &waiter,
827 BoundNetLog())); 829 BoundNetLog()));
828 waiter.WaitForStream(); 830 waiter.WaitForStream();
829 EXPECT_TRUE(waiter.stream_done()); 831 EXPECT_TRUE(waiter.stream_done());
830 ASSERT_TRUE(NULL != waiter.stream()); 832 ASSERT_TRUE(nullptr != waiter.stream());
831 EXPECT_TRUE(NULL == waiter.websocket_stream()); 833 EXPECT_TRUE(nullptr == waiter.websocket_stream());
832 EXPECT_FALSE(waiter.stream()->IsSpdyHttpStream()); 834 EXPECT_FALSE(waiter.stream()->IsSpdyHttpStream());
833 EXPECT_EQ(1, GetSocketPoolGroupCount( 835 EXPECT_EQ(1, GetSocketPoolGroupCount(
834 session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL))); 836 session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL)));
835 EXPECT_EQ(1, GetSocketPoolGroupCount( 837 EXPECT_EQ(1, GetSocketPoolGroupCount(
836 session->GetSSLSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL))); 838 session->GetSSLSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL)));
837 EXPECT_EQ(0, GetSocketPoolGroupCount( 839 EXPECT_EQ(0, GetSocketPoolGroupCount(
838 session->GetTransportSocketPool( 840 session->GetTransportSocketPool(
839 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); 841 HttpNetworkSession::WEBSOCKET_SOCKET_POOL)));
840 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSSLSocketPool( 842 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSSLSocketPool(
841 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); 843 HttpNetworkSession::WEBSOCKET_SOCKET_POOL)));
(...skipping 23 matching lines...) Expand all
865 scoped_ptr<HttpStreamRequest> request( 867 scoped_ptr<HttpStreamRequest> request(
866 session->http_stream_factory()->RequestStream( 868 session->http_stream_factory()->RequestStream(
867 request_info, 869 request_info,
868 DEFAULT_PRIORITY, 870 DEFAULT_PRIORITY,
869 ssl_config, 871 ssl_config,
870 ssl_config, 872 ssl_config,
871 &waiter, 873 &waiter,
872 BoundNetLog())); 874 BoundNetLog()));
873 waiter.WaitForStream(); 875 waiter.WaitForStream();
874 EXPECT_TRUE(waiter.stream_done()); 876 EXPECT_TRUE(waiter.stream_done());
875 ASSERT_TRUE(NULL != waiter.stream()); 877 ASSERT_TRUE(nullptr != waiter.stream());
876 EXPECT_TRUE(NULL == waiter.websocket_stream()); 878 EXPECT_TRUE(nullptr == waiter.websocket_stream());
877 EXPECT_FALSE(waiter.stream()->IsSpdyHttpStream()); 879 EXPECT_FALSE(waiter.stream()->IsSpdyHttpStream());
878 EXPECT_EQ(0, GetSocketPoolGroupCount( 880 EXPECT_EQ(0, GetSocketPoolGroupCount(
879 session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL))); 881 session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL)));
880 EXPECT_EQ(0, GetSocketPoolGroupCount( 882 EXPECT_EQ(0, GetSocketPoolGroupCount(
881 session->GetSSLSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL))); 883 session->GetSSLSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL)));
882 EXPECT_EQ(1, GetSocketPoolGroupCount(session->GetSocketPoolForHTTPProxy( 884 EXPECT_EQ(1, GetSocketPoolGroupCount(session->GetSocketPoolForHTTPProxy(
883 HttpNetworkSession::NORMAL_SOCKET_POOL, 885 HttpNetworkSession::NORMAL_SOCKET_POOL,
884 HostPortPair("myproxy", 8888)))); 886 HostPortPair("myproxy", 8888))));
885 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSocketPoolForSSLWithProxy( 887 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSocketPoolForSSLWithProxy(
886 HttpNetworkSession::NORMAL_SOCKET_POOL, 888 HttpNetworkSession::NORMAL_SOCKET_POOL,
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
918 session->http_stream_factory_for_websocket() 920 session->http_stream_factory_for_websocket()
919 ->RequestWebSocketHandshakeStream(request_info, 921 ->RequestWebSocketHandshakeStream(request_info,
920 DEFAULT_PRIORITY, 922 DEFAULT_PRIORITY,
921 ssl_config, 923 ssl_config,
922 ssl_config, 924 ssl_config,
923 &waiter, 925 &waiter,
924 &create_helper, 926 &create_helper,
925 BoundNetLog())); 927 BoundNetLog()));
926 waiter.WaitForStream(); 928 waiter.WaitForStream();
927 EXPECT_TRUE(waiter.stream_done()); 929 EXPECT_TRUE(waiter.stream_done());
928 EXPECT_TRUE(NULL == waiter.stream()); 930 EXPECT_TRUE(nullptr == waiter.stream());
929 ASSERT_TRUE(NULL != waiter.websocket_stream()); 931 ASSERT_TRUE(nullptr != waiter.websocket_stream());
930 EXPECT_EQ(MockWebSocketHandshakeStream::kStreamTypeBasic, 932 EXPECT_EQ(MockWebSocketHandshakeStream::kStreamTypeBasic,
931 waiter.websocket_stream()->type()); 933 waiter.websocket_stream()->type());
932 EXPECT_EQ(0, GetSocketPoolGroupCount( 934 EXPECT_EQ(0, GetSocketPoolGroupCount(
933 session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL))); 935 session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL)));
934 EXPECT_EQ(0, GetSocketPoolGroupCount( 936 EXPECT_EQ(0, GetSocketPoolGroupCount(
935 session->GetSSLSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL))); 937 session->GetSSLSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL)));
936 EXPECT_EQ(0, GetSocketPoolGroupCount( 938 EXPECT_EQ(0, GetSocketPoolGroupCount(
937 session->GetSSLSocketPool(HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); 939 session->GetSSLSocketPool(HttpNetworkSession::WEBSOCKET_SOCKET_POOL)));
938 EXPECT_TRUE(waiter.used_proxy_info().is_direct()); 940 EXPECT_TRUE(waiter.used_proxy_info().is_direct());
939 } 941 }
940 942
941 TEST_P(HttpStreamFactoryTest, RequestWebSocketBasicHandshakeStreamOverSSL) { 943 TEST_P(HttpStreamFactoryTest, RequestWebSocketBasicHandshakeStreamOverSSL) {
942 SpdySessionDependencies session_deps( 944 SpdySessionDependencies session_deps(
943 GetParam(), ProxyService::CreateDirect()); 945 GetParam(), ProxyService::CreateDirect());
944 946
945 MockRead mock_read(ASYNC, OK); 947 MockRead mock_read(ASYNC, OK);
946 StaticSocketDataProvider socket_data(&mock_read, 1, NULL, 0); 948 StaticSocketDataProvider socket_data(&mock_read, 1, nullptr, 0);
947 socket_data.set_connect_data(MockConnect(ASYNC, OK)); 949 socket_data.set_connect_data(MockConnect(ASYNC, OK));
948 session_deps.socket_factory->AddSocketDataProvider(&socket_data); 950 session_deps.socket_factory->AddSocketDataProvider(&socket_data);
949 951
950 SSLSocketDataProvider ssl_socket_data(ASYNC, OK); 952 SSLSocketDataProvider ssl_socket_data(ASYNC, OK);
951 session_deps.socket_factory->AddSSLSocketDataProvider(&ssl_socket_data); 953 session_deps.socket_factory->AddSSLSocketDataProvider(&ssl_socket_data);
952 954
953 scoped_refptr<HttpNetworkSession> session( 955 scoped_refptr<HttpNetworkSession> session(
954 SpdySessionDependencies::SpdyCreateSession(&session_deps)); 956 SpdySessionDependencies::SpdyCreateSession(&session_deps));
955 957
956 // Now request a stream. 958 // Now request a stream.
957 HttpRequestInfo request_info; 959 HttpRequestInfo request_info;
958 request_info.method = "GET"; 960 request_info.method = "GET";
959 request_info.url = GURL("wss://www.google.com"); 961 request_info.url = GURL("wss://www.google.com");
960 request_info.load_flags = 0; 962 request_info.load_flags = 0;
961 963
962 SSLConfig ssl_config; 964 SSLConfig ssl_config;
963 StreamRequestWaiter waiter; 965 StreamRequestWaiter waiter;
964 WebSocketStreamCreateHelper create_helper; 966 WebSocketStreamCreateHelper create_helper;
965 scoped_ptr<HttpStreamRequest> request( 967 scoped_ptr<HttpStreamRequest> request(
966 session->http_stream_factory_for_websocket() 968 session->http_stream_factory_for_websocket()
967 ->RequestWebSocketHandshakeStream(request_info, 969 ->RequestWebSocketHandshakeStream(request_info,
968 DEFAULT_PRIORITY, 970 DEFAULT_PRIORITY,
969 ssl_config, 971 ssl_config,
970 ssl_config, 972 ssl_config,
971 &waiter, 973 &waiter,
972 &create_helper, 974 &create_helper,
973 BoundNetLog())); 975 BoundNetLog()));
974 waiter.WaitForStream(); 976 waiter.WaitForStream();
975 EXPECT_TRUE(waiter.stream_done()); 977 EXPECT_TRUE(waiter.stream_done());
976 EXPECT_TRUE(NULL == waiter.stream()); 978 EXPECT_TRUE(nullptr == waiter.stream());
977 ASSERT_TRUE(NULL != waiter.websocket_stream()); 979 ASSERT_TRUE(nullptr != waiter.websocket_stream());
978 EXPECT_EQ(MockWebSocketHandshakeStream::kStreamTypeBasic, 980 EXPECT_EQ(MockWebSocketHandshakeStream::kStreamTypeBasic,
979 waiter.websocket_stream()->type()); 981 waiter.websocket_stream()->type());
980 EXPECT_EQ(0, GetSocketPoolGroupCount( 982 EXPECT_EQ(0, GetSocketPoolGroupCount(
981 session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL))); 983 session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL)));
982 EXPECT_EQ(0, GetSocketPoolGroupCount( 984 EXPECT_EQ(0, GetSocketPoolGroupCount(
983 session->GetSSLSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL))); 985 session->GetSSLSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL)));
984 EXPECT_EQ(1, GetSocketPoolGroupCount( 986 EXPECT_EQ(1, GetSocketPoolGroupCount(
985 session->GetSSLSocketPool(HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); 987 session->GetSSLSocketPool(HttpNetworkSession::WEBSOCKET_SOCKET_POOL)));
986 EXPECT_TRUE(waiter.used_proxy_info().is_direct()); 988 EXPECT_TRUE(waiter.used_proxy_info().is_direct());
987 } 989 }
(...skipping 23 matching lines...) Expand all
1011 session->http_stream_factory_for_websocket() 1013 session->http_stream_factory_for_websocket()
1012 ->RequestWebSocketHandshakeStream(request_info, 1014 ->RequestWebSocketHandshakeStream(request_info,
1013 DEFAULT_PRIORITY, 1015 DEFAULT_PRIORITY,
1014 ssl_config, 1016 ssl_config,
1015 ssl_config, 1017 ssl_config,
1016 &waiter, 1018 &waiter,
1017 &create_helper, 1019 &create_helper,
1018 BoundNetLog())); 1020 BoundNetLog()));
1019 waiter.WaitForStream(); 1021 waiter.WaitForStream();
1020 EXPECT_TRUE(waiter.stream_done()); 1022 EXPECT_TRUE(waiter.stream_done());
1021 EXPECT_TRUE(NULL == waiter.stream()); 1023 EXPECT_TRUE(nullptr == waiter.stream());
1022 ASSERT_TRUE(NULL != waiter.websocket_stream()); 1024 ASSERT_TRUE(nullptr != waiter.websocket_stream());
1023 EXPECT_EQ(MockWebSocketHandshakeStream::kStreamTypeBasic, 1025 EXPECT_EQ(MockWebSocketHandshakeStream::kStreamTypeBasic,
1024 waiter.websocket_stream()->type()); 1026 waiter.websocket_stream()->type());
1025 EXPECT_EQ(0, GetSocketPoolGroupCount( 1027 EXPECT_EQ(0, GetSocketPoolGroupCount(
1026 session->GetTransportSocketPool( 1028 session->GetTransportSocketPool(
1027 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); 1029 HttpNetworkSession::WEBSOCKET_SOCKET_POOL)));
1028 EXPECT_EQ(0, GetSocketPoolGroupCount( 1030 EXPECT_EQ(0, GetSocketPoolGroupCount(
1029 session->GetSSLSocketPool(HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); 1031 session->GetSSLSocketPool(HttpNetworkSession::WEBSOCKET_SOCKET_POOL)));
1030 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSocketPoolForHTTPProxy( 1032 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSocketPoolForHTTPProxy(
1031 HttpNetworkSession::NORMAL_SOCKET_POOL, 1033 HttpNetworkSession::NORMAL_SOCKET_POOL,
1032 HostPortPair("myproxy", 8888)))); 1034 HostPortPair("myproxy", 8888))));
1033 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSocketPoolForSSLWithProxy( 1035 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSocketPoolForSSLWithProxy(
1034 HttpNetworkSession::NORMAL_SOCKET_POOL, 1036 HttpNetworkSession::NORMAL_SOCKET_POOL,
1035 HostPortPair("myproxy", 8888)))); 1037 HostPortPair("myproxy", 8888))));
1036 EXPECT_EQ(1, GetSocketPoolGroupCount(session->GetSocketPoolForHTTPProxy( 1038 EXPECT_EQ(1, GetSocketPoolGroupCount(session->GetSocketPoolForHTTPProxy(
1037 HttpNetworkSession::WEBSOCKET_SOCKET_POOL, 1039 HttpNetworkSession::WEBSOCKET_SOCKET_POOL,
1038 HostPortPair("myproxy", 8888)))); 1040 HostPortPair("myproxy", 8888))));
1039 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSocketPoolForSSLWithProxy( 1041 EXPECT_EQ(0, GetSocketPoolGroupCount(session->GetSocketPoolForSSLWithProxy(
1040 HttpNetworkSession::WEBSOCKET_SOCKET_POOL, 1042 HttpNetworkSession::WEBSOCKET_SOCKET_POOL,
1041 HostPortPair("myproxy", 8888)))); 1043 HostPortPair("myproxy", 8888))));
1042 EXPECT_FALSE(waiter.used_proxy_info().is_direct()); 1044 EXPECT_FALSE(waiter.used_proxy_info().is_direct());
1043 } 1045 }
1044 1046
1045 TEST_P(HttpStreamFactoryTest, RequestSpdyHttpStream) { 1047 TEST_P(HttpStreamFactoryTest, RequestSpdyHttpStream) {
1046 SpdySessionDependencies session_deps(GetParam(), 1048 SpdySessionDependencies session_deps(GetParam(),
1047 ProxyService::CreateDirect()); 1049 ProxyService::CreateDirect());
1048 1050
1049 MockRead mock_read(ASYNC, OK); 1051 MockRead mock_read(ASYNC, OK);
1050 DeterministicSocketData socket_data(&mock_read, 1, NULL, 0); 1052 DeterministicSocketData socket_data(&mock_read, 1, nullptr, 0);
1051 socket_data.set_connect_data(MockConnect(ASYNC, OK)); 1053 socket_data.set_connect_data(MockConnect(ASYNC, OK));
1052 session_deps.deterministic_socket_factory->AddSocketDataProvider( 1054 session_deps.deterministic_socket_factory->AddSocketDataProvider(
1053 &socket_data); 1055 &socket_data);
1054 1056
1055 SSLSocketDataProvider ssl_socket_data(ASYNC, OK); 1057 SSLSocketDataProvider ssl_socket_data(ASYNC, OK);
1056 ssl_socket_data.SetNextProto(GetParam()); 1058 ssl_socket_data.SetNextProto(GetParam());
1057 session_deps.deterministic_socket_factory->AddSSLSocketDataProvider( 1059 session_deps.deterministic_socket_factory->AddSSLSocketDataProvider(
1058 &ssl_socket_data); 1060 &ssl_socket_data);
1059 1061
1060 HostPortPair host_port_pair("www.google.com", 443); 1062 HostPortPair host_port_pair("www.google.com", 443);
(...skipping 12 matching lines...) Expand all
1073 scoped_ptr<HttpStreamRequest> request( 1075 scoped_ptr<HttpStreamRequest> request(
1074 session->http_stream_factory()->RequestStream( 1076 session->http_stream_factory()->RequestStream(
1075 request_info, 1077 request_info,
1076 DEFAULT_PRIORITY, 1078 DEFAULT_PRIORITY,
1077 ssl_config, 1079 ssl_config,
1078 ssl_config, 1080 ssl_config,
1079 &waiter, 1081 &waiter,
1080 BoundNetLog())); 1082 BoundNetLog()));
1081 waiter.WaitForStream(); 1083 waiter.WaitForStream();
1082 EXPECT_TRUE(waiter.stream_done()); 1084 EXPECT_TRUE(waiter.stream_done());
1083 EXPECT_TRUE(NULL == waiter.websocket_stream()); 1085 EXPECT_TRUE(nullptr == waiter.websocket_stream());
1084 ASSERT_TRUE(NULL != waiter.stream()); 1086 ASSERT_TRUE(nullptr != waiter.stream());
1085 EXPECT_TRUE(waiter.stream()->IsSpdyHttpStream()); 1087 EXPECT_TRUE(waiter.stream()->IsSpdyHttpStream());
1086 EXPECT_EQ(1, GetSocketPoolGroupCount( 1088 EXPECT_EQ(1, GetSocketPoolGroupCount(
1087 session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL))); 1089 session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL)));
1088 EXPECT_EQ(1, GetSocketPoolGroupCount( 1090 EXPECT_EQ(1, GetSocketPoolGroupCount(
1089 session->GetSSLSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL))); 1091 session->GetSSLSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL)));
1090 EXPECT_EQ(0, GetSocketPoolGroupCount( 1092 EXPECT_EQ(0, GetSocketPoolGroupCount(
1091 session->GetTransportSocketPool( 1093 session->GetTransportSocketPool(
1092 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); 1094 HttpNetworkSession::WEBSOCKET_SOCKET_POOL)));
1093 EXPECT_EQ(0, GetSocketPoolGroupCount( 1095 EXPECT_EQ(0, GetSocketPoolGroupCount(
1094 session->GetSSLSocketPool(HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); 1096 session->GetSSLSocketPool(HttpNetworkSession::WEBSOCKET_SOCKET_POOL)));
1095 EXPECT_TRUE(waiter.used_proxy_info().is_direct()); 1097 EXPECT_TRUE(waiter.used_proxy_info().is_direct());
1096 } 1098 }
1097 1099
1098 // TODO(ricea): This test can be removed once the new WebSocket stack supports 1100 // TODO(ricea): This test can be removed once the new WebSocket stack supports
1099 // SPDY. Currently, even if we connect to a SPDY-supporting server, we need to 1101 // SPDY. Currently, even if we connect to a SPDY-supporting server, we need to
1100 // use plain SSL. 1102 // use plain SSL.
1101 TEST_P(HttpStreamFactoryTest, RequestWebSocketSpdyHandshakeStreamButGetSSL) { 1103 TEST_P(HttpStreamFactoryTest, RequestWebSocketSpdyHandshakeStreamButGetSSL) {
1102 SpdySessionDependencies session_deps(GetParam(), 1104 SpdySessionDependencies session_deps(GetParam(),
1103 ProxyService::CreateDirect()); 1105 ProxyService::CreateDirect());
1104 1106
1105 MockRead mock_read(SYNCHRONOUS, ERR_IO_PENDING); 1107 MockRead mock_read(SYNCHRONOUS, ERR_IO_PENDING);
1106 StaticSocketDataProvider socket_data(&mock_read, 1, NULL, 0); 1108 StaticSocketDataProvider socket_data(&mock_read, 1, nullptr, 0);
1107 socket_data.set_connect_data(MockConnect(ASYNC, OK)); 1109 socket_data.set_connect_data(MockConnect(ASYNC, OK));
1108 session_deps.socket_factory->AddSocketDataProvider(&socket_data); 1110 session_deps.socket_factory->AddSocketDataProvider(&socket_data);
1109 1111
1110 SSLSocketDataProvider ssl_socket_data(ASYNC, OK); 1112 SSLSocketDataProvider ssl_socket_data(ASYNC, OK);
1111 session_deps.socket_factory->AddSSLSocketDataProvider(&ssl_socket_data); 1113 session_deps.socket_factory->AddSSLSocketDataProvider(&ssl_socket_data);
1112 1114
1113 HostPortPair host_port_pair("www.google.com", 80); 1115 HostPortPair host_port_pair("www.google.com", 80);
1114 scoped_refptr<HttpNetworkSession> 1116 scoped_refptr<HttpNetworkSession>
1115 session(SpdySessionDependencies::SpdyCreateSession(&session_deps)); 1117 session(SpdySessionDependencies::SpdyCreateSession(&session_deps));
1116 1118
(...skipping 10 matching lines...) Expand all
1127 session->http_stream_factory_for_websocket() 1129 session->http_stream_factory_for_websocket()
1128 ->RequestWebSocketHandshakeStream(request_info, 1130 ->RequestWebSocketHandshakeStream(request_info,
1129 DEFAULT_PRIORITY, 1131 DEFAULT_PRIORITY,
1130 ssl_config, 1132 ssl_config,
1131 ssl_config, 1133 ssl_config,
1132 &waiter1, 1134 &waiter1,
1133 &create_helper, 1135 &create_helper,
1134 BoundNetLog())); 1136 BoundNetLog()));
1135 waiter1.WaitForStream(); 1137 waiter1.WaitForStream();
1136 EXPECT_TRUE(waiter1.stream_done()); 1138 EXPECT_TRUE(waiter1.stream_done());
1137 ASSERT_TRUE(NULL != waiter1.websocket_stream()); 1139 ASSERT_TRUE(nullptr != waiter1.websocket_stream());
1138 EXPECT_EQ(MockWebSocketHandshakeStream::kStreamTypeBasic, 1140 EXPECT_EQ(MockWebSocketHandshakeStream::kStreamTypeBasic,
1139 waiter1.websocket_stream()->type()); 1141 waiter1.websocket_stream()->type());
1140 EXPECT_TRUE(NULL == waiter1.stream()); 1142 EXPECT_TRUE(nullptr == waiter1.stream());
1141 1143
1142 EXPECT_EQ(0, GetSocketPoolGroupCount( 1144 EXPECT_EQ(0, GetSocketPoolGroupCount(
1143 session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL))); 1145 session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL)));
1144 EXPECT_EQ(0, GetSocketPoolGroupCount( 1146 EXPECT_EQ(0, GetSocketPoolGroupCount(
1145 session->GetSSLSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL))); 1147 session->GetSSLSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL)));
1146 EXPECT_EQ(1, GetSocketPoolGroupCount( 1148 EXPECT_EQ(1, GetSocketPoolGroupCount(
1147 session->GetSSLSocketPool(HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); 1149 session->GetSSLSocketPool(HttpNetworkSession::WEBSOCKET_SOCKET_POOL)));
1148 EXPECT_TRUE(waiter1.used_proxy_info().is_direct()); 1150 EXPECT_TRUE(waiter1.used_proxy_info().is_direct());
1149 } 1151 }
1150 1152
1151 // TODO(ricea): Re-enable once WebSocket-over-SPDY is implemented. 1153 // TODO(ricea): Re-enable once WebSocket-over-SPDY is implemented.
1152 TEST_P(HttpStreamFactoryTest, DISABLED_RequestWebSocketSpdyHandshakeStream) { 1154 TEST_P(HttpStreamFactoryTest, DISABLED_RequestWebSocketSpdyHandshakeStream) {
1153 SpdySessionDependencies session_deps(GetParam(), 1155 SpdySessionDependencies session_deps(GetParam(),
1154 ProxyService::CreateDirect()); 1156 ProxyService::CreateDirect());
1155 1157
1156 MockRead mock_read(SYNCHRONOUS, ERR_IO_PENDING); 1158 MockRead mock_read(SYNCHRONOUS, ERR_IO_PENDING);
1157 StaticSocketDataProvider socket_data(&mock_read, 1, NULL, 0); 1159 StaticSocketDataProvider socket_data(&mock_read, 1, nullptr, 0);
1158 socket_data.set_connect_data(MockConnect(ASYNC, OK)); 1160 socket_data.set_connect_data(MockConnect(ASYNC, OK));
1159 session_deps.socket_factory->AddSocketDataProvider(&socket_data); 1161 session_deps.socket_factory->AddSocketDataProvider(&socket_data);
1160 1162
1161 SSLSocketDataProvider ssl_socket_data(ASYNC, OK); 1163 SSLSocketDataProvider ssl_socket_data(ASYNC, OK);
1162 ssl_socket_data.SetNextProto(GetParam()); 1164 ssl_socket_data.SetNextProto(GetParam());
1163 session_deps.socket_factory->AddSSLSocketDataProvider(&ssl_socket_data); 1165 session_deps.socket_factory->AddSSLSocketDataProvider(&ssl_socket_data);
1164 1166
1165 HostPortPair host_port_pair("www.google.com", 80); 1167 HostPortPair host_port_pair("www.google.com", 80);
1166 scoped_refptr<HttpNetworkSession> 1168 scoped_refptr<HttpNetworkSession>
1167 session(SpdySessionDependencies::SpdyCreateSession(&session_deps)); 1169 session(SpdySessionDependencies::SpdyCreateSession(&session_deps));
(...skipping 11 matching lines...) Expand all
1179 session->http_stream_factory_for_websocket() 1181 session->http_stream_factory_for_websocket()
1180 ->RequestWebSocketHandshakeStream(request_info, 1182 ->RequestWebSocketHandshakeStream(request_info,
1181 DEFAULT_PRIORITY, 1183 DEFAULT_PRIORITY,
1182 ssl_config, 1184 ssl_config,
1183 ssl_config, 1185 ssl_config,
1184 &waiter1, 1186 &waiter1,
1185 &create_helper, 1187 &create_helper,
1186 BoundNetLog())); 1188 BoundNetLog()));
1187 waiter1.WaitForStream(); 1189 waiter1.WaitForStream();
1188 EXPECT_TRUE(waiter1.stream_done()); 1190 EXPECT_TRUE(waiter1.stream_done());
1189 ASSERT_TRUE(NULL != waiter1.websocket_stream()); 1191 ASSERT_TRUE(nullptr != waiter1.websocket_stream());
1190 EXPECT_EQ(MockWebSocketHandshakeStream::kStreamTypeSpdy, 1192 EXPECT_EQ(MockWebSocketHandshakeStream::kStreamTypeSpdy,
1191 waiter1.websocket_stream()->type()); 1193 waiter1.websocket_stream()->type());
1192 EXPECT_TRUE(NULL == waiter1.stream()); 1194 EXPECT_TRUE(nullptr == waiter1.stream());
1193 1195
1194 StreamRequestWaiter waiter2; 1196 StreamRequestWaiter waiter2;
1195 scoped_ptr<HttpStreamRequest> request2( 1197 scoped_ptr<HttpStreamRequest> request2(
1196 session->http_stream_factory_for_websocket() 1198 session->http_stream_factory_for_websocket()
1197 ->RequestWebSocketHandshakeStream(request_info, 1199 ->RequestWebSocketHandshakeStream(request_info,
1198 DEFAULT_PRIORITY, 1200 DEFAULT_PRIORITY,
1199 ssl_config, 1201 ssl_config,
1200 ssl_config, 1202 ssl_config,
1201 &waiter2, 1203 &waiter2,
1202 &create_helper, 1204 &create_helper,
1203 BoundNetLog())); 1205 BoundNetLog()));
1204 waiter2.WaitForStream(); 1206 waiter2.WaitForStream();
1205 EXPECT_TRUE(waiter2.stream_done()); 1207 EXPECT_TRUE(waiter2.stream_done());
1206 ASSERT_TRUE(NULL != waiter2.websocket_stream()); 1208 ASSERT_TRUE(nullptr != waiter2.websocket_stream());
1207 EXPECT_EQ(MockWebSocketHandshakeStream::kStreamTypeSpdy, 1209 EXPECT_EQ(MockWebSocketHandshakeStream::kStreamTypeSpdy,
1208 waiter2.websocket_stream()->type()); 1210 waiter2.websocket_stream()->type());
1209 EXPECT_TRUE(NULL == waiter2.stream()); 1211 EXPECT_TRUE(nullptr == waiter2.stream());
1210 EXPECT_NE(waiter2.websocket_stream(), waiter1.websocket_stream()); 1212 EXPECT_NE(waiter2.websocket_stream(), waiter1.websocket_stream());
1211 EXPECT_EQ(static_cast<WebSocketSpdyHandshakeStream*>( 1213 EXPECT_EQ(static_cast<WebSocketSpdyHandshakeStream*>(
1212 waiter2.websocket_stream())->spdy_session(), 1214 waiter2.websocket_stream())->spdy_session(),
1213 static_cast<WebSocketSpdyHandshakeStream*>( 1215 static_cast<WebSocketSpdyHandshakeStream*>(
1214 waiter1.websocket_stream())->spdy_session()); 1216 waiter1.websocket_stream())->spdy_session());
1215 1217
1216 EXPECT_EQ(0, GetSocketPoolGroupCount( 1218 EXPECT_EQ(0, GetSocketPoolGroupCount(
1217 session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL))); 1219 session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL)));
1218 EXPECT_EQ(0, GetSocketPoolGroupCount( 1220 EXPECT_EQ(0, GetSocketPoolGroupCount(
1219 session->GetSSLSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL))); 1221 session->GetSSLSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL)));
1220 EXPECT_EQ(1, GetSocketPoolGroupCount( 1222 EXPECT_EQ(1, GetSocketPoolGroupCount(
1221 session->GetTransportSocketPool( 1223 session->GetTransportSocketPool(
1222 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); 1224 HttpNetworkSession::WEBSOCKET_SOCKET_POOL)));
1223 EXPECT_EQ(1, GetSocketPoolGroupCount( 1225 EXPECT_EQ(1, GetSocketPoolGroupCount(
1224 session->GetSSLSocketPool(HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); 1226 session->GetSSLSocketPool(HttpNetworkSession::WEBSOCKET_SOCKET_POOL)));
1225 EXPECT_TRUE(waiter1.used_proxy_info().is_direct()); 1227 EXPECT_TRUE(waiter1.used_proxy_info().is_direct());
1226 } 1228 }
1227 1229
1228 // TODO(ricea): Re-enable once WebSocket over SPDY is implemented. 1230 // TODO(ricea): Re-enable once WebSocket over SPDY is implemented.
1229 TEST_P(HttpStreamFactoryTest, DISABLED_OrphanedWebSocketStream) { 1231 TEST_P(HttpStreamFactoryTest, DISABLED_OrphanedWebSocketStream) {
1230 SpdySessionDependencies session_deps(GetParam(), 1232 SpdySessionDependencies session_deps(GetParam(),
1231 ProxyService::CreateDirect()); 1233 ProxyService::CreateDirect());
1232 session_deps.use_alternate_protocols = true; 1234 session_deps.use_alternate_protocols = true;
1233 1235
1234 MockRead mock_read(ASYNC, OK); 1236 MockRead mock_read(ASYNC, OK);
1235 DeterministicSocketData socket_data(&mock_read, 1, NULL, 0); 1237 DeterministicSocketData socket_data(&mock_read, 1, nullptr, 0);
1236 socket_data.set_connect_data(MockConnect(ASYNC, OK)); 1238 socket_data.set_connect_data(MockConnect(ASYNC, OK));
1237 session_deps.deterministic_socket_factory->AddSocketDataProvider( 1239 session_deps.deterministic_socket_factory->AddSocketDataProvider(
1238 &socket_data); 1240 &socket_data);
1239 1241
1240 MockRead mock_read2(ASYNC, OK); 1242 MockRead mock_read2(ASYNC, OK);
1241 DeterministicSocketData socket_data2(&mock_read2, 1, NULL, 0); 1243 DeterministicSocketData socket_data2(&mock_read2, 1, nullptr, 0);
1242 socket_data2.set_connect_data(MockConnect(ASYNC, ERR_IO_PENDING)); 1244 socket_data2.set_connect_data(MockConnect(ASYNC, ERR_IO_PENDING));
1243 session_deps.deterministic_socket_factory->AddSocketDataProvider( 1245 session_deps.deterministic_socket_factory->AddSocketDataProvider(
1244 &socket_data2); 1246 &socket_data2);
1245 1247
1246 SSLSocketDataProvider ssl_socket_data(ASYNC, OK); 1248 SSLSocketDataProvider ssl_socket_data(ASYNC, OK);
1247 ssl_socket_data.SetNextProto(GetParam()); 1249 ssl_socket_data.SetNextProto(GetParam());
1248 session_deps.deterministic_socket_factory->AddSSLSocketDataProvider( 1250 session_deps.deterministic_socket_factory->AddSSLSocketDataProvider(
1249 &ssl_socket_data); 1251 &ssl_socket_data);
1250 1252
1251 scoped_refptr<HttpNetworkSession> 1253 scoped_refptr<HttpNetworkSession>
(...skipping 19 matching lines...) Expand all
1271 session->http_stream_factory_for_websocket() 1273 session->http_stream_factory_for_websocket()
1272 ->RequestWebSocketHandshakeStream(request_info, 1274 ->RequestWebSocketHandshakeStream(request_info,
1273 DEFAULT_PRIORITY, 1275 DEFAULT_PRIORITY,
1274 ssl_config, 1276 ssl_config,
1275 ssl_config, 1277 ssl_config,
1276 &waiter, 1278 &waiter,
1277 &create_helper, 1279 &create_helper,
1278 BoundNetLog())); 1280 BoundNetLog()));
1279 waiter.WaitForStream(); 1281 waiter.WaitForStream();
1280 EXPECT_TRUE(waiter.stream_done()); 1282 EXPECT_TRUE(waiter.stream_done());
1281 EXPECT_TRUE(NULL == waiter.stream()); 1283 EXPECT_TRUE(nullptr == waiter.stream());
1282 ASSERT_TRUE(NULL != waiter.websocket_stream()); 1284 ASSERT_TRUE(nullptr != waiter.websocket_stream());
1283 EXPECT_EQ(MockWebSocketHandshakeStream::kStreamTypeSpdy, 1285 EXPECT_EQ(MockWebSocketHandshakeStream::kStreamTypeSpdy,
1284 waiter.websocket_stream()->type()); 1286 waiter.websocket_stream()->type());
1285 1287
1286 // Make sure that there was an alternative connection 1288 // Make sure that there was an alternative connection
1287 // which consumes extra connections. 1289 // which consumes extra connections.
1288 EXPECT_EQ(0, GetSocketPoolGroupCount( 1290 EXPECT_EQ(0, GetSocketPoolGroupCount(
1289 session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL))); 1291 session->GetTransportSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL)));
1290 EXPECT_EQ(0, GetSocketPoolGroupCount( 1292 EXPECT_EQ(0, GetSocketPoolGroupCount(
1291 session->GetSSLSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL))); 1293 session->GetSSLSocketPool(HttpNetworkSession::NORMAL_SOCKET_POOL)));
1292 EXPECT_EQ(2, GetSocketPoolGroupCount( 1294 EXPECT_EQ(2, GetSocketPoolGroupCount(
1293 session->GetTransportSocketPool( 1295 session->GetTransportSocketPool(
1294 HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); 1296 HttpNetworkSession::WEBSOCKET_SOCKET_POOL)));
1295 EXPECT_EQ(1, GetSocketPoolGroupCount( 1297 EXPECT_EQ(1, GetSocketPoolGroupCount(
1296 session->GetSSLSocketPool(HttpNetworkSession::WEBSOCKET_SOCKET_POOL))); 1298 session->GetSSLSocketPool(HttpNetworkSession::WEBSOCKET_SOCKET_POOL)));
1297 EXPECT_TRUE(waiter.used_proxy_info().is_direct()); 1299 EXPECT_TRUE(waiter.used_proxy_info().is_direct());
1298 1300
1299 // Make sure there is no orphaned job. it is already canceled. 1301 // Make sure there is no orphaned job. it is already canceled.
1300 ASSERT_EQ(0u, static_cast<HttpStreamFactoryImpl*>( 1302 ASSERT_EQ(0u, static_cast<HttpStreamFactoryImpl*>(
1301 session->http_stream_factory_for_websocket())->num_orphaned_jobs()); 1303 session->http_stream_factory_for_websocket())->num_orphaned_jobs());
1302 } 1304 }
1303 1305
1304 } // namespace 1306 } // namespace
1305 1307
1306 } // namespace net 1308 } // namespace net
OLDNEW
« no previous file with comments | « net/http/http_stream_factory_impl_request_unittest.cc ('k') | net/net.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698