protocol_mock_objects.h revision effb81e5f8246d0db0270817048dc992db66e9fb
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 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 REMOTING_PROTOCOL_PROTOCOL_MOCK_OBJECTS_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define REMOTING_PROTOCOL_PROTOCOL_MOCK_OBJECTS_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include <map>
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string>
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "base/location.h"
12a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "base/single_thread_task_runner.h"
13a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "base/values.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "net/base/ip_endpoint.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "remoting/proto/internal.pb.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "remoting/proto/video.pb.h"
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "remoting/protocol/authenticator.h"
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "remoting/protocol/client_stub.h"
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "remoting/protocol/clipboard_stub.h"
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "remoting/protocol/connection_to_client.h"
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "remoting/protocol/host_stub.h"
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "remoting/protocol/input_stub.h"
237d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "remoting/protocol/pairing_registry.h"
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "remoting/protocol/session.h"
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "remoting/protocol/session_manager.h"
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "remoting/protocol/transport.h"
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "remoting/protocol/video_stub.h"
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gmock/include/gmock/gmock.h"
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace remoting {
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace protocol {
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MockConnectionToClient : public ConnectionToClient {
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MockConnectionToClient(Session* session,
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                         HostStub* host_stub);
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~MockConnectionToClient();
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD1(Init, void(Session* session));
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD0(video_stub, VideoStub*());
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD0(client_stub, ClientStub*());
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD0(session, Session*());
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD0(Disconnect, void());
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(MockConnectionToClient);
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MockConnectionToClientEventHandler :
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      public ConnectionToClient::EventHandler {
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MockConnectionToClientEventHandler();
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~MockConnectionToClientEventHandler();
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD1(OnConnectionAuthenticated, void(ConnectionToClient* connection));
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD1(OnConnectionChannelsConnected,
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)               void(ConnectionToClient* connection));
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD2(OnConnectionClosed, void(ConnectionToClient* connection,
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                        ErrorCode error));
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD2(OnSequenceNumberUpdated, void(ConnectionToClient* connection,
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                             int64 sequence_number));
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD3(OnRouteChange, void(ConnectionToClient* connection,
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   const std::string& channel_name,
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   const TransportRoute& route));
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(MockConnectionToClientEventHandler);
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MockClipboardStub : public ClipboardStub {
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MockClipboardStub();
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~MockClipboardStub();
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD1(InjectClipboardEvent, void(const ClipboardEvent& event));
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(MockClipboardStub);
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MockCursorShapeChangeCallback {
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MockCursorShapeChangeCallback();
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~MockCursorShapeChangeCallback();
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD1(CursorShapeChangedPtr, void(CursorShapeInfo* info));
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  void CursorShapeChanged(scoped_ptr<CursorShapeInfo> info);
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(MockCursorShapeChangeCallback);
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MockInputStub : public InputStub {
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MockInputStub();
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~MockInputStub();
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD1(InjectKeyEvent, void(const KeyEvent& event));
99effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  MOCK_METHOD1(InjectTextEvent, void(const TextEvent& event));
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD1(InjectMouseEvent, void(const MouseEvent& event));
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(MockInputStub);
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MockHostStub : public HostStub {
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MockHostStub();
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~MockHostStub();
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  MOCK_METHOD1(NotifyClientResolution,
1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)               void(const ClientResolution& resolution));
113c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  MOCK_METHOD1(ControlVideo, void(const VideoControl& video_control));
114c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  MOCK_METHOD1(ControlAudio, void(const AudioControl& audio_control));
115c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  MOCK_METHOD1(SetCapabilities, void(const Capabilities& capabilities));
116b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)  MOCK_METHOD1(RequestPairing,
117b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)               void(const PairingRequest& pairing_request));
118c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch  MOCK_METHOD1(DeliverClientMessage, void(const ExtensionMessage& message));
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(MockHostStub);
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MockClientStub : public ClientStub {
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MockClientStub();
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~MockClientStub();
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
129c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  // ClientStub mock implementation.
130c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  MOCK_METHOD1(SetCapabilities, void(const Capabilities& capabilities));
131b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)  MOCK_METHOD1(SetPairingResponse,
132b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)               void(const PairingResponse& pairing_response));
133c2db58bd994c04d98e4ee2cd7565b71548655fe3Ben Murdoch  MOCK_METHOD1(DeliverHostMessage, void(const ExtensionMessage& message));
134c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // ClipboardStub mock implementation.
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD1(InjectClipboardEvent, void(const ClipboardEvent& event));
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // CursorShapeStub mock implementation.
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD1(SetCursorShape, void(const CursorShapeInfo& cursor_shape));
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(MockClientStub);
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MockVideoStub : public VideoStub {
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MockVideoStub();
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~MockVideoStub();
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD2(ProcessVideoPacketPtr, void(const VideoPacket* video_packet,
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                           const base::Closure& done));
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void ProcessVideoPacket(scoped_ptr<VideoPacket> video_packet,
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  const base::Closure& done) {
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ProcessVideoPacketPtr(video_packet.get(), done);
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(MockVideoStub);
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MockSession : public Session {
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MockSession();
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~MockSession();
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD1(SetEventHandler, void(Session::EventHandler* event_handler));
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD0(error, ErrorCode());
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD0(GetTransportChannelFactory, ChannelFactory*());
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD0(GetMultiplexedChannelFactory, ChannelFactory*());
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD0(jid, const std::string&());
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD0(candidate_config, const CandidateSessionConfig*());
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD0(config, const SessionConfig&());
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD1(set_config, void(const SessionConfig& config));
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD0(initiator_token, const std::string&());
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD1(set_initiator_token, void(const std::string& initiator_token));
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD0(receiver_token, const std::string&());
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD1(set_receiver_token, void(const std::string& receiver_token));
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD1(set_shared_secret, void(const std::string& secret));
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD0(shared_secret, const std::string&());
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD0(Close, void());
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(MockSession);
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class MockSessionManager : public SessionManager {
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MockSessionManager();
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~MockSessionManager();
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD2(Init, void(SignalStrategy*, Listener*));
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD3(ConnectPtr, Session*(
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const std::string& host_jid,
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      Authenticator* authenticator,
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      CandidateSessionConfig* config));
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MOCK_METHOD0(Close, void());
1977d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  MOCK_METHOD1(set_authenticator_factory_ptr,
1987d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)               void(AuthenticatorFactory* factory));
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual scoped_ptr<Session> Connect(
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      const std::string& host_jid,
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      scoped_ptr<Authenticator> authenticator,
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      scoped_ptr<CandidateSessionConfig> config) {
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return scoped_ptr<Session>(ConnectPtr(
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        host_jid, authenticator.get(), config.get()));
2057d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  }
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual void set_authenticator_factory(
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      scoped_ptr<AuthenticatorFactory> authenticator_factory) {
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    set_authenticator_factory_ptr(authenticator_factory.release());
2097d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  }
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(MockSessionManager);
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2157d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// Simple delegate that caches information on paired clients in memory.
2167d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)class MockPairingRegistryDelegate : public PairingRegistry::Delegate {
2177d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) public:
2187d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  MockPairingRegistryDelegate();
2197d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  virtual ~MockPairingRegistryDelegate();
2207d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
2217d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  // PairingRegistry::Delegate implementation.
222a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  virtual scoped_ptr<base::ListValue> LoadAll() OVERRIDE;
223a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  virtual bool DeleteAll() OVERRIDE;
224a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  virtual protocol::PairingRegistry::Pairing Load(
225a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)      const std::string& client_id) OVERRIDE;
226a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  virtual bool Save(const protocol::PairingRegistry::Pairing& pairing) OVERRIDE;
227a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  virtual bool Delete(const std::string& client_id) OVERRIDE;
228ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
229a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) private:
230a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  typedef std::map<std::string, protocol::PairingRegistry::Pairing> Pairings;
231a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  Pairings pairings_;
232a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)};
233a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)
234a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)class SynchronousPairingRegistry : public PairingRegistry {
235a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) public:
236a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  explicit SynchronousPairingRegistry(scoped_ptr<Delegate> delegate);
237ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
238a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) protected:
239a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  virtual ~SynchronousPairingRegistry();
2407d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
241a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  // Runs tasks synchronously instead of posting them to |task_runner|.
242a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  virtual void PostTask(
243a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)      const scoped_refptr<base::SingleThreadTaskRunner>& task_runner,
244a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)      const tracked_objects::Location& from_here,
245a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)      const base::Closure& task) OVERRIDE;
2467d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)};
2477d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace protocol
2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace remoting
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // REMOTING_PROTOCOL_PROTOCOL_MOCK_OBJECTS_H_
252