| // 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_AUTHENTICATOR_H_ |
| #define REMOTING_PROTOCOL_FAKE_AUTHENTICATOR_H_ |
| |
| #include "base/callback.h" |
| #include "base/memory/weak_ptr.h" |
| #include "remoting/protocol/authenticator.h" |
| #include "remoting/protocol/channel_authenticator.h" |
| |
| namespace remoting { |
| namespace protocol { |
| |
| class FakeChannelAuthenticator : public ChannelAuthenticator { |
| public: |
| FakeChannelAuthenticator(bool accept, bool async); |
| virtual ~FakeChannelAuthenticator(); |
| |
| // ChannelAuthenticator interface. |
| virtual void SecureAndAuthenticate( |
| scoped_ptr<net::StreamSocket> socket, |
| const DoneCallback& done_callback) OVERRIDE; |
| |
| private: |
| void CallCallback( |
| net::Error error, |
| scoped_ptr<net::StreamSocket> socket); |
| |
| void OnAuthBytesWritten(int result); |
| void OnAuthBytesRead(int result); |
| |
| net::Error result_; |
| bool async_; |
| |
| scoped_ptr<net::StreamSocket> socket_; |
| DoneCallback done_callback_; |
| |
| bool did_read_bytes_; |
| bool did_write_bytes_; |
| |
| base::WeakPtrFactory<FakeChannelAuthenticator> weak_factory_; |
| |
| DISALLOW_COPY_AND_ASSIGN(FakeChannelAuthenticator); |
| }; |
| |
| class FakeAuthenticator : public Authenticator { |
| public: |
| enum Type { |
| HOST, |
| CLIENT, |
| }; |
| |
| enum Action { |
| ACCEPT, |
| REJECT, |
| REJECT_CHANNEL |
| }; |
| |
| FakeAuthenticator(Type type, int round_trips, Action action, bool async); |
| virtual ~FakeAuthenticator(); |
| |
| // Authenticator interface. |
| virtual State state() const OVERRIDE; |
| virtual RejectionReason rejection_reason() const OVERRIDE; |
| virtual void ProcessMessage(const buzz::XmlElement* message, |
| const base::Closure& resume_callback) OVERRIDE; |
| virtual scoped_ptr<buzz::XmlElement> GetNextMessage() OVERRIDE; |
| virtual scoped_ptr<ChannelAuthenticator> |
| CreateChannelAuthenticator() const OVERRIDE; |
| |
| protected: |
| Type type_; |
| int round_trips_; |
| Action action_; |
| bool async_; |
| |
| // Total number of messages that have been processed. |
| int messages_; |
| |
| DISALLOW_COPY_AND_ASSIGN(FakeAuthenticator); |
| }; |
| |
| class FakeHostAuthenticatorFactory : public AuthenticatorFactory { |
| public: |
| FakeHostAuthenticatorFactory( |
| int round_trips, FakeAuthenticator::Action action, bool async); |
| virtual ~FakeHostAuthenticatorFactory(); |
| |
| // AuthenticatorFactory interface. |
| virtual scoped_ptr<Authenticator> CreateAuthenticator( |
| const std::string& local_jid, |
| const std::string& remote_jid, |
| const buzz::XmlElement* first_message) OVERRIDE; |
| |
| private: |
| int round_trips_; |
| FakeAuthenticator::Action action_; |
| bool async_; |
| |
| DISALLOW_COPY_AND_ASSIGN(FakeHostAuthenticatorFactory); |
| }; |
| |
| } // namespace protocol |
| } // namespace remoting |
| |
| #endif // REMOTING_PROTOCOL_FAKE_AUTHENTICATOR_H_ |