- add sources.
[platform/framework/web/crosswalk.git] / src / jingle / glue / xmpp_client_socket_factory.h
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_