| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 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 "base/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/bind_helpers.h" | 6 #include "base/bind_helpers.h" |
| 7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
| 8 #include "base/message_loop_proxy.h" | 8 #include "base/message_loop_proxy.h" |
| 9 #include "remoting/base/auto_thread_task_runner.h" | 9 #include "remoting/base/auto_thread_task_runner.h" |
| 10 #include "remoting/jingle_glue/mock_objects.h" | 10 #include "remoting/jingle_glue/mock_objects.h" |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 111 public: | 111 public: |
| 112 ChromotingHostTest() { | 112 ChromotingHostTest() { |
| 113 } | 113 } |
| 114 | 114 |
| 115 virtual void SetUp() OVERRIDE { | 115 virtual void SetUp() OVERRIDE { |
| 116 ui_task_runner_ = new AutoThreadTaskRunner( | 116 ui_task_runner_ = new AutoThreadTaskRunner( |
| 117 message_loop_.message_loop_proxy(), | 117 message_loop_.message_loop_proxy(), |
| 118 base::Bind(&ChromotingHostTest::QuitMainMessageLoop, | 118 base::Bind(&ChromotingHostTest::QuitMainMessageLoop, |
| 119 base::Unretained(this))); | 119 base::Unretained(this))); |
| 120 | 120 |
| 121 EXPECT_CALL(context_, ui_task_runner()) |
| 122 .Times(AnyNumber()) |
| 123 .WillRepeatedly(Return(ui_task_runner_.get())); |
| 124 EXPECT_CALL(context_, capture_task_runner()) |
| 125 .Times(AnyNumber()) |
| 126 .WillRepeatedly(Return(ui_task_runner_.get())); |
| 127 EXPECT_CALL(context_, encode_task_runner()) |
| 128 .Times(AnyNumber()) |
| 129 .WillRepeatedly(Return(ui_task_runner_.get())); |
| 130 EXPECT_CALL(context_, network_task_runner()) |
| 131 .Times(AnyNumber()) |
| 132 .WillRepeatedly(Return(ui_task_runner_.get())); |
| 133 |
| 121 desktop_environment_factory_.reset(new MockDesktopEnvironmentFactory()); | 134 desktop_environment_factory_.reset(new MockDesktopEnvironmentFactory()); |
| 122 EXPECT_CALL(*desktop_environment_factory_, CreatePtr(_)) | 135 EXPECT_CALL(*desktop_environment_factory_, CreatePtr(_)) |
| 123 .Times(AnyNumber()) | 136 .Times(AnyNumber()) |
| 124 .WillRepeatedly(Invoke(this, | 137 .WillRepeatedly(Invoke(this, |
| 125 &ChromotingHostTest::CreateDesktopEnvironment)); | 138 &ChromotingHostTest::CreateDesktopEnvironment)); |
| 126 | 139 |
| 127 session_manager_ = new protocol::MockSessionManager(); | 140 session_manager_ = new protocol::MockSessionManager(); |
| 128 | 141 |
| 129 host_ = new ChromotingHost( | 142 host_ = new ChromotingHost( |
| 130 &signal_strategy_, | 143 &signal_strategy_, |
| 131 desktop_environment_factory_.get(), | 144 desktop_environment_factory_.get(), |
| 132 scoped_ptr<protocol::SessionManager>(session_manager_), | 145 scoped_ptr<protocol::SessionManager>(session_manager_), |
| 133 ui_task_runner_, // Audio | 146 context_.audio_task_runner(), |
| 134 ui_task_runner_, // Video capture | 147 context_.capture_task_runner(), |
| 135 ui_task_runner_, // Video encode | 148 context_.encode_task_runner(), |
| 136 ui_task_runner_); // Network | 149 context_.network_task_runner()); |
| 137 host_->AddStatusObserver(&host_status_observer_); | 150 host_->AddStatusObserver(&host_status_observer_); |
| 138 | 151 |
| 139 disconnect_window_ = new MockDisconnectWindow(); | 152 disconnect_window_ = new MockDisconnectWindow(); |
| 140 continue_window_ = new MockContinueWindow(); | 153 continue_window_ = new MockContinueWindow(); |
| 141 local_input_monitor_ = new MockLocalInputMonitor(); | 154 local_input_monitor_ = new MockLocalInputMonitor(); |
| 142 it2me_host_user_interface_.reset( | 155 it2me_host_user_interface_.reset( |
| 143 new MockIt2MeHostUserInterface(ui_task_runner_, ui_task_runner_)); | 156 new MockIt2MeHostUserInterface(context_.network_task_runner(), |
| 157 context_.ui_task_runner())); |
| 144 it2me_host_user_interface_->InitFrom( | 158 it2me_host_user_interface_->InitFrom( |
| 145 scoped_ptr<DisconnectWindow>(disconnect_window_), | 159 scoped_ptr<DisconnectWindow>(disconnect_window_), |
| 146 scoped_ptr<ContinueWindow>(continue_window_), | 160 scoped_ptr<ContinueWindow>(continue_window_), |
| 147 scoped_ptr<LocalInputMonitor>(local_input_monitor_)); | 161 scoped_ptr<LocalInputMonitor>(local_input_monitor_)); |
| 148 | 162 |
| 149 it2me_host_user_interface_->Start( | 163 it2me_host_user_interface_->Start( |
| 150 host_, base::Bind(&ChromotingHost::Shutdown, host_, base::Closure())); | 164 host_, base::Bind(&ChromotingHost::Shutdown, host_, base::Closure())); |
| 151 | 165 |
| 152 xmpp_login_ = "host@domain"; | 166 xmpp_login_ = "host@domain"; |
| 153 session1_ = new MockSession(); | 167 session1_ = new MockSession(); |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 229 | 243 |
| 230 // Helper method to pretend a client is connected to ChromotingHost. | 244 // Helper method to pretend a client is connected to ChromotingHost. |
| 231 void SimulateClientConnection(int connection_index, bool authenticate, | 245 void SimulateClientConnection(int connection_index, bool authenticate, |
| 232 bool reject) { | 246 bool reject) { |
| 233 scoped_ptr<protocol::ConnectionToClient> connection = | 247 scoped_ptr<protocol::ConnectionToClient> connection = |
| 234 ((connection_index == 0) ? owned_connection1_ : owned_connection2_). | 248 ((connection_index == 0) ? owned_connection1_ : owned_connection2_). |
| 235 PassAs<protocol::ConnectionToClient>(); | 249 PassAs<protocol::ConnectionToClient>(); |
| 236 protocol::ConnectionToClient* connection_ptr = connection.get(); | 250 protocol::ConnectionToClient* connection_ptr = connection.get(); |
| 237 scoped_refptr<ClientSession> client = new ClientSession( | 251 scoped_refptr<ClientSession> client = new ClientSession( |
| 238 host_.get(), | 252 host_.get(), |
| 239 ui_task_runner_, // Audio | 253 context_.audio_task_runner(), |
| 240 ui_task_runner_, // Video capture | 254 context_.capture_task_runner(), |
| 241 ui_task_runner_, // Video encode | 255 context_.encode_task_runner(), |
| 242 ui_task_runner_, // Network | 256 context_.network_task_runner(), |
| 243 connection.Pass(), | 257 connection.Pass(), |
| 244 desktop_environment_factory_.get(), | 258 desktop_environment_factory_.get(), |
| 245 base::TimeDelta()); | 259 base::TimeDelta()); |
| 246 connection_ptr->set_host_stub(client); | 260 connection_ptr->set_host_stub(client); |
| 247 connection_ptr->set_input_stub( | 261 connection_ptr->set_input_stub( |
| 248 client->desktop_environment()->event_executor()); | 262 client->desktop_environment()->event_executor()); |
| 249 | 263 |
| 250 ui_task_runner_->PostTask( | 264 context_.network_task_runner()->PostTask( |
| 251 FROM_HERE, base::Bind(&ChromotingHostTest::AddClientToHost, | 265 FROM_HERE, base::Bind(&ChromotingHostTest::AddClientToHost, |
| 252 host_, client)); | 266 host_, client)); |
| 253 | 267 |
| 254 if (authenticate) { | 268 if (authenticate) { |
| 255 ui_task_runner_->PostTask( | 269 context_.network_task_runner()->PostTask( |
| 256 FROM_HERE, base::Bind(&ClientSession::OnConnectionAuthenticated, | 270 FROM_HERE, base::Bind(&ClientSession::OnConnectionAuthenticated, |
| 257 client, connection_ptr)); | 271 client, connection_ptr)); |
| 258 if (!reject) { | 272 if (!reject) { |
| 259 ui_task_runner_->PostTask( | 273 context_.network_task_runner()->PostTask( |
| 260 FROM_HERE, | 274 FROM_HERE, |
| 261 base::Bind(&ClientSession::OnConnectionChannelsConnected, | 275 base::Bind(&ClientSession::OnConnectionChannelsConnected, |
| 262 client, connection_ptr)); | 276 client, connection_ptr)); |
| 263 } | 277 } |
| 264 } else { | 278 } else { |
| 265 ui_task_runner_->PostTask( | 279 context_.network_task_runner()->PostTask( |
| 266 FROM_HERE, base::Bind(&ClientSession::OnConnectionClosed, | 280 FROM_HERE, base::Bind(&ClientSession::OnConnectionClosed, |
| 267 client, connection_ptr, | 281 client, connection_ptr, |
| 268 protocol::AUTHENTICATION_FAILED)); | 282 protocol::AUTHENTICATION_FAILED)); |
| 269 } | 283 } |
| 270 | 284 |
| 271 get_client(connection_index) = client; | 285 get_client(connection_index) = client; |
| 272 } | 286 } |
| 273 | 287 |
| 274 virtual void TearDown() OVERRIDE { | 288 virtual void TearDown() OVERRIDE { |
| 275 // Make sure that the host has been properly deleted. | 289 // Make sure that the host has been properly deleted. |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 422 EXPECT_CALL(host_status_observer_, OnClientDisconnected(session_jid)) | 436 EXPECT_CALL(host_status_observer_, OnClientDisconnected(session_jid)) |
| 423 .After(after) | 437 .After(after) |
| 424 .WillOnce(action) | 438 .WillOnce(action) |
| 425 .RetiresOnSaturation(); | 439 .RetiresOnSaturation(); |
| 426 } | 440 } |
| 427 } | 441 } |
| 428 | 442 |
| 429 protected: | 443 protected: |
| 430 MessageLoop message_loop_; | 444 MessageLoop message_loop_; |
| 431 scoped_refptr<AutoThreadTaskRunner> ui_task_runner_; | 445 scoped_refptr<AutoThreadTaskRunner> ui_task_runner_; |
| 446 MockChromotingHostContext context_; |
| 432 MockConnectionToClientEventHandler handler_; | 447 MockConnectionToClientEventHandler handler_; |
| 433 MockSignalStrategy signal_strategy_; | 448 MockSignalStrategy signal_strategy_; |
| 434 scoped_ptr<MockDesktopEnvironmentFactory> desktop_environment_factory_; | 449 scoped_ptr<MockDesktopEnvironmentFactory> desktop_environment_factory_; |
| 435 scoped_ptr<MockIt2MeHostUserInterface> it2me_host_user_interface_; | 450 scoped_ptr<MockIt2MeHostUserInterface> it2me_host_user_interface_; |
| 436 scoped_refptr<ChromotingHost> host_; | 451 scoped_refptr<ChromotingHost> host_; |
| 437 MockHostStatusObserver host_status_observer_; | 452 MockHostStatusObserver host_status_observer_; |
| 438 protocol::MockSessionManager* session_manager_; | 453 protocol::MockSessionManager* session_manager_; |
| 439 std::string xmpp_login_; | 454 std::string xmpp_login_; |
| 440 MockConnectionToClient* connection1_; | 455 MockConnectionToClient* connection1_; |
| 441 scoped_ptr<MockConnectionToClient> owned_connection1_; | 456 scoped_ptr<MockConnectionToClient> owned_connection1_; |
| (...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 689 ExpectClientDisconnected(0, true, video_packet_sent, | 704 ExpectClientDisconnected(0, true, video_packet_sent, |
| 690 InvokeWithoutArgs(this, &ChromotingHostTest::ShutdownHost)); | 705 InvokeWithoutArgs(this, &ChromotingHostTest::ShutdownHost)); |
| 691 EXPECT_CALL(host_status_observer_, OnShutdown()); | 706 EXPECT_CALL(host_status_observer_, OnShutdown()); |
| 692 | 707 |
| 693 host_->Start(xmpp_login_); | 708 host_->Start(xmpp_login_); |
| 694 SimulateClientConnection(0, true, false); | 709 SimulateClientConnection(0, true, false); |
| 695 message_loop_.Run(); | 710 message_loop_.Run(); |
| 696 } | 711 } |
| 697 | 712 |
| 698 } // namespace remoting | 713 } // namespace remoting |
| OLD | NEW |