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 3 // found in the LICENSE file. 4 5 #ifndef JINGLE_GLUE_XMPP_CLIENT_SOCKET_FACTORY_H_ 6 #define JINGLE_GLUE_XMPP_CLIENT_SOCKET_FACTORY_H_ 7 8 #include <string> 9 10 #include "base/compiler_specific.h" 11 #include "base/memory/ref_counted.h" 12 #include "jingle/glue/resolving_client_socket_factory.h" 13 #include "net/ssl/ssl_config_service.h" 14 15 namespace net { 16 class ClientSocketFactory; 17 class ClientSocketHandle; 18 class HostPortPair; 19 class SSLClientSocket; 20 class StreamSocket; 21 class URLRequestContextGetter; 22 } // namespace net 23 24 namespace jingle_glue { 25 26 class XmppClientSocketFactory : public ResolvingClientSocketFactory { 27 public: 28 // Does not take ownership of |client_socket_factory|. 29 XmppClientSocketFactory( 30 net::ClientSocketFactory* client_socket_factory, 31 const net::SSLConfig& ssl_config, 32 const scoped_refptr<net::URLRequestContextGetter>& request_context_getter, 33 bool use_fake_ssl_client_socket); 34 35 virtual ~XmppClientSocketFactory(); 36 37 // ResolvingClientSocketFactory implementation. 38 virtual scoped_ptr<net::StreamSocket> CreateTransportClientSocket( 39 const net::HostPortPair& host_and_port) OVERRIDE; 40 41 virtual scoped_ptr<net::SSLClientSocket> CreateSSLClientSocket( 42 scoped_ptr<net::ClientSocketHandle> transport_socket, 43 const net::HostPortPair& host_and_port) OVERRIDE; 44 45 private: 46 net::ClientSocketFactory* const client_socket_factory_; 47 scoped_refptr<net::URLRequestContextGetter> request_context_getter_; 48 const net::SSLConfig ssl_config_; 49 const bool use_fake_ssl_client_socket_; 50 51 DISALLOW_COPY_AND_ASSIGN(XmppClientSocketFactory); 52 }; 53 54 } // namespace jingle_glue 55 56 #endif // JINGLE_GLUE_XMPP_CLIENT_SOCKET_FACTORY_H_ 57