Fix leak when a PeerConnection offer or answer is created.
[chromium-blink-merge.git] / remoting / protocol / fake_authenticator.h
blobb74654d0426c63aedc718b4803e065a093282244
1 // Copyright (c) 2012 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.
5 #ifndef REMOTING_PROTOCOL_FAKE_AUTHENTICATOR_H_
6 #define REMOTING_PROTOCOL_FAKE_AUTHENTICATOR_H_
8 #include "base/callback.h"
9 #include "base/memory/weak_ptr.h"
10 #include "remoting/protocol/authenticator.h"
11 #include "remoting/protocol/channel_authenticator.h"
13 namespace remoting {
14 namespace protocol {
16 class FakeChannelAuthenticator : public ChannelAuthenticator {
17 public:
18 FakeChannelAuthenticator(bool accept, bool async);
19 virtual ~FakeChannelAuthenticator();
21 // ChannelAuthenticator interface.
22 virtual void SecureAndAuthenticate(
23 scoped_ptr<net::StreamSocket> socket,
24 const DoneCallback& done_callback) OVERRIDE;
26 private:
27 void CallCallback(
28 net::Error error,
29 scoped_ptr<net::StreamSocket> socket);
31 void OnAuthBytesWritten(int result);
32 void OnAuthBytesRead(int result);
34 net::Error result_;
35 bool async_;
37 scoped_ptr<net::StreamSocket> socket_;
38 DoneCallback done_callback_;
40 bool did_read_bytes_;
41 bool did_write_bytes_;
43 base::WeakPtrFactory<FakeChannelAuthenticator> weak_factory_;
45 DISALLOW_COPY_AND_ASSIGN(FakeChannelAuthenticator);
48 class FakeAuthenticator : public Authenticator {
49 public:
50 enum Type {
51 HOST,
52 CLIENT,
55 enum Action {
56 ACCEPT,
57 REJECT,
58 REJECT_CHANNEL
61 FakeAuthenticator(Type type, int round_trips, Action action, bool async);
63 virtual ~FakeAuthenticator();
65 // Set the number of messages that the authenticator needs to process before
66 // started() returns true. Default to 0.
67 void set_messages_till_started(int messages);
69 // Authenticator interface.
70 virtual State state() const OVERRIDE;
71 virtual bool started() const OVERRIDE;
72 virtual RejectionReason rejection_reason() const OVERRIDE;
73 virtual void ProcessMessage(const buzz::XmlElement* message,
74 const base::Closure& resume_callback) OVERRIDE;
75 virtual scoped_ptr<buzz::XmlElement> GetNextMessage() OVERRIDE;
76 virtual scoped_ptr<ChannelAuthenticator>
77 CreateChannelAuthenticator() const OVERRIDE;
79 protected:
80 Type type_;
81 int round_trips_;
82 Action action_;
83 bool async_;
85 // Total number of messages that have been processed.
86 int messages_;
87 // Number of messages that the authenticator needs to process before started()
88 // returns true. Default to 0.
89 int messages_till_started_;
91 DISALLOW_COPY_AND_ASSIGN(FakeAuthenticator);
94 class FakeHostAuthenticatorFactory : public AuthenticatorFactory {
95 public:
96 FakeHostAuthenticatorFactory(
97 int round_trips, int messages_till_start,
98 FakeAuthenticator::Action action, bool async);
99 virtual ~FakeHostAuthenticatorFactory();
101 // AuthenticatorFactory interface.
102 virtual scoped_ptr<Authenticator> CreateAuthenticator(
103 const std::string& local_jid,
104 const std::string& remote_jid,
105 const buzz::XmlElement* first_message) OVERRIDE;
107 private:
108 int round_trips_;
109 int messages_till_started_;
110 FakeAuthenticator::Action action_;
111 bool async_;
113 DISALLOW_COPY_AND_ASSIGN(FakeHostAuthenticatorFactory);
116 } // namespace protocol
117 } // namespace remoting
119 #endif // REMOTING_PROTOCOL_FAKE_AUTHENTICATOR_H_