| Index: remoting/host/client_session_unittest.cc
|
| diff --git a/remoting/host/client_session_unittest.cc b/remoting/host/client_session_unittest.cc
|
| index 285bf4ad9f39b6f235589c559a4124b28383c0d9..323c43f5db829554a84985d8cc5b080684274709 100644
|
| --- a/remoting/host/client_session_unittest.cc
|
| +++ b/remoting/host/client_session_unittest.cc
|
| @@ -55,9 +55,7 @@ ACTION_P2(LocalMouseMoved, client_session, event) {
|
|
|
| class ClientSessionTest : public testing::Test {
|
| public:
|
| - ClientSessionTest()
|
| - : client_jid_("user@domain/rest-of-jid"),
|
| - event_executor_(NULL) {}
|
| + ClientSessionTest() : client_jid_("user@domain/rest-of-jid") {}
|
|
|
| virtual void SetUp() OVERRIDE;
|
| virtual void TearDown() OVERRIDE;
|
| @@ -65,8 +63,7 @@ class ClientSessionTest : public testing::Test {
|
| // Disconnects the client session.
|
| void DisconnectClientSession();
|
|
|
| - // Asynchronously stops the client session. OnClientStopped() will be called
|
| - // once the client session is fully stopped.
|
| + // Stops and releases the ClientSession, allowing the MessageLoop to quit.
|
| void StopClientSession();
|
|
|
| protected:
|
| @@ -74,6 +71,18 @@ class ClientSessionTest : public testing::Test {
|
| // DesktopEnvironmentFactory::Create().
|
| DesktopEnvironment* CreateDesktopEnvironment();
|
|
|
| + // Returns |event_executor_| created and initialized by SetUp(), to mock
|
| + // DesktopEnvironment::CreateEventExecutor().
|
| + EventExecutor* CreateEventExecutor(
|
| + scoped_refptr<base::SingleThreadTaskRunner> input_task_runner,
|
| + scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner);
|
| +
|
| + // Creates a fake VideoFrameCapturer, to mock
|
| + // DesktopEnvironment::CreateVideoCapturer().
|
| + VideoFrameCapturer* CreateVideoCapturer(
|
| + scoped_refptr<base::SingleThreadTaskRunner> capture_task_runner,
|
| + scoped_refptr<base::SingleThreadTaskRunner> encode_task_runner);
|
| +
|
| // Notifies the client session that the client connection has been
|
| // authenticated and channels have been connected. This effectively enables
|
| // the input pipe line and starts video capturing.
|
| @@ -83,10 +92,6 @@ class ClientSessionTest : public testing::Test {
|
| // released and quits the message loop to finish the test.
|
| void QuitMainMessageLoop();
|
|
|
| - // Releases the ClientSession when it has been fully stopped, allowing
|
| - // the MessageLoop to quit.
|
| - void OnClientStopped();
|
| -
|
| // Message loop passed to |client_session_| to perform all functions on.
|
| MessageLoop message_loop_;
|
|
|
| @@ -106,7 +111,7 @@ class ClientSessionTest : public testing::Test {
|
|
|
| // DesktopEnvironment owns |event_executor_|, but input injection tests need
|
| // to express expectations on it.
|
| - MockEventExecutor* event_executor_;
|
| + scoped_ptr<MockEventExecutor> event_executor_;
|
|
|
| // ClientSession owns |connection_| but tests need it to inject fake events.
|
| MockConnectionToClient* connection_;
|
| @@ -121,12 +126,15 @@ void ClientSessionTest::SetUp() {
|
| base::Bind(&ClientSessionTest::QuitMainMessageLoop,
|
| base::Unretained(this)));
|
|
|
| - desktop_environment_factory_.reset(new MockDesktopEnvironmentFactory());
|
| + desktop_environment_factory_.reset(
|
| + new MockDesktopEnvironmentFactory(ui_task_runner_));
|
| EXPECT_CALL(*desktop_environment_factory_, CreatePtr())
|
| .Times(AnyNumber())
|
| .WillRepeatedly(Invoke(this,
|
| &ClientSessionTest::CreateDesktopEnvironment));
|
|
|
| + event_executor_.reset(new MockEventExecutor());
|
| +
|
| session_config_ = SessionConfig::ForTest();
|
|
|
| // Mock protocol::Session APIs called directly by ClientSession.
|
| @@ -149,9 +157,11 @@ void ClientSessionTest::SetUp() {
|
| client_session_ = new ClientSession(
|
| &session_event_handler_,
|
| ui_task_runner, // Audio thread.
|
| + ui_task_runner, // Input thread.
|
| ui_task_runner, // Capture thread.
|
| ui_task_runner, // Encode thread.
|
| ui_task_runner, // Network thread.
|
| + ui_task_runner, // UI thread.
|
| connection.PassAs<protocol::ConnectionToClient>(),
|
| desktop_environment_factory_.get(),
|
| base::TimeDelta());
|
| @@ -171,18 +181,35 @@ void ClientSessionTest::DisconnectClientSession() {
|
|
|
| void ClientSessionTest::StopClientSession() {
|
| // MockClientSessionEventHandler won't trigger Stop, so fake it.
|
| - client_session_->Stop(base::Bind(
|
| - &ClientSessionTest::OnClientStopped, base::Unretained(this)));
|
| + client_session_->Stop();
|
| + client_session_ = NULL;
|
| +
|
| + desktop_environment_factory_.reset();
|
| }
|
|
|
| DesktopEnvironment* ClientSessionTest::CreateDesktopEnvironment() {
|
| - scoped_ptr<VideoFrameCapturer> video_capturer(new VideoFrameCapturerFake());
|
| + MockDesktopEnvironment* desktop_environment = new MockDesktopEnvironment();
|
| + EXPECT_CALL(*desktop_environment, CreateAudioCapturerPtr(_))
|
| + .Times(0);
|
| + EXPECT_CALL(*desktop_environment, CreateEventExecutorPtr(_, _))
|
| + .WillOnce(Invoke(this, &ClientSessionTest::CreateEventExecutor));
|
| + EXPECT_CALL(*desktop_environment, CreateVideoCapturerPtr(_, _))
|
| + .WillOnce(Invoke(this, &ClientSessionTest::CreateVideoCapturer));
|
| +
|
| + return desktop_environment;
|
| +}
|
| +
|
| +EventExecutor* ClientSessionTest::CreateEventExecutor(
|
| + scoped_refptr<base::SingleThreadTaskRunner> input_task_runner,
|
| + scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner) {
|
| + EXPECT_TRUE(event_executor_);
|
| + return event_executor_.release();
|
| +}
|
|
|
| - EXPECT_TRUE(!event_executor_);
|
| - event_executor_ = new MockEventExecutor();
|
| - return new DesktopEnvironment(scoped_ptr<AudioCapturer>(NULL),
|
| - scoped_ptr<EventExecutor>(event_executor_),
|
| - video_capturer.Pass());
|
| +VideoFrameCapturer* ClientSessionTest::CreateVideoCapturer(
|
| + scoped_refptr<base::SingleThreadTaskRunner> capture_task_runner,
|
| + scoped_refptr<base::SingleThreadTaskRunner> encode_task_runner) {
|
| + return new VideoFrameCapturerFake();
|
| }
|
|
|
| void ClientSessionTest::ConnectClientSession() {
|
| @@ -194,10 +221,6 @@ void ClientSessionTest::QuitMainMessageLoop() {
|
| message_loop_.PostTask(FROM_HERE, MessageLoop::QuitClosure());
|
| }
|
|
|
| -void ClientSessionTest::OnClientStopped() {
|
| - client_session_ = NULL;
|
| -}
|
| -
|
| MATCHER_P2(EqualsClipboardEvent, m, d, "") {
|
| return (strcmp(arg.mime_type().c_str(), m) == 0 &&
|
| memcmp(arg.data().data(), d, arg.data().size()) == 0);
|
|
|