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

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

Issue 2627433003: Remove ScopedVector from remoting/. (Closed)
Patch Set: rev Created 3 years, 11 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
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 "remoting/host/host_extension_session_manager.h" 5 #include "remoting/host/host_extension_session_manager.h"
6 6
7 #include "base/logging.h"
7 #include "remoting/base/capabilities.h" 8 #include "remoting/base/capabilities.h"
8 #include "remoting/host/client_session_details.h" 9 #include "remoting/host/client_session_details.h"
9 #include "remoting/host/host_extension.h" 10 #include "remoting/host/host_extension.h"
10 #include "remoting/host/host_extension_session.h" 11 #include "remoting/host/host_extension_session.h"
11 12
12 namespace remoting { 13 namespace remoting {
13 14
14 HostExtensionSessionManager::HostExtensionSessionManager( 15 HostExtensionSessionManager::HostExtensionSessionManager(
15 const std::vector<HostExtension*>& extensions, 16 const HostExtensions& extensions,
16 ClientSessionDetails* client_session_details) 17 ClientSessionDetails* client_session_details)
17 : client_session_details_(client_session_details), 18 : client_session_details_(client_session_details),
18 client_stub_(nullptr), 19 client_stub_(nullptr),
19 extensions_(extensions) {} 20 extensions_(extensions) {}
20 21
21 HostExtensionSessionManager::~HostExtensionSessionManager() {} 22 HostExtensionSessionManager::~HostExtensionSessionManager() {}
22 23
23 std::string HostExtensionSessionManager::GetCapabilities() const { 24 std::string HostExtensionSessionManager::GetCapabilities() const {
24 std::string capabilities; 25 std::string capabilities;
25 for (HostExtensions::const_iterator extension = extensions_.begin(); 26 for (const auto& extension : extensions_) {
26 extension != extensions_.end(); ++extension) { 27 const std::string& capability = extension->capability();
27 const std::string& capability = (*extension)->capability();
28 if (capability.empty()) { 28 if (capability.empty()) {
29 continue; 29 continue;
30 } 30 }
31 if (!capabilities.empty()) { 31 if (!capabilities.empty()) {
32 capabilities.append(" "); 32 capabilities.append(" ");
33 } 33 }
34 capabilities.append(capability); 34 capabilities.append(capability);
35 } 35 }
36 return capabilities; 36 return capabilities;
37 } 37 }
38 38
39 void HostExtensionSessionManager::OnNegotiatedCapabilities( 39 void HostExtensionSessionManager::OnNegotiatedCapabilities(
40 protocol::ClientStub* client_stub, 40 protocol::ClientStub* client_stub,
41 const std::string& capabilities) { 41 const std::string& capabilities) {
42 DCHECK(client_stub); 42 DCHECK(client_stub);
43 DCHECK(!client_stub_); 43 DCHECK(!client_stub_);
44 44
45 client_stub_ = client_stub; 45 client_stub_ = client_stub;
46 46
47 for (HostExtensions::const_iterator extension = extensions_.begin(); 47 for (const auto& extension : extensions_) {
48 extension != extensions_.end(); ++extension) {
49 // If the extension requires a capability that was not negotiated then do 48 // If the extension requires a capability that was not negotiated then do
50 // not instantiate it. 49 // not instantiate it.
51 if (!(*extension)->capability().empty() && 50 if (!extension->capability().empty() &&
52 !HasCapability(capabilities, (*extension)->capability())) { 51 !HasCapability(capabilities, extension->capability())) {
53 continue; 52 continue;
54 } 53 }
55 54
56 std::unique_ptr<HostExtensionSession> extension_session = 55 std::unique_ptr<HostExtensionSession> extension_session =
57 (*extension) 56 extension->CreateExtensionSession(client_session_details_,
58 ->CreateExtensionSession(client_session_details_, client_stub_); 57 client_stub_);
59 DCHECK(extension_session); 58 DCHECK(extension_session);
60 59
61 extension_sessions_.push_back(extension_session.release()); 60 extension_sessions_.push_back(std::move(extension_session));
62 } 61 }
63 } 62 }
64 63
65 bool HostExtensionSessionManager::OnExtensionMessage( 64 bool HostExtensionSessionManager::OnExtensionMessage(
66 const protocol::ExtensionMessage& message) { 65 const protocol::ExtensionMessage& message) {
67 for(HostExtensionSessions::const_iterator it = extension_sessions_.begin(); 66 for (const auto& session : extension_sessions_) {
68 it != extension_sessions_.end(); ++it) { 67 if (session->OnExtensionMessage(client_session_details_, client_stub_,
69 if ((*it)->OnExtensionMessage(client_session_details_, client_stub_, 68 message)) {
70 message)) {
71 return true; 69 return true;
72 } 70 }
73 } 71 }
74 return false; 72 return false;
75 } 73 }
76 74
77 } // namespace remoting 75 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/host/host_extension_session_manager.h ('k') | remoting/protocol/audio_pump_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698