15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef NET_SOCKET_MOCK_CLIENT_SOCKET_POOL_MANAGER_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NET_SOCKET_MOCK_CLIENT_SOCKET_POOL_MANAGER_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/socket/client_socket_pool_manager.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/socket/client_socket_pool_manager_impl.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace net {
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MockClientSocketPoolManager : public ClientSocketPoolManager {
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MockClientSocketPoolManager();
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~MockClientSocketPoolManager();
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Sets "override" socket pools that get used instead.
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SetTransportSocketPool(TransportClientSocketPool* pool);
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SetSSLSocketPool(SSLClientSocketPool* pool);
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SetSocketPoolForSOCKSProxy(const HostPortPair& socks_proxy,
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  SOCKSClientSocketPool* pool);
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SetSocketPoolForHTTPProxy(const HostPortPair& http_proxy,
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                 HttpProxyClientSocketPool* pool);
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void SetSocketPoolForSSLWithProxy(const HostPortPair& proxy_server,
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    SSLClientSocketPool* pool);
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // ClientSocketPoolManager methods:
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual void FlushSocketPoolsWithError(int error) OVERRIDE;
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void CloseIdleSockets() OVERRIDE;
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual TransportClientSocketPool* GetTransportSocketPool() OVERRIDE;
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual SSLClientSocketPool* GetSSLSocketPool() OVERRIDE;
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual SOCKSClientSocketPool* GetSocketPoolForSOCKSProxy(
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const HostPortPair& socks_proxy) OVERRIDE;
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual HttpProxyClientSocketPool* GetSocketPoolForHTTPProxy(
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const HostPortPair& http_proxy) OVERRIDE;
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual SSLClientSocketPool* GetSocketPoolForSSLWithProxy(
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const HostPortPair& proxy_server) OVERRIDE;
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual base::Value* SocketPoolInfoToValue() const OVERRIDE;
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  typedef internal::OwnedPoolMap<HostPortPair, TransportClientSocketPool*>
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      TransportSocketPoolMap;
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  typedef internal::OwnedPoolMap<HostPortPair, SOCKSClientSocketPool*>
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      SOCKSSocketPoolMap;
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  typedef internal::OwnedPoolMap<HostPortPair, HttpProxyClientSocketPool*>
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      HTTPProxySocketPoolMap;
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  typedef internal::OwnedPoolMap<HostPortPair, SSLClientSocketPool*>
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      SSLSocketPoolMap;
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<TransportClientSocketPool> transport_socket_pool_;
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  scoped_ptr<SSLClientSocketPool> ssl_socket_pool_;
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SOCKSSocketPoolMap socks_socket_pools_;
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  HTTPProxySocketPoolMap http_proxy_socket_pools_;
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SSLSocketPoolMap ssl_socket_pools_for_proxies_;
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(MockClientSocketPoolManager);
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace net
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // NET_SOCKET_MOCK_CLIENT_SOCKET_POOL_MANAGER_H_
64