1// Copyright (c) 2011 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 NET_SOCKET_MOCK_CLIENT_SOCKET_POOL_MANAGER_H_
6#define NET_SOCKET_MOCK_CLIENT_SOCKET_POOL_MANAGER_H_
7
8#include "base/basictypes.h"
9#include "net/socket/client_socket_pool_manager.h"
10#include "net/socket/client_socket_pool_manager_impl.h"
11
12namespace net {
13
14class MockClientSocketPoolManager : public ClientSocketPoolManager {
15 public:
16  MockClientSocketPoolManager();
17  virtual ~MockClientSocketPoolManager();
18
19  // Sets "override" socket pools that get used instead.
20  void SetTransportSocketPool(TransportClientSocketPool* pool);
21  void SetSSLSocketPool(SSLClientSocketPool* pool);
22  void SetSocketPoolForSOCKSProxy(const HostPortPair& socks_proxy,
23                                  SOCKSClientSocketPool* pool);
24  void SetSocketPoolForHTTPProxy(const HostPortPair& http_proxy,
25                                 HttpProxyClientSocketPool* pool);
26  void SetSocketPoolForSSLWithProxy(const HostPortPair& proxy_server,
27                                    SSLClientSocketPool* pool);
28
29  // ClientSocketPoolManager methods:
30  virtual void FlushSocketPoolsWithError(int error) OVERRIDE;
31  virtual void CloseIdleSockets() OVERRIDE;
32  virtual TransportClientSocketPool* GetTransportSocketPool() OVERRIDE;
33  virtual SSLClientSocketPool* GetSSLSocketPool() OVERRIDE;
34  virtual SOCKSClientSocketPool* GetSocketPoolForSOCKSProxy(
35      const HostPortPair& socks_proxy) OVERRIDE;
36  virtual HttpProxyClientSocketPool* GetSocketPoolForHTTPProxy(
37      const HostPortPair& http_proxy) OVERRIDE;
38  virtual SSLClientSocketPool* GetSocketPoolForSSLWithProxy(
39      const HostPortPair& proxy_server) OVERRIDE;
40  virtual base::Value* SocketPoolInfoToValue() const OVERRIDE;
41
42 private:
43  typedef internal::OwnedPoolMap<HostPortPair, TransportClientSocketPool*>
44      TransportSocketPoolMap;
45  typedef internal::OwnedPoolMap<HostPortPair, SOCKSClientSocketPool*>
46      SOCKSSocketPoolMap;
47  typedef internal::OwnedPoolMap<HostPortPair, HttpProxyClientSocketPool*>
48      HTTPProxySocketPoolMap;
49  typedef internal::OwnedPoolMap<HostPortPair, SSLClientSocketPool*>
50      SSLSocketPoolMap;
51
52  scoped_ptr<TransportClientSocketPool> transport_socket_pool_;
53  scoped_ptr<SSLClientSocketPool> ssl_socket_pool_;
54  SOCKSSocketPoolMap socks_socket_pools_;
55  HTTPProxySocketPoolMap http_proxy_socket_pools_;
56  SSLSocketPoolMap ssl_socket_pools_for_proxies_;
57
58  DISALLOW_COPY_AND_ASSIGN(MockClientSocketPoolManager);
59};
60
61}  // namespace net
62
63#endif  // NET_SOCKET_MOCK_CLIENT_SOCKET_POOL_MANAGER_H_
64