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

Side by Side Diff: remoting/host/host_extension_session_manager_unittest.cc

Issue 2091553002: Expose ClientSession details to Host Extensions (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@desktop_environment
Patch Set: Adressing feedback Created 4 years, 5 months 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 unified diff | Download patch
« no previous file with comments | « remoting/host/host_extension_session_manager.cc ('k') | remoting/host/host_mock_objects.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
OLDNEW
« no previous file with comments | « remoting/host/host_extension_session_manager.cc ('k') | remoting/host/host_mock_objects.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698