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

Side by Side Diff: remoting/base/capabilities.cc

Issue 13932020: Set the initial resolution of an RDP session to the client screen resolution if it is available. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: CR feedback #2 Created 7 years, 8 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "remoting/base/capabilities.h"
6
7 #include <algorithm>
8 #include <vector>
9
10 #include "base/string_util.h"
11 #include "base/values.h"
12 #include "remoting/proto/control.pb.h"
13
14 namespace remoting {
15
16 namespace {
17
18 bool isValidCapability(const std::string& capability) {
Sergey Ulanov 2013/04/16 08:38:53 CamelCase
alexeypa (please no reviews) 2013/04/16 22:06:11 Removed.
19 return !capability.empty() && capability.find(' ') == std::string::npos;
20 }
21
22 } // namespace
23
24 Capabilities::Capabilities() {
25 }
26
27 Capabilities::Capabilities(const std::string& value) {
28 FromString(value);
29 }
30
31 Capabilities::~Capabilities() {
32 }
33
34 bool Capabilities::HasCapability(const std::string& capability) const {
35 return capabilities_.find(capability) != capabilities_.end();
36 }
37
38 Capabilities Capabilities::Intersect(const Capabilities& other) const {
39 Capabilities result;
40
41 std::set<std::string>::iterator i = capabilities_.begin();
42 while (i != capabilities_.end()) {
43 if (other.HasCapability(*i))
44 result.capabilities_.insert(*i);
45 ++i;
46 }
47
48 return result;
49 }
50
51 bool Capabilities::FromListValue(const base::ListValue& value) {
52 std::set<std::string> capabilities;
53 for (size_t i = 0; i < value.GetSize(); ++i) {
54 std::string capability;
55 if (!value.GetString(i, &capability) || !isValidCapability(capability)) {
56 return false;
57 }
58
59 capabilities.insert(capability);
60 }
61
62 capabilities_.swap(capabilities);
63 return true;
64 }
65
66 bool Capabilities::FromProtocolMessage(const protocol::Capabilities& message) {
Sergey Ulanov 2013/04/16 08:38:53 nit: Not sure if we really need this given that li
alexeypa (please no reviews) 2013/04/16 22:06:11 Removed.
67 std::set<std::string> capabilities;
68 for (int i = 0; i < message.capability_size(); ++i) {
69 if (!isValidCapability(message.capability(i)))
70 return false;
71
72 capabilities.insert(message.capability(i));
73 }
74
75 capabilities_.swap(capabilities);
76 return true;
77 }
78
79 void Capabilities::FromString(const std::string& value) {
80 std::vector<std::string> tokens;
81 Tokenize(value, " ", &tokens);
82
83 std::set<std::string> capabilities;
84 capabilities.insert(tokens.begin(), tokens.end());
85 capabilities_.swap(capabilities);
86 }
87
88 scoped_ptr<base::ListValue> Capabilities::ToListValue() const {
Sergey Ulanov 2013/04/16 08:38:53 I'm not sure if we really need this - capabilities
alexeypa (please no reviews) 2013/04/16 22:06:11 Removed.
89 scoped_ptr<base::ListValue> value(new base::ListValue());
90
91 std::set<std::string>::const_iterator i = capabilities_.begin();
92 while (i != capabilities_.end()) {
Sergey Ulanov 2013/04/16 08:38:53 can this be for loop?
alexeypa (please no reviews) 2013/04/16 22:06:11 A for loop would be less readable because line wra
93 value->AppendString(*i);
94 ++i;
95 }
96
97 return value.Pass();
98 }
99
100 scoped_ptr<protocol::Capabilities> Capabilities::ToProtocolMessage() const {
101 scoped_ptr<protocol::Capabilities> message(new protocol::Capabilities());
102
103 std::set<std::string>::const_iterator i = capabilities_.begin();
104 while (i != capabilities_.end()) {
105 *(message->add_capability()) = *i;
106 ++i;
107 }
108
109 return message.Pass();
110 }
111
112 std::string Capabilities::ToString() const {
113 std::vector<std::string> tokens(capabilities_.size());
114 std::copy(capabilities_.begin(), capabilities_.end(), tokens.begin());
115 return JoinString(tokens, ' ');
116 }
117
118 } // namespace remoting
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698