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

Side by Side Diff: mojo/services/package_manager/package_manager.cc

Issue 1776813002: CapabilitySpec (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@42cpi
Patch Set: . Created 4 years, 9 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 | « mojo/services/package_manager/package_manager.h ('k') | mojo/shell/public/cpp/BUILD.gn » ('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 "mojo/services/package_manager/package_manager.h" 5 #include "mojo/services/package_manager/package_manager.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/json/json_file_value_serializer.h" 8 #include "base/json/json_file_value_serializer.h"
9 #include "base/strings/string_split.h" 9 #include "base/strings/string_split.h"
10 #include "base/task_runner_util.h" 10 #include "base/task_runner_util.h"
11 #include "mojo/common/url_type_converters.h" 11 #include "mojo/common/url_type_converters.h"
12 #include "mojo/shell/public/cpp/names.h" 12 #include "mojo/shell/public/cpp/names.h"
13 #include "mojo/util/filename_util.h" 13 #include "mojo/util/filename_util.h"
14 #include "net/base/filename_util.h" 14 #include "net/base/filename_util.h"
15 #include "url/url_util.h" 15 #include "url/url_util.h"
16 16
17 namespace package_manager { 17 namespace package_manager {
18 namespace { 18 namespace {
19 19
20 CapabilityFilter BuildCapabilityFilterFromDictionary( 20 Capabilities BuildCapabilitiesFromDictionary(
21 const base::DictionaryValue& value) { 21 const base::DictionaryValue& value) {
22 CapabilityFilter filter; 22 Capabilities capabilities;
23
24 const base::DictionaryValue* provided_value = nullptr;
25 if (value.HasKey(ApplicationCatalogStore::kCapabilities_ProvidedKey)) {
26 value.GetDictionary(ApplicationCatalogStore::kCapabilities_ProvidedKey,
27 &provided_value);
28 }
29 if (provided_value) {
30 base::DictionaryValue::Iterator it(provided_value);
31 for (; !it.IsAtEnd(); it.Advance()) {
32 const base::ListValue* values = nullptr;
33 CHECK(it.value().GetAsList(&values));
34 mojo::caps::Interfaces interfaces;
35 for (auto i = values->begin(); i != values->end(); ++i) {
36 mojo::caps::Interface interface_name;
37 const base::Value* v = *i;
38 CHECK(v->GetAsString(&interface_name));
39 interfaces.insert(interface_name);
40 }
41 capabilities.provided[it.key] = interfaces;
42 }
43 }
44
45 const base::DictionaryValue* required_value = nullptr;
46 if (value.HasKey(ApplicationCatalogStore::kCapabilities_RequiredKey)) {
47 value.GetDictionary(ApplicationCatalogStore::kCapabilities_RequiredKey,
48 &required_value);
49 }
50 if (required_value) {
51 base::DictionaryValue::Iterator it(required_value);
52 for (; !it.IsAtEnd(); it.Advance()) {
53 const base::DictionaryValue*
54 }
55
56 }
57
58
59
60 /*
23 base::DictionaryValue::Iterator it(value); 61 base::DictionaryValue::Iterator it(value);
24 for (; !it.IsAtEnd(); it.Advance()) { 62 for (; !it.IsAtEnd(); it.Advance()) {
25 const base::ListValue* values = nullptr; 63 const base::ListValue* values = nullptr;
26 CHECK(it.value().GetAsList(&values)); 64 CHECK(it.value().GetAsList(&values));
27 AllowedInterfaces interfaces; 65 AllowedInterfaces interfaces;
28 for (auto i = values->begin(); i != values->end(); ++i) { 66 for (auto i = values->begin(); i != values->end(); ++i) {
29 std::string iface_name; 67 std::string iface_name;
30 const base::Value* v = *i; 68 const base::Value* v = *i;
31 CHECK(v->GetAsString(&iface_name)); 69 CHECK(v->GetAsString(&iface_name));
32 interfaces.insert(iface_name); 70 interfaces.insert(iface_name);
33 } 71 }
34 filter[it.key()] = interfaces; 72 filter[it.key()] = interfaces;
35 } 73 }
36 return filter; 74 */
75 return capabilities;
37 } 76 }
38 77
39 ApplicationInfo BuildApplicationInfoFromDictionary( 78 ApplicationInfo BuildApplicationInfoFromDictionary(
40 const base::DictionaryValue& value) { 79 const base::DictionaryValue& value) {
41 ApplicationInfo info; 80 ApplicationInfo info;
42 std::string name_string; 81 std::string name_string;
43 CHECK(value.GetString(ApplicationCatalogStore::kNameKey, &name_string)); 82 CHECK(value.GetString(ApplicationCatalogStore::kNameKey, &name_string));
44 CHECK(mojo::IsValidName(name_string)) << "Invalid Name: " << name_string; 83 CHECK(mojo::IsValidName(name_string)) << "Invalid Name: " << name_string;
45 info.name = name_string; 84 info.name = name_string;
46 if (value.HasKey(ApplicationCatalogStore::kQualifierKey)) { 85 if (value.HasKey(ApplicationCatalogStore::kQualifierKey)) {
47 CHECK(value.GetString(ApplicationCatalogStore::kQualifierKey, 86 CHECK(value.GetString(ApplicationCatalogStore::kQualifierKey,
48 &info.qualifier)); 87 &info.qualifier));
49 } else { 88 } else {
50 info.qualifier = mojo::GetNamePath(name_string); 89 info.qualifier = mojo::GetNamePath(name_string);
51 } 90 }
52 CHECK(value.GetString(ApplicationCatalogStore::kDisplayNameKey, 91 CHECK(value.GetString(ApplicationCatalogStore::kDisplayNameKey,
53 &info.display_name)); 92 &info.display_name));
54 const base::DictionaryValue* capabilities = nullptr; 93 const base::DictionaryValue* capabilities = nullptr;
55 CHECK(value.GetDictionary(ApplicationCatalogStore::kCapabilitiesKey, 94 CHECK(value.GetDictionary(ApplicationCatalogStore::kCapabilitiesKey,
56 &capabilities)); 95 &capabilities));
57 info.base_filter = BuildCapabilityFilterFromDictionary(*capabilities); 96 info.base_filter = BuildCapabilitiesFromDictionary(*capabilities);
58 return info; 97 return info;
59 } 98 }
60 99
61 void SerializeEntry(const ApplicationInfo& entry, 100 void SerializeEntry(const ApplicationInfo& entry,
62 base::DictionaryValue** value) { 101 base::DictionaryValue** value) {
63 *value = new base::DictionaryValue; 102 *value = new base::DictionaryValue;
64 (*value)->SetString(ApplicationCatalogStore::kNameKey, entry.name); 103 (*value)->SetString(ApplicationCatalogStore::kNameKey, entry.name);
65 (*value)->SetString(ApplicationCatalogStore::kDisplayNameKey, 104 (*value)->SetString(ApplicationCatalogStore::kDisplayNameKey,
66 entry.display_name); 105 entry.display_name);
67 base::DictionaryValue* capabilities = new base::DictionaryValue; 106 base::DictionaryValue* capabilities = new base::DictionaryValue;
(...skipping 19 matching lines...) Expand all
87 } // namespace 126 } // namespace
88 127
89 // static 128 // static
90 const char ApplicationCatalogStore::kNameKey[] = "name"; 129 const char ApplicationCatalogStore::kNameKey[] = "name";
91 // static 130 // static
92 const char ApplicationCatalogStore::kQualifierKey[] = "process-group"; 131 const char ApplicationCatalogStore::kQualifierKey[] = "process-group";
93 // static 132 // static
94 const char ApplicationCatalogStore::kDisplayNameKey[] = "display_name"; 133 const char ApplicationCatalogStore::kDisplayNameKey[] = "display_name";
95 // static 134 // static
96 const char ApplicationCatalogStore::kCapabilitiesKey[] = "capabilities"; 135 const char ApplicationCatalogStore::kCapabilitiesKey[] = "capabilities";
136 // static
137 const char ApplicationCatalogStore::kCapabilities_ProvidedKey[] = "provided";
138 // static
139 const char ApplicationCatalogStore::kCapabilities_RequiredKey[] = "required";
140 // static
141 const char ApplicationCatalogStore::kCapabilities_InterfacesKey[] =
142 "interfaces";
143 // static
144 const char ApplicationCatalogStore::kCapabilities_ClassesKey[] = "classes";
97 145
98 ApplicationInfo::ApplicationInfo() {} 146 ApplicationInfo::ApplicationInfo() {}
99 ApplicationInfo::ApplicationInfo(const ApplicationInfo& other) = default; 147 ApplicationInfo::ApplicationInfo(const ApplicationInfo& other) = default;
100 ApplicationInfo::~ApplicationInfo() {} 148 ApplicationInfo::~ApplicationInfo() {}
101 149
102 PackageManager::PackageManager(base::TaskRunner* blocking_pool, 150 PackageManager::PackageManager(base::TaskRunner* blocking_pool,
103 scoped_ptr<ApplicationCatalogStore> catalog) 151 scoped_ptr<ApplicationCatalogStore> catalog)
104 : blocking_pool_(blocking_pool), 152 : blocking_pool_(blocking_pool),
105 catalog_store_(std::move(catalog)), 153 catalog_store_(std::move(catalog)),
106 weak_factory_(this) { 154 weak_factory_(this) {
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
347 } 395 }
348 SerializeCatalog(); 396 SerializeCatalog();
349 397
350 auto qualifier_iter = qualifiers_.find(name); 398 auto qualifier_iter = qualifiers_.find(name);
351 DCHECK(qualifier_iter != qualifiers_.end()); 399 DCHECK(qualifier_iter != qualifiers_.end());
352 std::string qualifier = qualifier_iter->second; 400 std::string qualifier = qualifier_iter->second;
353 CompleteResolveMojoName(name, qualifier, callback); 401 CompleteResolveMojoName(name, qualifier, callback);
354 } 402 }
355 403
356 } // namespace package_manager 404 } // namespace package_manager
OLDNEW
« no previous file with comments | « mojo/services/package_manager/package_manager.h ('k') | mojo/shell/public/cpp/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698