| 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/location.h" | 7 #include "base/location.h" |
| 8 #include "base/memory/ref_counted.h" | 8 #include "base/memory/ref_counted.h" |
| 9 #include "base/process.h" | 9 #include "base/process.h" |
| 10 #include "ipc/ipc_message.h" | 10 #include "ipc/ipc_message.h" |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 49 class MockDaemonProcess : public DaemonProcess { | 49 class MockDaemonProcess : public DaemonProcess { |
| 50 public: | 50 public: |
| 51 MockDaemonProcess( | 51 MockDaemonProcess( |
| 52 scoped_refptr<AutoThreadTaskRunner> caller_task_runner, | 52 scoped_refptr<AutoThreadTaskRunner> caller_task_runner, |
| 53 scoped_refptr<AutoThreadTaskRunner> io_task_runner, | 53 scoped_refptr<AutoThreadTaskRunner> io_task_runner, |
| 54 const base::Closure& stopped_callback); | 54 const base::Closure& stopped_callback); |
| 55 virtual ~MockDaemonProcess(); | 55 virtual ~MockDaemonProcess(); |
| 56 | 56 |
| 57 virtual scoped_ptr<DesktopSession> DoCreateDesktopSession( | 57 virtual scoped_ptr<DesktopSession> DoCreateDesktopSession( |
| 58 int terminal_id, | 58 int terminal_id, |
| 59 const DesktopSessionParams& params, | 59 const ScreenResolution& resolution, |
| 60 bool virtual_terminal) OVERRIDE; | 60 bool virtual_terminal) OVERRIDE; |
| 61 | 61 |
| 62 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; | 62 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; |
| 63 virtual void SendToNetwork(IPC::Message* message) OVERRIDE; | 63 virtual void SendToNetwork(IPC::Message* message) OVERRIDE; |
| 64 | 64 |
| 65 MOCK_METHOD1(Received, void(const IPC::Message&)); | 65 MOCK_METHOD1(Received, void(const IPC::Message&)); |
| 66 MOCK_METHOD1(Sent, void(const IPC::Message&)); | 66 MOCK_METHOD1(Sent, void(const IPC::Message&)); |
| 67 | 67 |
| 68 MOCK_METHOD3(OnDesktopSessionAgentAttached, | 68 MOCK_METHOD3(OnDesktopSessionAgentAttached, |
| 69 bool(int, base::ProcessHandle, IPC::PlatformFileForTransit)); | 69 bool(int, base::ProcessHandle, IPC::PlatformFileForTransit)); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 88 scoped_refptr<AutoThreadTaskRunner> io_task_runner, | 88 scoped_refptr<AutoThreadTaskRunner> io_task_runner, |
| 89 const base::Closure& stopped_callback) | 89 const base::Closure& stopped_callback) |
| 90 : DaemonProcess(caller_task_runner, io_task_runner, stopped_callback) { | 90 : DaemonProcess(caller_task_runner, io_task_runner, stopped_callback) { |
| 91 } | 91 } |
| 92 | 92 |
| 93 MockDaemonProcess::~MockDaemonProcess() { | 93 MockDaemonProcess::~MockDaemonProcess() { |
| 94 } | 94 } |
| 95 | 95 |
| 96 scoped_ptr<DesktopSession> MockDaemonProcess::DoCreateDesktopSession( | 96 scoped_ptr<DesktopSession> MockDaemonProcess::DoCreateDesktopSession( |
| 97 int terminal_id, | 97 int terminal_id, |
| 98 const DesktopSessionParams& params, | 98 const ScreenResolution& resolution, |
| 99 bool virtual_terminal) { | 99 bool virtual_terminal) { |
| 100 return scoped_ptr<DesktopSession>(DoCreateDesktopSessionPtr(terminal_id)); | 100 return scoped_ptr<DesktopSession>(DoCreateDesktopSessionPtr(terminal_id)); |
| 101 } | 101 } |
| 102 | 102 |
| 103 bool MockDaemonProcess::OnMessageReceived(const IPC::Message& message) { | 103 bool MockDaemonProcess::OnMessageReceived(const IPC::Message& message) { |
| 104 // Notify the mock method. | 104 // Notify the mock method. |
| 105 Received(message); | 105 Received(message); |
| 106 | 106 |
| 107 // Call the actual handler. | 107 // Call the actual handler. |
| 108 return DaemonProcess::OnMessageReceived(message); | 108 return DaemonProcess::OnMessageReceived(message); |
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 222 TEST_F(DaemonProcessTest, OpenClose) { | 222 TEST_F(DaemonProcessTest, OpenClose) { |
| 223 InSequence s; | 223 InSequence s; |
| 224 EXPECT_CALL(*daemon_process_, Sent(Message(kMessageConfiguration))); | 224 EXPECT_CALL(*daemon_process_, Sent(Message(kMessageConfiguration))); |
| 225 EXPECT_CALL(*daemon_process_, Received(Message(kMessageConnectTerminal))); | 225 EXPECT_CALL(*daemon_process_, Received(Message(kMessageConnectTerminal))); |
| 226 EXPECT_CALL(*daemon_process_, Received(Message(kMessageDisconnectTerminal))); | 226 EXPECT_CALL(*daemon_process_, Received(Message(kMessageDisconnectTerminal))); |
| 227 EXPECT_CALL(*daemon_process_, Sent(Message(kMessageTerminalDisconnected))); | 227 EXPECT_CALL(*daemon_process_, Sent(Message(kMessageTerminalDisconnected))); |
| 228 | 228 |
| 229 StartDaemonProcess(); | 229 StartDaemonProcess(); |
| 230 | 230 |
| 231 int id = terminal_id_++; | 231 int id = terminal_id_++; |
| 232 DesktopSessionParams params; | 232 ScreenResolution resolution; |
| 233 | 233 |
| 234 EXPECT_TRUE(daemon_process_->OnMessageReceived( | 234 EXPECT_TRUE(daemon_process_->OnMessageReceived( |
| 235 ChromotingNetworkHostMsg_ConnectTerminal(id, params, false))); | 235 ChromotingNetworkHostMsg_ConnectTerminal(id, resolution, false))); |
| 236 EXPECT_EQ(1u, desktop_sessions().size()); | 236 EXPECT_EQ(1u, desktop_sessions().size()); |
| 237 EXPECT_EQ(id, desktop_sessions().front()->id()); | 237 EXPECT_EQ(id, desktop_sessions().front()->id()); |
| 238 | 238 |
| 239 EXPECT_TRUE(daemon_process_->OnMessageReceived( | 239 EXPECT_TRUE(daemon_process_->OnMessageReceived( |
| 240 ChromotingNetworkHostMsg_DisconnectTerminal(id))); | 240 ChromotingNetworkHostMsg_DisconnectTerminal(id))); |
| 241 EXPECT_TRUE(desktop_sessions().empty()); | 241 EXPECT_TRUE(desktop_sessions().empty()); |
| 242 } | 242 } |
| 243 | 243 |
| 244 TEST_F(DaemonProcessTest, CallCloseDesktopSession) { | 244 TEST_F(DaemonProcessTest, CallCloseDesktopSession) { |
| 245 InSequence s; | 245 InSequence s; |
| 246 EXPECT_CALL(*daemon_process_, Sent(Message(kMessageConfiguration))); | 246 EXPECT_CALL(*daemon_process_, Sent(Message(kMessageConfiguration))); |
| 247 EXPECT_CALL(*daemon_process_, Received(Message(kMessageConnectTerminal))); | 247 EXPECT_CALL(*daemon_process_, Received(Message(kMessageConnectTerminal))); |
| 248 EXPECT_CALL(*daemon_process_, Sent(Message(kMessageTerminalDisconnected))); | 248 EXPECT_CALL(*daemon_process_, Sent(Message(kMessageTerminalDisconnected))); |
| 249 | 249 |
| 250 StartDaemonProcess(); | 250 StartDaemonProcess(); |
| 251 | 251 |
| 252 int id = terminal_id_++; | 252 int id = terminal_id_++; |
| 253 DesktopSessionParams params; | 253 ScreenResolution resolution; |
| 254 | 254 |
| 255 EXPECT_TRUE(daemon_process_->OnMessageReceived( | 255 EXPECT_TRUE(daemon_process_->OnMessageReceived( |
| 256 ChromotingNetworkHostMsg_ConnectTerminal(id, params, false))); | 256 ChromotingNetworkHostMsg_ConnectTerminal(id, resolution, false))); |
| 257 EXPECT_EQ(1u, desktop_sessions().size()); | 257 EXPECT_EQ(1u, desktop_sessions().size()); |
| 258 EXPECT_EQ(id, desktop_sessions().front()->id()); | 258 EXPECT_EQ(id, desktop_sessions().front()->id()); |
| 259 | 259 |
| 260 daemon_process_->CloseDesktopSession(id); | 260 daemon_process_->CloseDesktopSession(id); |
| 261 EXPECT_TRUE(desktop_sessions().empty()); | 261 EXPECT_TRUE(desktop_sessions().empty()); |
| 262 } | 262 } |
| 263 | 263 |
| 264 // Sends two CloseDesktopSession messages and expects the second one to be | 264 // Sends two CloseDesktopSession messages and expects the second one to be |
| 265 // ignored. | 265 // ignored. |
| 266 TEST_F(DaemonProcessTest, DoubleDisconnectTerminal) { | 266 TEST_F(DaemonProcessTest, DoubleDisconnectTerminal) { |
| 267 InSequence s; | 267 InSequence s; |
| 268 EXPECT_CALL(*daemon_process_, Sent(Message(kMessageConfiguration))); | 268 EXPECT_CALL(*daemon_process_, Sent(Message(kMessageConfiguration))); |
| 269 EXPECT_CALL(*daemon_process_, Received(Message(kMessageConnectTerminal))); | 269 EXPECT_CALL(*daemon_process_, Received(Message(kMessageConnectTerminal))); |
| 270 EXPECT_CALL(*daemon_process_, Received(Message(kMessageDisconnectTerminal))); | 270 EXPECT_CALL(*daemon_process_, Received(Message(kMessageDisconnectTerminal))); |
| 271 EXPECT_CALL(*daemon_process_, Sent(Message(kMessageTerminalDisconnected))); | 271 EXPECT_CALL(*daemon_process_, Sent(Message(kMessageTerminalDisconnected))); |
| 272 EXPECT_CALL(*daemon_process_, Received(Message(kMessageDisconnectTerminal))); | 272 EXPECT_CALL(*daemon_process_, Received(Message(kMessageDisconnectTerminal))); |
| 273 | 273 |
| 274 StartDaemonProcess(); | 274 StartDaemonProcess(); |
| 275 | 275 |
| 276 int id = terminal_id_++; | 276 int id = terminal_id_++; |
| 277 DesktopSessionParams params; | 277 ScreenResolution resolution; |
| 278 | 278 |
| 279 EXPECT_TRUE(daemon_process_->OnMessageReceived( | 279 EXPECT_TRUE(daemon_process_->OnMessageReceived( |
| 280 ChromotingNetworkHostMsg_ConnectTerminal(id, params, false))); | 280 ChromotingNetworkHostMsg_ConnectTerminal(id, resolution, false))); |
| 281 EXPECT_EQ(1u, desktop_sessions().size()); | 281 EXPECT_EQ(1u, desktop_sessions().size()); |
| 282 EXPECT_EQ(id, desktop_sessions().front()->id()); | 282 EXPECT_EQ(id, desktop_sessions().front()->id()); |
| 283 | 283 |
| 284 EXPECT_TRUE(daemon_process_->OnMessageReceived( | 284 EXPECT_TRUE(daemon_process_->OnMessageReceived( |
| 285 ChromotingNetworkHostMsg_DisconnectTerminal(id))); | 285 ChromotingNetworkHostMsg_DisconnectTerminal(id))); |
| 286 EXPECT_TRUE(desktop_sessions().empty()); | 286 EXPECT_TRUE(desktop_sessions().empty()); |
| 287 | 287 |
| 288 EXPECT_TRUE(daemon_process_->OnMessageReceived( | 288 EXPECT_TRUE(daemon_process_->OnMessageReceived( |
| 289 ChromotingNetworkHostMsg_DisconnectTerminal(id))); | 289 ChromotingNetworkHostMsg_DisconnectTerminal(id))); |
| 290 EXPECT_TRUE(desktop_sessions().empty()); | 290 EXPECT_TRUE(desktop_sessions().empty()); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 319 EXPECT_CALL(*daemon_process_, Received(Message(kMessageConnectTerminal))); | 319 EXPECT_CALL(*daemon_process_, Received(Message(kMessageConnectTerminal))); |
| 320 EXPECT_CALL(*daemon_process_, Received(Message(kMessageConnectTerminal))); | 320 EXPECT_CALL(*daemon_process_, Received(Message(kMessageConnectTerminal))); |
| 321 EXPECT_CALL(*daemon_process_, Sent(Message(kMessageCrash))) | 321 EXPECT_CALL(*daemon_process_, Sent(Message(kMessageCrash))) |
| 322 .WillOnce(InvokeWithoutArgs(this, | 322 .WillOnce(InvokeWithoutArgs(this, |
| 323 &DaemonProcessTest::LaunchNetworkProcess)); | 323 &DaemonProcessTest::LaunchNetworkProcess)); |
| 324 EXPECT_CALL(*daemon_process_, Sent(Message(kMessageConfiguration))); | 324 EXPECT_CALL(*daemon_process_, Sent(Message(kMessageConfiguration))); |
| 325 | 325 |
| 326 StartDaemonProcess(); | 326 StartDaemonProcess(); |
| 327 | 327 |
| 328 int id = terminal_id_++; | 328 int id = terminal_id_++; |
| 329 DesktopSessionParams params; | 329 ScreenResolution resolution; |
| 330 | 330 |
| 331 EXPECT_TRUE(daemon_process_->OnMessageReceived( | 331 EXPECT_TRUE(daemon_process_->OnMessageReceived( |
| 332 ChromotingNetworkHostMsg_ConnectTerminal(id, params, false))); | 332 ChromotingNetworkHostMsg_ConnectTerminal(id, resolution, false))); |
| 333 EXPECT_EQ(1u, desktop_sessions().size()); | 333 EXPECT_EQ(1u, desktop_sessions().size()); |
| 334 EXPECT_EQ(id, desktop_sessions().front()->id()); | 334 EXPECT_EQ(id, desktop_sessions().front()->id()); |
| 335 | 335 |
| 336 EXPECT_TRUE(daemon_process_->OnMessageReceived( | 336 EXPECT_TRUE(daemon_process_->OnMessageReceived( |
| 337 ChromotingNetworkHostMsg_ConnectTerminal(id, params, false))); | 337 ChromotingNetworkHostMsg_ConnectTerminal(id, resolution, false))); |
| 338 EXPECT_TRUE(desktop_sessions().empty()); | 338 EXPECT_TRUE(desktop_sessions().empty()); |
| 339 EXPECT_EQ(0, terminal_id_); | 339 EXPECT_EQ(0, terminal_id_); |
| 340 } | 340 } |
| 341 | 341 |
| 342 } // namespace remoting | 342 } // namespace remoting |
| OLD | NEW |