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

Unified Diff: remoting/host/chromoting_host_unittest.cc

Issue 8495035: Make ConnectionToClient and ClientSession not ref-counted. (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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « remoting/host/chromoting_host.cc ('k') | remoting/host/client_session.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/host/chromoting_host_unittest.cc
diff --git a/remoting/host/chromoting_host_unittest.cc b/remoting/host/chromoting_host_unittest.cc
index 856976189a60eb3cb7f8a697b2ce5a907f00dfc6..ad2bca8a4e60b526878bdebc71acfa5cbcc1d3fd 100644
--- a/remoting/host/chromoting_host_unittest.cc
+++ b/remoting/host/chromoting_host_unittest.cc
@@ -33,6 +33,7 @@ using testing::CreateFunctor;
using testing::DeleteArg;
using testing::DoAll;
using testing::InSequence;
+using testing::InvokeArgument;
using testing::InvokeWithoutArgs;
using testing::Return;
using testing::ReturnRef;
@@ -105,8 +106,8 @@ class ChromotingHostTest : public testing::Test {
session2_ = new MockSession();
session_config_ = SessionConfig::GetDefault();
session_jid_ = "user@domain/rest-of-jid";
- session2_jid_ = "user2@domain/rest-of-jid";
session_config2_ = SessionConfig::GetDefault();
+ session2_jid_ = "user2@domain/rest-of-jid";
EXPECT_CALL(*session_, jid())
.WillRepeatedly(ReturnRef(session_jid_));
EXPECT_CALL(*session2_, jid())
@@ -119,61 +120,65 @@ class ChromotingHostTest : public testing::Test {
.WillRepeatedly(ReturnRef(session_config_));
EXPECT_CALL(*session2_, config())
.WillRepeatedly(ReturnRef(session_config2_));
+ EXPECT_CALL(*session_, Close())
+ .Times(AnyNumber());
+ EXPECT_CALL(*session2_, Close())
+ .Times(AnyNumber());
- connection_ = new MockConnectionToClient(
- session_, &host_stub_, event_executor_);
- connection2_ = new MockConnectionToClient(
- session2_, &host_stub2_, &event_executor2_);
+ owned_connection_.reset(new MockConnectionToClient(
+ session_, &host_stub_, event_executor_));
+ connection_ = owned_connection_.get();
+ owned_connection2_.reset(new MockConnectionToClient(
+ session2_, &host_stub2_, &event_executor2_));
+ connection2_ = owned_connection2_.get();
ON_CALL(video_stub_, ProcessVideoPacket(_, _))
.WillByDefault(DeleteArg<0>());
ON_CALL(video_stub2_, ProcessVideoPacket(_, _))
.WillByDefault(DeleteArg<0>());
- ON_CALL(*connection_.get(), video_stub())
+ ON_CALL(*connection_, video_stub())
.WillByDefault(Return(&video_stub_));
- ON_CALL(*connection_.get(), client_stub())
+ ON_CALL(*connection_, client_stub())
.WillByDefault(Return(&client_stub_));
- ON_CALL(*connection_.get(), session())
+ ON_CALL(*connection_, session())
.WillByDefault(Return(session_));
- ON_CALL(*connection2_.get(), video_stub())
+ ON_CALL(*connection2_, video_stub())
.WillByDefault(Return(&video_stub2_));
- ON_CALL(*connection2_.get(), client_stub())
+ ON_CALL(*connection2_, client_stub())
.WillByDefault(Return(&client_stub2_));
- ON_CALL(*connection2_.get(), session())
+ ON_CALL(*connection2_, session())
.WillByDefault(Return(session2_));
- EXPECT_CALL(*connection_.get(), video_stub())
+ EXPECT_CALL(*connection_, video_stub())
.Times(AnyNumber());
- EXPECT_CALL(*connection_.get(), client_stub())
+ EXPECT_CALL(*connection_, client_stub())
.Times(AnyNumber());
- EXPECT_CALL(*connection_.get(), session())
+ EXPECT_CALL(*connection_, session())
.Times(AnyNumber());
- EXPECT_CALL(*connection2_.get(), video_stub())
+ EXPECT_CALL(*connection2_, video_stub())
.Times(AnyNumber());
- EXPECT_CALL(*connection2_.get(), client_stub())
+ EXPECT_CALL(*connection2_, client_stub())
.Times(AnyNumber());
- EXPECT_CALL(*connection2_.get(), session())
+ EXPECT_CALL(*connection2_, session())
.Times(AnyNumber());
}
virtual void TearDown() OVERRIDE {
- connection_ = NULL;
- client_ = NULL;
- connection2_ = NULL;
- client2_ = NULL;
+ owned_connection_.reset();
+ owned_connection2_.reset();
host_ = NULL;
+ // Run message loop before destroying because protocol::Session is
+ // destroyed asynchronously.
message_loop_.RunAllPending();
}
// Helper method to pretend a client is connected to ChromotingHost.
void SimulateClientConnection(int connection_index, bool authenticate) {
- scoped_refptr<protocol::ConnectionToClient> connection =
- (connection_index == 0) ? connection_ : connection2_;
- scoped_refptr<ClientSession> client = new ClientSession(
- host_.get(),
- connection,
- event_executor_,
+ protocol::ConnectionToClient* connection = (connection_index == 0) ?
+ owned_connection_.release() : owned_connection2_.release();
+ ClientSession* client = new ClientSession(
+ host_.get(), connection, event_executor_,
desktop_environment_->capturer());
- connection->set_host_stub(client.get());
+ connection->set_host_stub(client);
context_.network_message_loop()->PostTask(
FROM_HERE, base::Bind(&ChromotingHostTest::AddClientToHost,
@@ -181,7 +186,7 @@ class ChromotingHostTest : public testing::Test {
if (authenticate) {
context_.network_message_loop()->PostTask(
FROM_HERE, base::Bind(&ClientSession::OnConnectionOpened,
- client.get(), connection));
+ base::Unretained(client), connection));
}
if (connection_index == 0) {
@@ -197,7 +202,7 @@ class ChromotingHostTest : public testing::Test {
}
static void AddClientToHost(scoped_refptr<ChromotingHost> host,
- scoped_refptr<ClientSession> session) {
+ ClientSession* session) {
host->clients_.push_back(session);
}
@@ -215,16 +220,18 @@ class ChromotingHostTest : public testing::Test {
scoped_refptr<ChromotingHost> host_;
scoped_refptr<InMemoryHostConfig> config_;
MockChromotingHostContext context_;
- scoped_refptr<MockConnectionToClient> connection_;
- scoped_refptr<ClientSession> client_;
+ MockConnectionToClient* connection_;
+ scoped_ptr<MockConnectionToClient> owned_connection_;
+ ClientSession* client_;
std::string session_jid_;
MockSession* session_; // Owned by |connection_|.
SessionConfig session_config_;
MockVideoStub video_stub_;
MockClientStub client_stub_;
MockHostStub host_stub_;
- scoped_refptr<MockConnectionToClient> connection2_;
- scoped_refptr<ClientSession> client2_;
+ MockConnectionToClient* connection2_;
+ scoped_ptr<MockConnectionToClient> owned_connection2_;
+ ClientSession* client2_;
std::string session2_jid_;
MockSession* session2_; // Owned by |connection2_|.
SessionConfig session_config2_;
@@ -269,7 +276,7 @@ TEST_F(ChromotingHostTest, DISABLED_Connect) {
.RetiresOnSaturation();
EXPECT_CALL(video_stub_, ProcessVideoPacket(_, _))
.Times(AnyNumber());
- EXPECT_CALL(*connection_.get(), Disconnect())
+ EXPECT_CALL(*connection_, Disconnect())
.RetiresOnSaturation();
}
SimulateClientConnection(0, true);
@@ -302,7 +309,7 @@ TEST_F(ChromotingHostTest, DISABLED_Reconnect) {
}
// If Disconnect() is called we can break the main message loop.
- EXPECT_CALL(*connection_.get(), Disconnect())
+ EXPECT_CALL(*connection_, Disconnect())
.WillOnce(QuitMainMessageLoop(&message_loop_))
.RetiresOnSaturation();
@@ -325,7 +332,7 @@ TEST_F(ChromotingHostTest, DISABLED_Reconnect) {
.Times(AnyNumber());
}
- EXPECT_CALL(*connection_.get(), Disconnect())
+ EXPECT_CALL(*connection_, Disconnect())
.RetiresOnSaturation();
SimulateClientConnection(0, true);
@@ -368,9 +375,9 @@ TEST_F(ChromotingHostTest, DISABLED_ConnectTwice) {
.Times(AnyNumber());
}
- EXPECT_CALL(*connection_.get(), Disconnect())
+ EXPECT_CALL(*connection_, Disconnect())
.RetiresOnSaturation();
- EXPECT_CALL(*connection2_.get(), Disconnect())
+ EXPECT_CALL(*connection2_, Disconnect())
.RetiresOnSaturation();
SimulateClientConnection(0, true);
@@ -432,6 +439,20 @@ TEST_F(ChromotingHostTest, CurtainModeFailSecond) {
SimulateClientConnection(0, true);
message_loop_.Run();
+
+ // Curtain is removed when there are no clients connected.
+ EXPECT_CALL(*curtain_, EnableCurtainMode(false))
+ .Times(AtLeast(1));
+ EXPECT_CALL(*continue_window_, Hide())
+ .Times(AtLeast(1));
+ EXPECT_CALL(*disconnect_window_, Hide())
+ .Times(AtLeast(1));
+ EXPECT_CALL(*local_input_monitor_, Stop())
+ .Times(AtLeast(1));
+
+ // Close connections before destroying the host.
+ client_->OnConnectionClosed(connection_);
+ client2_->OnConnectionClosed(connection2_);
}
ACTION_P(SetBool, var) { *var = true; }
@@ -462,7 +483,7 @@ TEST_F(ChromotingHostTest, CurtainModeIT2Me) {
InvokeWithoutArgs(this, &ChromotingHostTest::ShutdownHost),
RunDoneTask()))
.RetiresOnSaturation();
- EXPECT_CALL(*connection_.get(), Disconnect())
+ EXPECT_CALL(*connection_, Disconnect())
.InSequence(s1, s2)
.WillOnce(InvokeWithoutArgs(
this, &ChromotingHostTest::RemoveClientSession))
« no previous file with comments | « remoting/host/chromoting_host.cc ('k') | remoting/host/client_session.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698