OLD | NEW |
---|---|
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/macros.h" | 5 #include "base/macros.h" |
6 #include "base/memory/ptr_util.h" | |
6 #include "base/strings/string_split.h" | 7 #include "base/strings/string_split.h" |
7 #include "base/strings/string_util.h" | 8 #include "base/strings/string_util.h" |
8 #include "remoting/host/client_session_details.h" | 9 #include "remoting/host/client_session_details.h" |
9 #include "remoting/host/fake_host_extension.h" | 10 #include "remoting/host/fake_host_extension.h" |
10 #include "remoting/host/host_extension_session_manager.h" | 11 #include "remoting/host/host_extension_session_manager.h" |
11 #include "remoting/host/host_mock_objects.h" | 12 #include "remoting/host/host_mock_objects.h" |
12 #include "remoting/proto/control.pb.h" | 13 #include "remoting/proto/control.pb.h" |
13 #include "remoting/protocol/protocol_mock_objects.h" | 14 #include "remoting/protocol/protocol_mock_objects.h" |
14 #include "testing/gtest/include/gtest/gtest.h" | 15 #include "testing/gtest/include/gtest/gtest.h" |
15 | 16 |
16 namespace remoting { | 17 namespace remoting { |
17 | 18 |
18 class HostExtensionSessionManagerTest : public testing::Test { | 19 class HostExtensionSessionManagerTest : public testing::Test { |
19 public: | 20 public: |
20 HostExtensionSessionManagerTest() | 21 HostExtensionSessionManagerTest() { |
21 : extension1_("ext1", "cap1"), | 22 extensions_.push_back(base::MakeUnique<FakeExtension>("ext1", "cap1")); |
22 extension2_("ext2", std::string()), | 23 extensions_.push_back( |
23 extension3_("ext3", "cap3") { | 24 base::MakeUnique<FakeExtension>("ext2", std::string())); |
24 extensions_.push_back(&extension1_); | 25 extensions_.push_back(base::MakeUnique<FakeExtension>("ext3", "cap3")); |
25 extensions_.push_back(&extension2_); | 26 extension1_ = static_cast<FakeExtension*>(extensions_[0].get()); |
26 extensions_.push_back(&extension3_); | 27 extension2_ = static_cast<FakeExtension*>(extensions_[1].get()); |
28 extension3_ = static_cast<FakeExtension*>(extensions_[2].get()); | |
27 } | 29 } |
28 ~HostExtensionSessionManagerTest() override {} | 30 ~HostExtensionSessionManagerTest() override {} |
29 | 31 |
30 protected: | 32 protected: |
31 // Fake HostExtensions for testing. | 33 // Fake HostExtensions for testing. |
32 FakeExtension extension1_; | 34 FakeExtension* extension1_; |
33 FakeExtension extension2_; | 35 FakeExtension* extension2_; |
34 FakeExtension extension3_; | 36 FakeExtension* extension3_; |
Sergey Ulanov
2017/01/10 21:24:54
Please remove these 3 fields and update the tests
Avi (use Gerrit)
2017/01/10 23:57:29
Obviated.
| |
35 HostExtensionSessionManager::HostExtensions extensions_; | 37 HostExtensionSessionManager::HostExtensions extensions_; |
36 | 38 |
37 // Mocks of interfaces provided by ClientSession. | 39 // Mocks of interfaces provided by ClientSession. |
38 MockClientSessionDetails client_session_details_; | 40 MockClientSessionDetails client_session_details_; |
39 protocol::MockClientStub client_stub_; | 41 protocol::MockClientStub client_stub_; |
40 | 42 |
41 DISALLOW_COPY_AND_ASSIGN(HostExtensionSessionManagerTest); | 43 DISALLOW_COPY_AND_ASSIGN(HostExtensionSessionManagerTest); |
42 }; | 44 }; |
43 | 45 |
44 // Verifies that messages are handled by the correct extension. | 46 // Verifies that messages are handled by the correct extension. |
45 TEST_F(HostExtensionSessionManagerTest, ExtensionMessages_MessageHandled) { | 47 TEST_F(HostExtensionSessionManagerTest, ExtensionMessages_MessageHandled) { |
46 HostExtensionSessionManager extension_manager(extensions_, | 48 HostExtensionSessionManager extension_manager(extensions_, |
47 &client_session_details_); | 49 &client_session_details_); |
48 extension_manager.OnNegotiatedCapabilities( | 50 extension_manager.OnNegotiatedCapabilities( |
49 &client_stub_, extension_manager.GetCapabilities()); | 51 &client_stub_, extension_manager.GetCapabilities()); |
50 | 52 |
51 protocol::ExtensionMessage message; | 53 protocol::ExtensionMessage message; |
52 message.set_type("ext2"); | 54 message.set_type("ext2"); |
53 extension_manager.OnExtensionMessage(message); | 55 extension_manager.OnExtensionMessage(message); |
54 | 56 |
55 EXPECT_FALSE(extension1_.has_handled_message()); | 57 EXPECT_FALSE(extension1_->has_handled_message()); |
56 EXPECT_TRUE(extension2_.has_handled_message()); | 58 EXPECT_TRUE(extension2_->has_handled_message()); |
57 EXPECT_FALSE(extension3_.has_handled_message()); | 59 EXPECT_FALSE(extension3_->has_handled_message()); |
58 } | 60 } |
59 | 61 |
60 // Verifies that extension messages not handled by extensions don't result in a | 62 // Verifies that extension messages not handled by extensions don't result in a |
61 // crash. | 63 // crash. |
62 TEST_F(HostExtensionSessionManagerTest, ExtensionMessages_MessageNotHandled) { | 64 TEST_F(HostExtensionSessionManagerTest, ExtensionMessages_MessageNotHandled) { |
63 HostExtensionSessionManager extension_manager(extensions_, | 65 HostExtensionSessionManager extension_manager(extensions_, |
64 &client_session_details_); | 66 &client_session_details_); |
65 extension_manager.OnNegotiatedCapabilities( | 67 extension_manager.OnNegotiatedCapabilities( |
66 &client_stub_, extension_manager.GetCapabilities()); | 68 &client_stub_, extension_manager.GetCapabilities()); |
67 | 69 |
68 protocol::ExtensionMessage message; | 70 protocol::ExtensionMessage message; |
69 message.set_type("ext4"); | 71 message.set_type("ext4"); |
70 extension_manager.OnExtensionMessage(message); | 72 extension_manager.OnExtensionMessage(message); |
71 | 73 |
72 EXPECT_FALSE(extension1_.has_handled_message()); | 74 EXPECT_FALSE(extension1_->has_handled_message()); |
73 EXPECT_FALSE(extension2_.has_handled_message()); | 75 EXPECT_FALSE(extension2_->has_handled_message()); |
74 EXPECT_FALSE(extension3_.has_handled_message()); | 76 EXPECT_FALSE(extension3_->has_handled_message()); |
75 } | 77 } |
76 | 78 |
77 // Verifies that the correct set of capabilities are reported to the client, | 79 // Verifies that the correct set of capabilities are reported to the client, |
78 // based on the registered extensions. | 80 // based on the registered extensions. |
79 TEST_F(HostExtensionSessionManagerTest, ExtensionCapabilities_AreReported) { | 81 TEST_F(HostExtensionSessionManagerTest, ExtensionCapabilities_AreReported) { |
80 HostExtensionSessionManager extension_manager(extensions_, | 82 HostExtensionSessionManager extension_manager(extensions_, |
81 &client_session_details_); | 83 &client_session_details_); |
82 | 84 |
83 std::vector<std::string> reported_caps = base::SplitString( | 85 std::vector<std::string> reported_caps = base::SplitString( |
84 extension_manager.GetCapabilities(), " ", base::KEEP_WHITESPACE, | 86 extension_manager.GetCapabilities(), " ", base::KEEP_WHITESPACE, |
85 base::SPLIT_WANT_NONEMPTY); | 87 base::SPLIT_WANT_NONEMPTY); |
86 std::sort(reported_caps.begin(), reported_caps.end()); | 88 std::sort(reported_caps.begin(), reported_caps.end()); |
87 | 89 |
88 ASSERT_EQ(2U, reported_caps.size()); | 90 ASSERT_EQ(2U, reported_caps.size()); |
89 EXPECT_EQ("cap1", reported_caps[0]); | 91 EXPECT_EQ("cap1", reported_caps[0]); |
90 EXPECT_EQ("cap3", reported_caps[1]); | 92 EXPECT_EQ("cap3", reported_caps[1]); |
91 } | 93 } |
92 | 94 |
93 // Verifies that an extension is not instantiated if the client does not | 95 // Verifies that an extension is not instantiated if the client does not |
94 // support its required capability, and that it does not receive messages. | 96 // support its required capability, and that it does not receive messages. |
95 TEST_F(HostExtensionSessionManagerTest, ExtensionCapabilities_AreChecked) { | 97 TEST_F(HostExtensionSessionManagerTest, ExtensionCapabilities_AreChecked) { |
96 HostExtensionSessionManager extension_manager(extensions_, | 98 HostExtensionSessionManager extension_manager(extensions_, |
97 &client_session_details_); | 99 &client_session_details_); |
98 extension_manager.OnNegotiatedCapabilities(&client_stub_, "cap1"); | 100 extension_manager.OnNegotiatedCapabilities(&client_stub_, "cap1"); |
99 | 101 |
100 protocol::ExtensionMessage message; | 102 protocol::ExtensionMessage message; |
101 message.set_type("ext3"); | 103 message.set_type("ext3"); |
102 extension_manager.OnExtensionMessage(message); | 104 extension_manager.OnExtensionMessage(message); |
103 | 105 |
104 EXPECT_TRUE(extension1_.was_instantiated()); | 106 EXPECT_TRUE(extension1_->was_instantiated()); |
105 EXPECT_TRUE(extension2_.was_instantiated()); | 107 EXPECT_TRUE(extension2_->was_instantiated()); |
106 EXPECT_FALSE(extension3_.was_instantiated()); | 108 EXPECT_FALSE(extension3_->was_instantiated()); |
107 } | 109 } |
108 | 110 |
109 } // namespace remoting | 111 } // namespace remoting |
OLD | NEW |