OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |