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

Side by Side Diff: services/catalog/entry.cc

Issue 2440203002: Mojo: removing support for process-group. (Closed)
Patch Set: Synced Created 4 years, 1 month 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 | « services/catalog/entry.h ('k') | services/catalog/entry_unittest.cc » ('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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "services/catalog/entry.h" 5 #include "services/catalog/entry.h"
6 6
7 #include "base/memory/ptr_util.h" 7 #include "base/memory/ptr_util.h"
8 #include "base/values.h" 8 #include "base/values.h"
9 #include "services/catalog/store.h" 9 #include "services/catalog/store.h"
10 #include "services/service_manager/public/cpp/names.h" 10 #include "services/service_manager/public/cpp/names.h"
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 } 92 }
93 } 93 }
94 return true; 94 return true;
95 } 95 }
96 96
97 } // namespace 97 } // namespace
98 98
99 Entry::Entry() {} 99 Entry::Entry() {}
100 Entry::Entry(const std::string& name) 100 Entry::Entry(const std::string& name)
101 : name_(name), 101 : name_(name),
102 qualifier_(service_manager::GetNamePath(name)),
103 display_name_(name) {} 102 display_name_(name) {}
104 Entry::~Entry() {} 103 Entry::~Entry() {}
105 104
106 std::unique_ptr<base::DictionaryValue> Entry::Serialize() const { 105 std::unique_ptr<base::DictionaryValue> Entry::Serialize() const {
107 auto value = base::MakeUnique<base::DictionaryValue>(); 106 auto value = base::MakeUnique<base::DictionaryValue>();
108 value->SetString(Store::kNameKey, name_); 107 value->SetString(Store::kNameKey, name_);
109 value->SetString(Store::kDisplayNameKey, display_name_); 108 value->SetString(Store::kDisplayNameKey, display_name_);
110 value->SetString(Store::kQualifierKey, qualifier_);
111 109
112 auto specs = base::MakeUnique<base::DictionaryValue>(); 110 auto specs = base::MakeUnique<base::DictionaryValue>();
113 for (const auto& it : interface_provider_specs_) { 111 for (const auto& it : interface_provider_specs_) {
114 auto spec = base::MakeUnique<base::DictionaryValue>(); 112 auto spec = base::MakeUnique<base::DictionaryValue>();
115 113
116 auto provides = base::MakeUnique<base::DictionaryValue>(); 114 auto provides = base::MakeUnique<base::DictionaryValue>();
117 for (const auto& i : it.second.provides) { 115 for (const auto& i : it.second.provides) {
118 auto interfaces = base::MakeUnique<base::ListValue>(); 116 auto interfaces = base::MakeUnique<base::ListValue>();
119 for (const auto& interface_name : i.second) 117 for (const auto& interface_name : i.second)
120 interfaces->AppendString(interface_name); 118 interfaces->AppendString(interface_name);
(...skipping 26 matching lines...) Expand all
147 << Store::kNameKey << " key"; 145 << Store::kNameKey << " key";
148 return nullptr; 146 return nullptr;
149 } 147 }
150 if (!service_manager::IsValidName(name_string)) { 148 if (!service_manager::IsValidName(name_string)) {
151 LOG(ERROR) << "Entry::Deserialize: " << name_string << " is not a valid " 149 LOG(ERROR) << "Entry::Deserialize: " << name_string << " is not a valid "
152 << "Mojo name"; 150 << "Mojo name";
153 return nullptr; 151 return nullptr;
154 } 152 }
155 entry->set_name(name_string); 153 entry->set_name(name_string);
156 154
157 // Process group.
158 if (value.HasKey(Store::kQualifierKey)) {
159 std::string qualifier;
160 if (!value.GetString(Store::kQualifierKey, &qualifier)) {
161 LOG(ERROR) << "Entry::Deserialize: " << Store::kQualifierKey << " must "
162 << "be a string.";
163 return nullptr;
164 }
165 entry->set_qualifier(qualifier);
166 } else {
167 entry->set_qualifier(service_manager::GetNamePath(name_string));
168 }
169
170 // Human-readable name. 155 // Human-readable name.
171 std::string display_name; 156 std::string display_name;
172 if (!value.GetString(Store::kDisplayNameKey, &display_name)) { 157 if (!value.GetString(Store::kDisplayNameKey, &display_name)) {
173 LOG(ERROR) << "Entry::Deserialize: dictionary has no " 158 LOG(ERROR) << "Entry::Deserialize: dictionary has no "
174 << Store::kDisplayNameKey << " key"; 159 << Store::kDisplayNameKey << " key";
175 return nullptr; 160 return nullptr;
176 } 161 }
177 entry->set_display_name(display_name); 162 entry->set_display_name(display_name);
178 163
179 // InterfaceProvider specs. 164 // InterfaceProvider specs.
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 service_manager::mojom::kServiceManager_ConnectorSpec); 211 service_manager::mojom::kServiceManager_ConnectorSpec);
227 if (it == interface_provider_specs_.end()) 212 if (it == interface_provider_specs_.end())
228 return false; 213 return false;
229 214
230 auto connection_spec = it->second; 215 auto connection_spec = it->second;
231 return connection_spec.provides.find(capability) != 216 return connection_spec.provides.find(capability) !=
232 connection_spec.provides.end(); 217 connection_spec.provides.end();
233 } 218 }
234 219
235 bool Entry::operator==(const Entry& other) const { 220 bool Entry::operator==(const Entry& other) const {
236 return other.name_ == name_ && other.qualifier_ == qualifier_ && 221 return other.name_ == name_ &&
237 other.display_name_ == display_name_ && 222 other.display_name_ == display_name_ &&
238 other.interface_provider_specs_ == interface_provider_specs_; 223 other.interface_provider_specs_ == interface_provider_specs_;
239 } 224 }
240 225
241 void Entry::AddInterfaceProviderSpec( 226 void Entry::AddInterfaceProviderSpec(
242 const std::string& name, 227 const std::string& name,
243 const service_manager::InterfaceProviderSpec& spec) { 228 const service_manager::InterfaceProviderSpec& spec) {
244 interface_provider_specs_[name] = spec; 229 interface_provider_specs_[name] = spec;
245 } 230 }
246 231
247 } // catalog 232 } // catalog
248 233
249 namespace mojo { 234 namespace mojo {
250 235
251 // static 236 // static
252 service_manager::mojom::ResolveResultPtr 237 service_manager::mojom::ResolveResultPtr
253 TypeConverter<service_manager::mojom::ResolveResultPtr, 238 TypeConverter<service_manager::mojom::ResolveResultPtr,
254 catalog::Entry>::Convert(const catalog::Entry& input) { 239 catalog::Entry>::Convert(const catalog::Entry& input) {
255 service_manager::mojom::ResolveResultPtr result( 240 service_manager::mojom::ResolveResultPtr result(
256 service_manager::mojom::ResolveResult::New()); 241 service_manager::mojom::ResolveResult::New());
257 result->name = input.name(); 242 result->name = input.name();
258 const catalog::Entry& package = input.package() ? *input.package() : input; 243 const catalog::Entry& package = input.package() ? *input.package() : input;
259 result->resolved_name = package.name(); 244 result->resolved_name = package.name();
260 result->qualifier = input.qualifier();
261 result->interface_provider_specs = input.interface_provider_specs(); 245 result->interface_provider_specs = input.interface_provider_specs();
262 if (input.package()) { 246 if (input.package()) {
263 auto it = package.interface_provider_specs().find( 247 auto it = package.interface_provider_specs().find(
264 service_manager::mojom::kServiceManager_ConnectorSpec); 248 service_manager::mojom::kServiceManager_ConnectorSpec);
265 if (it != package.interface_provider_specs().end()) 249 if (it != package.interface_provider_specs().end())
266 result->package_spec = it->second; 250 result->package_spec = it->second;
267 } 251 }
268 result->package_path = package.path(); 252 result->package_path = package.path();
269 return result; 253 return result;
270 } 254 }
271 255
272 // static 256 // static
273 catalog::mojom::EntryPtr 257 catalog::mojom::EntryPtr
274 TypeConverter<catalog::mojom::EntryPtr, catalog::Entry>::Convert( 258 TypeConverter<catalog::mojom::EntryPtr, catalog::Entry>::Convert(
275 const catalog::Entry& input) { 259 const catalog::Entry& input) {
276 catalog::mojom::EntryPtr result(catalog::mojom::Entry::New()); 260 catalog::mojom::EntryPtr result(catalog::mojom::Entry::New());
277 result->name = input.name(); 261 result->name = input.name();
278 result->display_name = input.display_name(); 262 result->display_name = input.display_name();
279 return result; 263 return result;
280 } 264 }
281 265
282 } // namespace mojo 266 } // namespace mojo
OLDNEW
« no previous file with comments | « services/catalog/entry.h ('k') | services/catalog/entry_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698