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