| Index: remoting/host/client_session_unittest.cc
|
| diff --git a/remoting/host/client_session_unittest.cc b/remoting/host/client_session_unittest.cc
|
| index bf54230d2223fb3f12d4ce38c97c22d4d0d1a8d5..356cd11548970b8b7e5f1d23ff9dc8db5160d5f7 100644
|
| --- a/remoting/host/client_session_unittest.cc
|
| +++ b/remoting/host/client_session_unittest.cc
|
| @@ -4,7 +4,9 @@
|
|
|
| #include "base/message_loop.h"
|
| #include "remoting/base/constants.h"
|
| +#include "remoting/host/audio_capturer.h"
|
| #include "remoting/host/client_session.h"
|
| +#include "remoting/host/desktop_environment.h"
|
| #include "remoting/host/host_mock_objects.h"
|
| #include "remoting/protocol/protocol_mock_objects.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| @@ -17,8 +19,10 @@ using protocol::MockConnectionToClientEventHandler;
|
| using protocol::MockHostStub;
|
| using protocol::MockInputStub;
|
| using protocol::MockSession;
|
| +using protocol::SessionConfig;
|
|
|
| using testing::_;
|
| +using testing::AnyNumber;
|
| using testing::DeleteArg;
|
| using testing::InSequence;
|
| using testing::Return;
|
| @@ -29,28 +33,67 @@ class ClientSessionTest : public testing::Test {
|
| ClientSessionTest() {}
|
|
|
| virtual void SetUp() OVERRIDE {
|
| + message_loop_proxy_ = base::MessageLoopProxy::current();
|
| +
|
| + EXPECT_CALL(context_, ui_task_runner())
|
| + .Times(AnyNumber())
|
| + .WillRepeatedly(Return(message_loop_proxy_.get()));
|
| + EXPECT_CALL(context_, capture_task_runner())
|
| + .Times(AnyNumber())
|
| + .WillRepeatedly(Return(message_loop_proxy_.get()));
|
| + EXPECT_CALL(context_, encode_task_runner())
|
| + .Times(AnyNumber())
|
| + .WillRepeatedly(Return(message_loop_proxy_.get()));
|
| + EXPECT_CALL(context_, network_task_runner())
|
| + .Times(AnyNumber())
|
| + .WillRepeatedly(Return(message_loop_proxy_.get()));
|
| +
|
| client_jid_ = "user@domain/rest-of-jid";
|
|
|
| + event_executor_ = new MockEventExecutor();
|
| + EXPECT_CALL(*event_executor_, StartPtr(_));
|
| + EXPECT_CALL(*event_executor_, StopAndDeleteMock());
|
| +
|
| + capturer_ = new MockVideoFrameCapturer();
|
| + EXPECT_CALL(*capturer_, Start(_));
|
| + EXPECT_CALL(*capturer_, Stop());
|
| + EXPECT_CALL(*capturer_, InvalidateRegion(_)).Times(AnyNumber());
|
| + EXPECT_CALL(*capturer_, CaptureInvalidRegion(_)).Times(AnyNumber());
|
| +
|
| + scoped_ptr<DesktopEnvironment> desktop_environment(new DesktopEnvironment(
|
| + scoped_ptr<AudioCapturer>(NULL),
|
| + scoped_ptr<EventExecutor>(event_executor_),
|
| + scoped_ptr<VideoFrameCapturer>(capturer_)));
|
| +
|
| // Set up a large default screen size that won't affect most tests.
|
| default_screen_size_.set(1000, 1000);
|
| - EXPECT_CALL(capturer_, size_most_recent())
|
| + EXPECT_CALL(*capturer_, size_most_recent())
|
| .WillRepeatedly(ReturnRef(default_screen_size_));
|
|
|
| + session_config_ = SessionConfig::GetDefault();
|
| +
|
| protocol::MockSession* session = new MockSession();
|
| + EXPECT_CALL(*session, config()).WillRepeatedly(ReturnRef(session_config_));
|
| EXPECT_CALL(*session, jid()).WillRepeatedly(ReturnRef(client_jid_));
|
| EXPECT_CALL(*session, SetEventHandler(_));
|
| EXPECT_CALL(*session, Close());
|
| scoped_ptr<protocol::ConnectionToClient> connection(
|
| new protocol::ConnectionToClient(session));
|
| connection_ = connection.get();
|
| +
|
| client_session_.reset(new ClientSession(
|
| - &session_event_handler_, connection.Pass(),
|
| - &host_clipboard_stub_, &host_input_stub_, &capturer_,
|
| + &session_event_handler_,
|
| + context_.capture_task_runner(),
|
| + context_.encode_task_runner(),
|
| + context_.network_task_runner(),
|
| + connection.Pass(),
|
| + desktop_environment.Pass(),
|
| base::TimeDelta()));
|
| }
|
|
|
| virtual void TearDown() OVERRIDE {
|
| - client_session_.reset();
|
| + // MockClientSessionEventHandler won't trigger StopAndDelete, so fake it.
|
| + client_session_.release()->StopAndDelete();
|
| // Run message loop before destroying because protocol::Session is
|
| // destroyed asynchronously.
|
| message_loop_.RunAllPending();
|
| @@ -64,15 +107,17 @@ class ClientSessionTest : public testing::Test {
|
| protocol::OK);
|
| }
|
|
|
| + MockChromotingHostContext context_;
|
| + scoped_refptr<base::MessageLoopProxy> message_loop_proxy_;
|
| SkISize default_screen_size_;
|
| MessageLoop message_loop_;
|
| std::string client_jid_;
|
| MockHostStub host_stub_;
|
| - MockClipboardStub host_clipboard_stub_;
|
| - MockInputStub host_input_stub_;
|
| - MockVideoFrameCapturer capturer_;
|
| + MockEventExecutor* event_executor_;
|
| + MockVideoFrameCapturer* capturer_;
|
| MockClientSessionEventHandler session_event_handler_;
|
| scoped_ptr<ClientSession> client_session_;
|
| + SessionConfig session_config_;
|
|
|
| // ClientSession owns |connection_| but tests need it to inject fake events.
|
| protocol::ConnectionToClient* connection_;
|
| @@ -99,7 +144,7 @@ TEST_F(ClientSessionTest, ClipboardStubFilter) {
|
| InSequence s;
|
| EXPECT_CALL(session_event_handler_, OnSessionAuthenticated(_));
|
| EXPECT_CALL(session_event_handler_, OnSessionChannelsConnected(_));
|
| - EXPECT_CALL(host_clipboard_stub_, InjectClipboardEvent(EqualsClipboardEvent(
|
| + EXPECT_CALL(*event_executor_, InjectClipboardEvent(EqualsClipboardEvent(
|
| kMimeTypeTextUtf8, "b")));
|
| EXPECT_CALL(session_event_handler_, OnSessionClosed(_));
|
|
|
| @@ -160,9 +205,9 @@ TEST_F(ClientSessionTest, InputStubFilter) {
|
| InSequence s;
|
| EXPECT_CALL(session_event_handler_, OnSessionAuthenticated(_));
|
| EXPECT_CALL(session_event_handler_, OnSessionChannelsConnected(_));
|
| - EXPECT_CALL(host_input_stub_, InjectKeyEvent(EqualsKeyEvent(2, true)));
|
| - EXPECT_CALL(host_input_stub_, InjectKeyEvent(EqualsKeyEvent(2, false)));
|
| - EXPECT_CALL(host_input_stub_, InjectMouseEvent(EqualsMouseEvent(200, 201)));
|
| + EXPECT_CALL(*event_executor_, InjectKeyEvent(EqualsKeyEvent(2, true)));
|
| + EXPECT_CALL(*event_executor_, InjectKeyEvent(EqualsKeyEvent(2, false)));
|
| + EXPECT_CALL(*event_executor_, InjectMouseEvent(EqualsMouseEvent(200, 201)));
|
| EXPECT_CALL(session_event_handler_, OnSessionClosed(_));
|
|
|
| // These events should not get through to the input stub,
|
| @@ -196,8 +241,8 @@ TEST_F(ClientSessionTest, LocalInputTest) {
|
| InSequence s;
|
| EXPECT_CALL(session_event_handler_, OnSessionAuthenticated(_));
|
| EXPECT_CALL(session_event_handler_, OnSessionChannelsConnected(_));
|
| - EXPECT_CALL(host_input_stub_, InjectMouseEvent(EqualsMouseEvent(100, 101)));
|
| - EXPECT_CALL(host_input_stub_, InjectMouseEvent(EqualsMouseEvent(200, 201)));
|
| + EXPECT_CALL(*event_executor_, InjectMouseEvent(EqualsMouseEvent(100, 101)));
|
| + EXPECT_CALL(*event_executor_, InjectMouseEvent(EqualsMouseEvent(200, 201)));
|
| EXPECT_CALL(session_event_handler_, OnSessionClosed(_));
|
|
|
| client_session_->OnConnectionAuthenticated(client_session_->connection());
|
| @@ -233,13 +278,13 @@ TEST_F(ClientSessionTest, RestoreEventState) {
|
| InSequence s;
|
| EXPECT_CALL(session_event_handler_, OnSessionAuthenticated(_));
|
| EXPECT_CALL(session_event_handler_, OnSessionChannelsConnected(_));
|
| - EXPECT_CALL(host_input_stub_, InjectKeyEvent(EqualsKeyEvent(1, true)));
|
| - EXPECT_CALL(host_input_stub_, InjectKeyEvent(EqualsKeyEvent(2, true)));
|
| - EXPECT_CALL(host_input_stub_, InjectMouseEvent(EqualsMouseButtonEvent(
|
| + EXPECT_CALL(*event_executor_, InjectKeyEvent(EqualsKeyEvent(1, true)));
|
| + EXPECT_CALL(*event_executor_, InjectKeyEvent(EqualsKeyEvent(2, true)));
|
| + EXPECT_CALL(*event_executor_, InjectMouseEvent(EqualsMouseButtonEvent(
|
| protocol::MouseEvent::BUTTON_LEFT, true)));
|
| - EXPECT_CALL(host_input_stub_, InjectKeyEvent(EqualsKeyEvent(1, false)));
|
| - EXPECT_CALL(host_input_stub_, InjectKeyEvent(EqualsKeyEvent(2, false)));
|
| - EXPECT_CALL(host_input_stub_, InjectMouseEvent(EqualsMouseButtonEvent(
|
| + EXPECT_CALL(*event_executor_, InjectKeyEvent(EqualsKeyEvent(1, false)));
|
| + EXPECT_CALL(*event_executor_, InjectKeyEvent(EqualsKeyEvent(2, false)));
|
| + EXPECT_CALL(*event_executor_, InjectMouseEvent(EqualsMouseButtonEvent(
|
| protocol::MouseEvent::BUTTON_LEFT, false)));
|
| EXPECT_CALL(session_event_handler_, OnSessionClosed(_));
|
|
|
| @@ -255,7 +300,7 @@ TEST_F(ClientSessionTest, RestoreEventState) {
|
|
|
| TEST_F(ClientSessionTest, ClampMouseEvents) {
|
| SkISize screen(SkISize::Make(200, 100));
|
| - EXPECT_CALL(capturer_, size_most_recent())
|
| + EXPECT_CALL(*capturer_, size_most_recent())
|
| .WillRepeatedly(ReturnRef(screen));
|
|
|
| EXPECT_CALL(session_event_handler_, OnSessionAuthenticated(_));
|
| @@ -275,7 +320,7 @@ TEST_F(ClientSessionTest, ClampMouseEvents) {
|
| for (int i = 0; i < 3; i++) {
|
| event.set_x(input_x[i]);
|
| event.set_y(input_y[j]);
|
| - EXPECT_CALL(host_input_stub_, InjectMouseEvent(EqualsMouseEvent(
|
| + EXPECT_CALL(*event_executor_, InjectMouseEvent(EqualsMouseEvent(
|
| expected_x[i], expected_y[j])));
|
| connection_->input_stub()->InjectMouseEvent(event);
|
| }
|
|
|