| 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 |