Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / remoting / protocol / fake_authenticator.h
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.
4
5 #ifndef REMOTING_PROTOCOL_FAKE_AUTHENTICATOR_H_
6 #define REMOTING_PROTOCOL_FAKE_AUTHENTICATOR_H_
7
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"
12
13 namespace remoting {
14 namespace protocol {
15
16 class FakeChannelAuthenticator : public ChannelAuthenticator {
17  public:
18   FakeChannelAuthenticator(bool accept, bool async);
19   ~FakeChannelAuthenticator() override;
20
21   // ChannelAuthenticator interface.
22   void SecureAndAuthenticate(scoped_ptr<net::StreamSocket> socket,
23                              const DoneCallback& done_callback) override;
24
25  private:
26   void OnAuthBytesWritten(int result);
27   void OnAuthBytesRead(int result);
28
29   void CallDoneCallback();
30
31   int result_;
32   bool async_;
33
34   scoped_ptr<net::StreamSocket> socket_;
35   DoneCallback done_callback_;
36
37   bool did_read_bytes_;
38   bool did_write_bytes_;
39
40   base::WeakPtrFactory<FakeChannelAuthenticator> weak_factory_;
41
42   DISALLOW_COPY_AND_ASSIGN(FakeChannelAuthenticator);
43 };
44
45 class FakeAuthenticator : public Authenticator {
46  public:
47   enum Type {
48     HOST,
49     CLIENT,
50   };
51
52   enum Action {
53     ACCEPT,
54     REJECT,
55     REJECT_CHANNEL
56   };
57
58   FakeAuthenticator(Type type, int round_trips, Action action, bool async);
59
60   ~FakeAuthenticator() override;
61
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);
65
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;
74
75  protected:
76   Type type_;
77   int round_trips_;
78   Action action_;
79   bool async_;
80
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_;
86
87   DISALLOW_COPY_AND_ASSIGN(FakeAuthenticator);
88 };
89
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;
96
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;
102
103  private:
104   int round_trips_;
105   int messages_till_started_;
106   FakeAuthenticator::Action action_;
107   bool async_;
108
109   DISALLOW_COPY_AND_ASSIGN(FakeHostAuthenticatorFactory);
110 };
111
112 }  // namespace protocol
113 }  // namespace remoting
114
115 #endif  // REMOTING_PROTOCOL_FAKE_AUTHENTICATOR_H_