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