Index: trunk/src/remoting/host/client_session_unittest.cc |
=================================================================== |
--- trunk/src/remoting/host/client_session_unittest.cc (revision 273673) |
+++ trunk/src/remoting/host/client_session_unittest.cc (working copy) |
@@ -2,24 +2,17 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include <algorithm> |
-#include <string> |
-#include <vector> |
- |
#include "base/message_loop/message_loop.h" |
-#include "base/strings/string_util.h" |
#include "base/test/test_simple_task_runner.h" |
#include "remoting/base/auto_thread_task_runner.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_extension.h" |
#include "remoting/host/host_mock_objects.h" |
#include "remoting/host/screen_capturer_fake.h" |
#include "remoting/protocol/protocol_mock_objects.h" |
#include "testing/gmock/include/gmock/gmock-matchers.h" |
-#include "testing/gmock_mutant.h" |
#include "testing/gtest/include/gtest/gtest.h" |
#include "third_party/webrtc/modules/desktop_capture/desktop_geometry.h" |
#include "third_party/webrtc/modules/desktop_capture/desktop_region.h" |
@@ -38,11 +31,9 @@ |
using testing::_; |
using testing::AnyNumber; |
using testing::AtMost; |
-using testing::CreateFunctor; |
using testing::DeleteArg; |
using testing::DoAll; |
using testing::Expectation; |
-using testing::Invoke; |
using testing::Return; |
using testing::ReturnRef; |
using testing::Sequence; |
@@ -51,8 +42,6 @@ |
namespace { |
-const char kDefaultTestCapability[] = "default"; |
- |
ACTION_P2(InjectClipboardEvent, connection, event) { |
connection->clipboard_stub()->InjectClipboardEvent(event); |
} |
@@ -78,75 +67,8 @@ |
client_session->DeliverClientMessage(message); |
} |
-ACTION_P2(AddHostCapabilities, client_session, capability) { |
- client_session->AddHostCapabilities(capability); |
} |
-// Matches a |protocol::Capabilities| argument against a list of capabilities |
-// formatted as a space-separated string. |
-MATCHER_P(EqCapabilities, expected_capabilities, "") { |
- if (!arg.has_capabilities()) |
- return false; |
- |
- std::vector<std::string> words_args; |
- std::vector<std::string> words_expected; |
- Tokenize(arg.capabilities(), " ", &words_args); |
- Tokenize(expected_capabilities, " ", &words_expected); |
- std::sort(words_args.begin(), words_args.end()); |
- std::sort(words_expected.begin(), words_expected.end()); |
- return words_args == words_expected; |
-} |
- |
-// |HostExtension| implementation that can handle an extension message type and |
-// provide capabilities. |
-class FakeExtension : public HostExtension { |
- public: |
- FakeExtension(const std::string& message_type, |
- const std::string& capabilities); |
- virtual ~FakeExtension(); |
- |
- virtual std::string GetCapabilities() OVERRIDE; |
- virtual scoped_ptr<HostExtensionSession> CreateExtensionSession( |
- ClientSession* client_session) OVERRIDE; |
- |
- bool message_handled() { |
- return message_handled_; |
- } |
- |
- private: |
- class FakeExtensionSession : public HostExtensionSession { |
- public: |
- FakeExtensionSession(FakeExtension* extension); |
- virtual ~FakeExtensionSession(); |
- |
- virtual bool OnExtensionMessage( |
- ClientSession* client_session, |
- const protocol::ExtensionMessage& message) OVERRIDE; |
- |
- private: |
- FakeExtension* extension_; |
- }; |
- |
- std::string message_type_; |
- std::string capabilities_; |
- bool message_handled_; |
-}; |
- |
-typedef std::vector<HostExtension*> HostExtensionList; |
- |
-void CreateExtensionSessions(const HostExtensionList& extensions, |
- ClientSession* client_session) { |
- for (HostExtensionList::const_iterator extension = extensions.begin(); |
- extension != extensions.end(); ++extension) { |
- scoped_ptr<HostExtensionSession> extension_session = |
- (*extension)->CreateExtensionSession(client_session); |
- if (extension_session) |
- client_session->AddExtensionSession(extension_session.Pass()); |
- } |
-} |
- |
-} // namespace |
- |
class ClientSessionTest : public testing::Test { |
public: |
ClientSessionTest() : client_jid_("user@domain/rest-of-jid") {} |
@@ -178,10 +100,6 @@ |
// the input pipe line and starts video capturing. |
void ConnectClientSession(); |
- // Creates expectations to send an extension message and to disconnect |
- // afterwards. |
- void SetSendMessageAndDisconnectExpectation(const std::string& message_type); |
- |
// Invoked when the last reference to the AutoThreadTaskRunner has been |
// released and quits the message loop to finish the test. |
void QuitMainMessageLoop(); |
@@ -213,41 +131,6 @@ |
scoped_ptr<MockDesktopEnvironmentFactory> desktop_environment_factory_; |
}; |
-FakeExtension::FakeExtension(const std::string& message_type, |
- const std::string& capabilities) |
- : message_type_(message_type), |
- capabilities_(capabilities), |
- message_handled_(false) { |
-} |
- |
-FakeExtension::~FakeExtension() {} |
- |
-std::string FakeExtension::GetCapabilities() { |
- return capabilities_; |
-} |
- |
-scoped_ptr<HostExtensionSession> FakeExtension::CreateExtensionSession( |
- ClientSession* client_session) { |
- return scoped_ptr<HostExtensionSession>(new FakeExtensionSession(this)); |
-} |
- |
-FakeExtension::FakeExtensionSession::FakeExtensionSession( |
- FakeExtension* extension) |
- : extension_(extension) { |
-} |
- |
-FakeExtension::FakeExtensionSession::~FakeExtensionSession() {} |
- |
-bool FakeExtension::FakeExtensionSession::OnExtensionMessage( |
- ClientSession* client_session, |
- const protocol::ExtensionMessage& message) { |
- if (message.type() == extension_->message_type_) { |
- extension_->message_handled_ = true; |
- return true; |
- } |
- return false; |
-} |
- |
void ClientSessionTest::SetUp() { |
// Arrange to run |message_loop_| until no components depend on it. |
scoped_refptr<AutoThreadTaskRunner> ui_task_runner = new AutoThreadTaskRunner( |
@@ -297,11 +180,6 @@ |
desktop_environment_factory_.get(), |
base::TimeDelta(), |
NULL)); |
- |
- // By default, client will report the same capabilities as the host. |
- EXPECT_CALL(client_stub_, SetCapabilities(_)) |
- .Times(AtMost(1)) |
- .WillOnce(Invoke(client_session_.get(), &ClientSession::SetCapabilities)); |
} |
void ClientSessionTest::TearDown() { |
@@ -333,8 +211,7 @@ |
EXPECT_CALL(*desktop_environment, CreateVideoCapturerPtr()) |
.WillOnce(Invoke(this, &ClientSessionTest::CreateVideoCapturer)); |
EXPECT_CALL(*desktop_environment, GetCapabilities()) |
- .Times(AtMost(1)) |
- .WillOnce(Return(kDefaultTestCapability)); |
+ .Times(AtMost(1)); |
EXPECT_CALL(*desktop_environment, SetCapabilities(_)) |
.Times(AtMost(1)); |
@@ -355,23 +232,6 @@ |
client_session_->OnConnectionChannelsConnected(client_session_->connection()); |
} |
-void ClientSessionTest::SetSendMessageAndDisconnectExpectation( |
- const std::string& message_type) { |
- protocol::ExtensionMessage message; |
- message.set_type(message_type); |
- message.set_data("data"); |
- |
- Expectation authenticated = |
- EXPECT_CALL(session_event_handler_, OnSessionAuthenticated(_)) |
- .WillOnce(Return(true)); |
- EXPECT_CALL(session_event_handler_, OnSessionChannelsConnected(_)) |
- .After(authenticated) |
- .WillOnce(DoAll( |
- DeliverClientMessage(client_session_.get(), message), |
- InvokeWithoutArgs(this, &ClientSessionTest::DisconnectClientSession), |
- InvokeWithoutArgs(this, &ClientSessionTest::StopClientSession))); |
-} |
- |
void ClientSessionTest::QuitMainMessageLoop() { |
message_loop_.PostTask(FROM_HERE, base::MessageLoop::QuitClosure()); |
} |
@@ -739,63 +599,4 @@ |
message_loop_.Run(); |
} |
-// Verifies that messages can be handled by extensions. |
-TEST_F(ClientSessionTest, ExtensionMessages_MessageHandled) { |
- FakeExtension extension1("ext1", "cap1"); |
- FakeExtension extension2("ext2", "cap2"); |
- FakeExtension extension3("ext3", "cap3"); |
- HostExtensionList extensions; |
- extensions.push_back(&extension1); |
- extensions.push_back(&extension2); |
- extensions.push_back(&extension3); |
- |
- EXPECT_CALL(session_event_handler_, OnSessionClientCapabilities(_)) |
- .WillOnce(Invoke(CreateFunctor(&CreateExtensionSessions, extensions))); |
- |
- SetSendMessageAndDisconnectExpectation("ext2"); |
- ConnectClientSession(); |
- message_loop_.Run(); |
- |
- EXPECT_FALSE(extension1.message_handled()); |
- EXPECT_TRUE(extension2.message_handled()); |
- EXPECT_FALSE(extension3.message_handled()); |
-} |
- |
-// Verifies that extension messages not handled by extensions don't result in a |
-// crash. |
-TEST_F(ClientSessionTest, ExtensionMessages_MessageNotHandled) { |
- FakeExtension extension1("ext1", "cap1"); |
- HostExtensionList extensions; |
- extensions.push_back(&extension1); |
- |
- EXPECT_CALL(session_event_handler_, OnSessionClientCapabilities(_)) |
- .WillOnce(Invoke(CreateFunctor(&CreateExtensionSessions, extensions))); |
- |
- SetSendMessageAndDisconnectExpectation("extX"); |
- ConnectClientSession(); |
- message_loop_.Run(); |
- |
- EXPECT_FALSE(extension1.message_handled()); |
-} |
- |
-TEST_F(ClientSessionTest, ReportCapabilities) { |
- Expectation authenticated = |
- EXPECT_CALL(session_event_handler_, OnSessionAuthenticated(_)) |
- .WillOnce(DoAll( |
- AddHostCapabilities(client_session_.get(), "capX capZ"), |
- AddHostCapabilities(client_session_.get(), ""), |
- AddHostCapabilities(client_session_.get(), "capY"), |
- Return(true))); |
- EXPECT_CALL(client_stub_, |
- SetCapabilities(EqCapabilities("capX capY capZ default"))); |
- EXPECT_CALL(session_event_handler_, OnSessionChannelsConnected(_)) |
- .After(authenticated) |
- .WillOnce(DoAll( |
- InvokeWithoutArgs(this, &ClientSessionTest::DisconnectClientSession), |
- InvokeWithoutArgs(this, &ClientSessionTest::StopClientSession))); |
- |
- ConnectClientSession(); |
- message_loop_.Run(); |
-} |
- |
} // namespace remoting |