| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef REMOTING_PROTOCOL_FAKE_SESSION_H_ |
| #define REMOTING_PROTOCOL_FAKE_SESSION_H_ |
| |
| #include <map> |
| #include <memory> |
| #include <string> |
| #include <vector> |
| |
| #include "base/macros.h" |
| #include "base/memory/weak_ptr.h" |
| #include "base/time/time.h" |
| #include "remoting/protocol/fake_stream_socket.h" |
| #include "remoting/protocol/jingle_messages.h" |
| #include "remoting/protocol/session.h" |
| #include "remoting/protocol/transport.h" |
| |
| namespace remoting { |
| namespace protocol { |
| |
| extern const char kTestJid[]; |
| |
| class FakeAuthenticator; |
| |
| class FakeSession : public Session { |
| public: |
| FakeSession(); |
| ~FakeSession() override; |
| |
| void SimulateConnection(FakeSession* peer); |
| |
| EventHandler* event_handler() { return event_handler_; } |
| void set_error(ErrorCode error) { error_ = error; } |
| bool is_closed() const { return closed_; } |
| |
| // Sets delay for signaling message deliver when connected to a peer. |
| void set_signaling_delay(base::TimeDelta signaling_delay) { |
| signaling_delay_ = signaling_delay; |
| } |
| |
| // Adds an |attachment| to |round|, which will be sent to plugins added by |
| // AddPlugin() function. |
| void SetAttachment(size_t round, |
| std::unique_ptr<buzz::XmlElement> attachment); |
| |
| // Session interface. |
| void SetEventHandler(EventHandler* event_handler) override; |
| ErrorCode error() override; |
| const std::string& jid() override; |
| const SessionConfig& config() override; |
| void SetTransport(Transport* transport) override; |
| void Close(ErrorCode error) override; |
| void AddPlugin(SessionPlugin* plugin) override; |
| |
| private: |
| // Callback provided to the |transport_|. |
| void SendTransportInfo(std::unique_ptr<buzz::XmlElement> transport_info); |
| |
| // Called by the |peer_| to deliver incoming |transport_info|. |
| void ProcessTransportInfo(std::unique_ptr<buzz::XmlElement> transport_info); |
| |
| EventHandler* event_handler_ = nullptr; |
| std::unique_ptr<SessionConfig> config_; |
| |
| std::string jid_; |
| |
| std::unique_ptr<FakeAuthenticator> authenticator_; |
| Transport* transport_; |
| |
| ErrorCode error_ = OK; |
| bool closed_ = false; |
| |
| base::WeakPtr<FakeSession> peer_; |
| base::TimeDelta signaling_delay_; |
| |
| std::vector<std::unique_ptr<buzz::XmlElement>> attachments_; |
| |
| base::WeakPtrFactory<FakeSession> weak_factory_; |
| |
| DISALLOW_COPY_AND_ASSIGN(FakeSession); |
| }; |
| |
| } // namespace protocol |
| } // namespace remoting |
| |
| #endif // REMOTING_PROTOCOL_FAKE_SESSION_H_ |