| Index: mojo/services/package_manager/package_manager.cc
|
| diff --git a/mojo/services/package_manager/package_manager.cc b/mojo/services/package_manager/package_manager.cc
|
| index 139f95a7250101763bdb5a8a12b41ed59c85146f..106a4911d106cea30e0d2a3d524c372ea14863df 100644
|
| --- a/mojo/services/package_manager/package_manager.cc
|
| +++ b/mojo/services/package_manager/package_manager.cc
|
| @@ -17,9 +17,47 @@
|
| namespace package_manager {
|
| namespace {
|
|
|
| -CapabilityFilter BuildCapabilityFilterFromDictionary(
|
| +Capabilities BuildCapabilitiesFromDictionary(
|
| const base::DictionaryValue& value) {
|
| - CapabilityFilter filter;
|
| + Capabilities capabilities;
|
| +
|
| + const base::DictionaryValue* provided_value = nullptr;
|
| + if (value.HasKey(ApplicationCatalogStore::kCapabilities_ProvidedKey)) {
|
| + value.GetDictionary(ApplicationCatalogStore::kCapabilities_ProvidedKey,
|
| + &provided_value);
|
| + }
|
| + if (provided_value) {
|
| + base::DictionaryValue::Iterator it(provided_value);
|
| + for (; !it.IsAtEnd(); it.Advance()) {
|
| + const base::ListValue* values = nullptr;
|
| + CHECK(it.value().GetAsList(&values));
|
| + mojo::caps::Interfaces interfaces;
|
| + for (auto i = values->begin(); i != values->end(); ++i) {
|
| + mojo::caps::Interface interface_name;
|
| + const base::Value* v = *i;
|
| + CHECK(v->GetAsString(&interface_name));
|
| + interfaces.insert(interface_name);
|
| + }
|
| + capabilities.provided[it.key] = interfaces;
|
| + }
|
| + }
|
| +
|
| + const base::DictionaryValue* required_value = nullptr;
|
| + if (value.HasKey(ApplicationCatalogStore::kCapabilities_RequiredKey)) {
|
| + value.GetDictionary(ApplicationCatalogStore::kCapabilities_RequiredKey,
|
| + &required_value);
|
| + }
|
| + if (required_value) {
|
| + base::DictionaryValue::Iterator it(required_value);
|
| + for (; !it.IsAtEnd(); it.Advance()) {
|
| + const base::DictionaryValue*
|
| + }
|
| +
|
| + }
|
| +
|
| +
|
| +
|
| + /*
|
| base::DictionaryValue::Iterator it(value);
|
| for (; !it.IsAtEnd(); it.Advance()) {
|
| const base::ListValue* values = nullptr;
|
| @@ -33,7 +71,8 @@ CapabilityFilter BuildCapabilityFilterFromDictionary(
|
| }
|
| filter[it.key()] = interfaces;
|
| }
|
| - return filter;
|
| + */
|
| + return capabilities;
|
| }
|
|
|
| ApplicationInfo BuildApplicationInfoFromDictionary(
|
| @@ -54,7 +93,7 @@ ApplicationInfo BuildApplicationInfoFromDictionary(
|
| const base::DictionaryValue* capabilities = nullptr;
|
| CHECK(value.GetDictionary(ApplicationCatalogStore::kCapabilitiesKey,
|
| &capabilities));
|
| - info.base_filter = BuildCapabilityFilterFromDictionary(*capabilities);
|
| + info.base_filter = BuildCapabilitiesFromDictionary(*capabilities);
|
| return info;
|
| }
|
|
|
| @@ -94,6 +133,15 @@ const char ApplicationCatalogStore::kQualifierKey[] = "process-group";
|
| const char ApplicationCatalogStore::kDisplayNameKey[] = "display_name";
|
| // static
|
| const char ApplicationCatalogStore::kCapabilitiesKey[] = "capabilities";
|
| +// static
|
| +const char ApplicationCatalogStore::kCapabilities_ProvidedKey[] = "provided";
|
| +// static
|
| +const char ApplicationCatalogStore::kCapabilities_RequiredKey[] = "required";
|
| +// static
|
| +const char ApplicationCatalogStore::kCapabilities_InterfacesKey[] =
|
| + "interfaces";
|
| +// static
|
| +const char ApplicationCatalogStore::kCapabilities_ClassesKey[] = "classes";
|
|
|
| ApplicationInfo::ApplicationInfo() {}
|
| ApplicationInfo::ApplicationInfo(const ApplicationInfo& other) = default;
|
|
|