Revert of Revert of Roll android_tools f6e2370:2a860d8 (patchset #1 id:1 of https...
[chromium-blink-merge.git] / remoting / protocol / fake_authenticator.h
blob94d002c6cb77a00290668ec53e49dd43f5471a19
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 ~FakeChannelAuthenticator() override;
21 // ChannelAuthenticator interface.
22 void SecureAndAuthenticate(scoped_ptr<net::StreamSocket> socket,
23 const DoneCallback& done_callback) override;
25 private:
26 void OnAuthBytesWritten(int result);
27 void OnAuthBytesRead(int result);
29 void CallDoneCallback();
31 int result_;
32 bool async_;
34 scoped_ptr<net::StreamSocket> socket_;
35 DoneCallback done_callback_;
37 bool did_read_bytes_;
38 bool did_write_bytes_;
40 base::WeakPtrFactory<FakeChannelAuthenticator> weak_factory_;
42 DISALLOW_COPY_AND_ASSIGN(FakeChannelAuthenticator);
45 class FakeAuthenticator : public Authenticator {
46 public:
47 enum Type {
48 HOST,
49 CLIENT,
52 enum Action {
53 ACCEPT,
54 REJECT,
55 REJECT_CHANNEL
58 FakeAuthenticator(Type type, int round_trips, Action action, bool async);
60 ~FakeAuthenticator() override;
62 // Set the number of messages that the authenticator needs to process before
63 // started() returns true. Default to 0.
64 void set_messages_till_started(int messages);
66 // Authenticator interface.
67 State state() const override;
68 bool started() const override;
69 RejectionReason rejection_reason() const override;
70 void ProcessMessage(const buzz::XmlElement* message,
71 const base::Closure& resume_callback) override;
72 scoped_ptr<buzz::XmlElement> GetNextMessage() override;
73 scoped_ptr<ChannelAuthenticator> CreateChannelAuthenticator() const override;
75 protected:
76 Type type_;
77 int round_trips_;
78 Action action_;
79 bool async_;
81 // Total number of messages that have been processed.
82 int messages_;
83 // Number of messages that the authenticator needs to process before started()
84 // returns true. Default to 0.
85 int messages_till_started_;
87 DISALLOW_COPY_AND_ASSIGN(FakeAuthenticator);
90 class FakeHostAuthenticatorFactory : public AuthenticatorFactory {
91 public:
92 FakeHostAuthenticatorFactory(
93 int round_trips, int messages_till_start,
94 FakeAuthenticator::Action action, bool async);
95 ~FakeHostAuthenticatorFactory() override;
97 // AuthenticatorFactory interface.
98 scoped_ptr<Authenticator> CreateAuthenticator(
99 const std::string& local_jid,
100 const std::string& remote_jid,
101 const buzz::XmlElement* first_message) override;
103 private:
104 int round_trips_;
105 int messages_till_started_;
106 FakeAuthenticator::Action action_;
107 bool async_;
109 DISALLOW_COPY_AND_ASSIGN(FakeHostAuthenticatorFactory);
112 } // namespace protocol
113 } // namespace remoting
115 #endif // REMOTING_PROTOCOL_FAKE_AUTHENTICATOR_H_