Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(110)

Side by Side Diff: remoting/host/client_session_unittest.cc

Issue 8476018: Move ConnectionToClient::EventHandler from ChromotingHost to ClientSession (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "remoting/host/client_session.h" 5 #include "remoting/host/client_session.h"
6 #include "remoting/host/host_mock_objects.h" 6 #include "remoting/host/host_mock_objects.h"
7 #include "remoting/protocol/protocol_mock_objects.h" 7 #include "remoting/protocol/protocol_mock_objects.h"
8 #include "testing/gtest/include/gtest/gtest.h" 8 #include "testing/gtest/include/gtest/gtest.h"
9 9
10 namespace remoting { 10 namespace remoting {
11 11
12 using protocol::MockConnectionToClient; 12 using protocol::MockConnectionToClient;
13 using protocol::MockConnectionToClientEventHandler; 13 using protocol::MockConnectionToClientEventHandler;
14 using protocol::MockHostStub; 14 using protocol::MockHostStub;
15 using protocol::MockInputStub; 15 using protocol::MockInputStub;
16 using protocol::MockSession; 16 using protocol::MockSession;
17 17
18 using testing::_; 18 using testing::_;
19 using testing::DeleteArg; 19 using testing::DeleteArg;
20 using testing::InSequence; 20 using testing::InSequence;
21 using testing::Return; 21 using testing::Return;
22 using testing::ReturnRef; 22 using testing::ReturnRef;
23 23
24 class ClientSessionTest : public testing::Test { 24 class ClientSessionTest : public testing::Test {
25 public: 25 public:
26 ClientSessionTest() {} 26 ClientSessionTest() {}
27 27
28 virtual void SetUp() { 28 virtual void SetUp() {
29 client_jid_ = "user@domain/rest-of-jid"; 29 client_jid_ = "user@domain/rest-of-jid";
30 EXPECT_CALL(session_, jid()).WillRepeatedly(ReturnRef(client_jid_));
31
32 connection_ = new MockConnectionToClient(
33 &connection_event_handler_, &host_stub_, &input_stub_);
34
35 EXPECT_CALL(*connection_, session()).WillRepeatedly(Return(&session_));
36 30
37 // Set up a large default screen size that won't affect most tests. 31 // Set up a large default screen size that won't affect most tests.
38 default_screen_size_.set(1000, 1000); 32 default_screen_size_.set(1000, 1000);
39 EXPECT_CALL(capturer_, size_most_recent()) 33 EXPECT_CALL(capturer_, size_most_recent())
40 .WillRepeatedly(ReturnRef(default_screen_size_)); 34 .WillRepeatedly(ReturnRef(default_screen_size_));
41 35
36 protocol::MockSession* session = new MockSession();
37 EXPECT_CALL(*session, jid()).WillRepeatedly(ReturnRef(client_jid_));
38 EXPECT_CALL(*session, SetStateChangeCallback(_));
39
42 user_authenticator_ = new MockUserAuthenticator(); 40 user_authenticator_ = new MockUserAuthenticator();
43 client_session_ = new ClientSession( 41 client_session_ = new ClientSession(
44 &session_event_handler_, 42 &session_event_handler_,
45 connection_, 43 new protocol::ConnectionToClient(
46 &input_stub_, 44 base::MessageLoopProxy::current(), session),
47 &capturer_); 45 &input_stub_, &capturer_);
48 } 46 }
49 47
50 protected: 48 protected:
51 SkISize default_screen_size_; 49 SkISize default_screen_size_;
52 MessageLoop message_loop_; 50 MessageLoop message_loop_;
53 std::string client_jid_; 51 std::string client_jid_;
54 MockSession session_;
55 MockConnectionToClientEventHandler connection_event_handler_;
56 MockHostStub host_stub_; 52 MockHostStub host_stub_;
57 MockInputStub input_stub_; 53 MockInputStub input_stub_;
58 MockCapturer capturer_; 54 MockCapturer capturer_;
59 MockClientSessionEventHandler session_event_handler_; 55 MockClientSessionEventHandler session_event_handler_;
60 MockUserAuthenticator* user_authenticator_; 56 MockUserAuthenticator* user_authenticator_;
61 scoped_refptr<MockConnectionToClient> connection_;
62 scoped_refptr<ClientSession> client_session_; 57 scoped_refptr<ClientSession> client_session_;
63 }; 58 };
64 59
65 MATCHER_P2(EqualsKeyEvent, keycode, pressed, "") { 60 MATCHER_P2(EqualsKeyEvent, keycode, pressed, "") {
66 return arg.keycode() == keycode && arg.pressed() == pressed; 61 return arg.keycode() == keycode && arg.pressed() == pressed;
67 } 62 }
68 63
69 MATCHER_P2(EqualsMouseEvent, x, y, "") { 64 MATCHER_P2(EqualsMouseEvent, x, y, "") {
70 return arg.x() == x && arg.y() == y; 65 return arg.x() == x && arg.y() == y;
71 } 66 }
(...skipping 25 matching lines...) Expand all
97 92
98 protocol::MouseEvent mouse_event2; 93 protocol::MouseEvent mouse_event2;
99 mouse_event2.set_x(200); 94 mouse_event2.set_x(200);
100 mouse_event2.set_y(201); 95 mouse_event2.set_y(201);
101 96
102 protocol::MouseEvent mouse_event3; 97 protocol::MouseEvent mouse_event3;
103 mouse_event3.set_x(300); 98 mouse_event3.set_x(300);
104 mouse_event3.set_y(301); 99 mouse_event3.set_y(301);
105 100
106 InSequence s; 101 InSequence s;
107 EXPECT_CALL(session_event_handler_, OnAuthenticationComplete(_)); 102 EXPECT_CALL(session_event_handler_, OnSessionAuthenticated(_));
108 EXPECT_CALL(input_stub_, InjectKeyEvent(EqualsKeyEvent(2, true))); 103 EXPECT_CALL(input_stub_, InjectKeyEvent(EqualsKeyEvent(2, true)));
109 EXPECT_CALL(input_stub_, InjectKeyEvent(EqualsKeyEvent(2, false))); 104 EXPECT_CALL(input_stub_, InjectKeyEvent(EqualsKeyEvent(2, false)));
110 EXPECT_CALL(input_stub_, InjectMouseEvent(EqualsMouseEvent(200, 201))); 105 EXPECT_CALL(input_stub_, InjectMouseEvent(EqualsMouseEvent(200, 201)));
111 106
112 // These events should not get through to the input stub, 107 // These events should not get through to the input stub,
113 // because the client isn't authenticated yet. 108 // because the client isn't authenticated yet.
114 client_session_->InjectKeyEvent(key_event1); 109 client_session_->InjectKeyEvent(key_event1);
115 client_session_->InjectMouseEvent(mouse_event1); 110 client_session_->InjectMouseEvent(mouse_event1);
116 client_session_->OnAuthenticationComplete(); 111 client_session_->OnConnectionOpened(client_session_->connection());
117 // These events should get through to the input stub. 112 // These events should get through to the input stub.
118 client_session_->InjectKeyEvent(key_event2_down); 113 client_session_->InjectKeyEvent(key_event2_down);
119 client_session_->InjectKeyEvent(key_event2_up); 114 client_session_->InjectKeyEvent(key_event2_up);
120 client_session_->InjectMouseEvent(mouse_event2); 115 client_session_->InjectMouseEvent(mouse_event2);
121 client_session_->OnDisconnected(); 116 client_session_->Disconnect();
122 // These events should not get through to the input stub, 117 // These events should not get through to the input stub,
123 // because the client has disconnected. 118 // because the client has disconnected.
124 client_session_->InjectKeyEvent(key_event3); 119 client_session_->InjectKeyEvent(key_event3);
125 client_session_->InjectMouseEvent(mouse_event3); 120 client_session_->InjectMouseEvent(mouse_event3);
126 } 121 }
127 122
128 TEST_F(ClientSessionTest, LocalInputTest) { 123 TEST_F(ClientSessionTest, LocalInputTest) {
129 protocol::MouseEvent mouse_event1; 124 protocol::MouseEvent mouse_event1;
130 mouse_event1.set_x(100); 125 mouse_event1.set_x(100);
131 mouse_event1.set_y(101); 126 mouse_event1.set_y(101);
132 protocol::MouseEvent mouse_event2; 127 protocol::MouseEvent mouse_event2;
133 mouse_event2.set_x(200); 128 mouse_event2.set_x(200);
134 mouse_event2.set_y(201); 129 mouse_event2.set_y(201);
135 protocol::MouseEvent mouse_event3; 130 protocol::MouseEvent mouse_event3;
136 mouse_event3.set_x(300); 131 mouse_event3.set_x(300);
137 mouse_event3.set_y(301); 132 mouse_event3.set_y(301);
138 133
139 InSequence s; 134 InSequence s;
140 EXPECT_CALL(session_event_handler_, OnAuthenticationComplete(_)); 135 EXPECT_CALL(session_event_handler_,
136 OnSessionAuthenticated(client_session_.get()));
141 EXPECT_CALL(input_stub_, InjectMouseEvent(EqualsMouseEvent(100, 101))); 137 EXPECT_CALL(input_stub_, InjectMouseEvent(EqualsMouseEvent(100, 101)));
142 EXPECT_CALL(input_stub_, InjectMouseEvent(EqualsMouseEvent(200, 201))); 138 EXPECT_CALL(input_stub_, InjectMouseEvent(EqualsMouseEvent(200, 201)));
143 139
144 client_session_->OnAuthenticationComplete(); 140 client_session_->OnConnectionOpened(client_session_->connection());
145 // This event should get through to the input stub. 141 // This event should get through to the input stub.
146 client_session_->InjectMouseEvent(mouse_event1); 142 client_session_->InjectMouseEvent(mouse_event1);
147 // This one should too because the local event echoes the remote one. 143 // This one should too because the local event echoes the remote one.
148 client_session_->LocalMouseMoved(SkIPoint::Make(mouse_event1.x(), 144 client_session_->LocalMouseMoved(SkIPoint::Make(mouse_event1.x(),
149 mouse_event1.y())); 145 mouse_event1.y()));
150 client_session_->InjectMouseEvent(mouse_event2); 146 client_session_->InjectMouseEvent(mouse_event2);
151 // This one should not. 147 // This one should not.
152 client_session_->LocalMouseMoved(SkIPoint::Make(mouse_event1.x(), 148 client_session_->LocalMouseMoved(SkIPoint::Make(mouse_event1.x(),
153 mouse_event1.y())); 149 mouse_event1.y()));
154 client_session_->InjectMouseEvent(mouse_event3); 150 client_session_->InjectMouseEvent(mouse_event3);
155 // TODO(jamiewalch): Verify that remote inputs are re-enabled eventually 151 // TODO(jamiewalch): Verify that remote inputs are re-enabled eventually
156 // (via dependency injection, not sleep!) 152 // (via dependency injection, not sleep!)
157 client_session_->OnDisconnected(); 153 client_session_->Disconnect();
158 } 154 }
159 155
160 TEST_F(ClientSessionTest, RestoreEventState) { 156 TEST_F(ClientSessionTest, RestoreEventState) {
161 protocol::KeyEvent key1; 157 protocol::KeyEvent key1;
162 key1.set_pressed(true); 158 key1.set_pressed(true);
163 key1.set_keycode(1); 159 key1.set_keycode(1);
164 160
165 protocol::KeyEvent key2; 161 protocol::KeyEvent key2;
166 key2.set_pressed(true); 162 key2.set_pressed(true);
167 key2.set_keycode(2); 163 key2.set_keycode(2);
(...skipping 12 matching lines...) Expand all
180 protocol::MouseEvent::BUTTON_LEFT))); 176 protocol::MouseEvent::BUTTON_LEFT)));
181 177
182 client_session_->RestoreEventState(); 178 client_session_->RestoreEventState();
183 } 179 }
184 180
185 TEST_F(ClientSessionTest, ClampMouseEvents) { 181 TEST_F(ClientSessionTest, ClampMouseEvents) {
186 SkISize screen(SkISize::Make(200, 100)); 182 SkISize screen(SkISize::Make(200, 100));
187 EXPECT_CALL(capturer_, size_most_recent()) 183 EXPECT_CALL(capturer_, size_most_recent())
188 .WillRepeatedly(ReturnRef(screen)); 184 .WillRepeatedly(ReturnRef(screen));
189 185
190 EXPECT_CALL(session_event_handler_, OnAuthenticationComplete(_)); 186 EXPECT_CALL(session_event_handler_,
191 client_session_->OnAuthenticationComplete(); 187 OnSessionAuthenticated(client_session_.get()));
188 client_session_->OnConnectionOpened(client_session_->connection());
192 189
193 int input_x[3] = { -999, 100, 999 }; 190 int input_x[3] = { -999, 100, 999 };
194 int expected_x[3] = { 0, 100, 199 }; 191 int expected_x[3] = { 0, 100, 199 };
195 int input_y[3] = { -999, 50, 999 }; 192 int input_y[3] = { -999, 50, 999 };
196 int expected_y[3] = { 0, 50, 99 }; 193 int expected_y[3] = { 0, 50, 99 };
197 194
198 protocol::MouseEvent event; 195 protocol::MouseEvent event;
199 for (int j = 0; j < 3; j++) { 196 for (int j = 0; j < 3; j++) {
200 for (int i = 0; i < 3; i++) { 197 for (int i = 0; i < 3; i++) {
201 event.set_x(input_x[i]); 198 event.set_x(input_x[i]);
202 event.set_y(input_y[j]); 199 event.set_y(input_y[j]);
203 EXPECT_CALL(input_stub_, InjectMouseEvent(EqualsMouseEvent( 200 EXPECT_CALL(input_stub_, InjectMouseEvent(EqualsMouseEvent(
204 expected_x[i], expected_y[j]))); 201 expected_x[i], expected_y[j])));
205 client_session_->InjectMouseEvent(event); 202 client_session_->InjectMouseEvent(event);
206 } 203 }
207 } 204 }
208 } 205 }
209 206
210 } // namespace remoting 207 } // namespace remoting
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698