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

Unified Diff: mojo/services/catalog/catalog.cc

Issue 1779683002: Add catalog unittests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@43catalog
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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « mojo/services/catalog/catalog.h ('k') | mojo/services/catalog/data/capabilities » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/services/catalog/catalog.cc
diff --git a/mojo/services/catalog/catalog.cc b/mojo/services/catalog/catalog.cc
index 6e7423ab998dd2a202e405342092eefe1e691fb7..6d5518c91b1a4156abfe66b2f9c70df3073ae565 100644
--- a/mojo/services/catalog/catalog.cc
+++ b/mojo/services/catalog/catalog.cc
@@ -9,6 +9,9 @@
#include "base/strings/string_split.h"
#include "base/task_runner_util.h"
#include "mojo/common/url_type_converters.h"
+#include "mojo/services/catalog/builder.h"
+#include "mojo/services/catalog/entry.h"
+#include "mojo/services/catalog/store.h"
#include "mojo/shell/public/cpp/names.h"
#include "mojo/util/filename_util.h"
#include "net/base/filename_util.h"
@@ -17,59 +20,6 @@
namespace catalog {
namespace {
-CapabilityFilter BuildCapabilityFilterFromDictionary(
- const base::DictionaryValue& value) {
- CapabilityFilter filter;
- base::DictionaryValue::Iterator it(value);
- for (; !it.IsAtEnd(); it.Advance()) {
- const base::ListValue* values = nullptr;
- CHECK(it.value().GetAsList(&values));
- AllowedInterfaces interfaces;
- for (auto i = values->begin(); i != values->end(); ++i) {
- std::string iface_name;
- const base::Value* v = *i;
- CHECK(v->GetAsString(&iface_name));
- interfaces.insert(iface_name);
- }
- filter[it.key()] = interfaces;
- }
- return filter;
-}
-
-ApplicationInfo BuildApplicationInfoFromDictionary(
- const base::DictionaryValue& value) {
- ApplicationInfo info;
- std::string name_string;
- CHECK(value.GetString(Store::kNameKey, &name_string));
- CHECK(mojo::IsValidName(name_string)) << "Invalid Name: " << name_string;
- info.name = name_string;
- if (value.HasKey(Store::kQualifierKey)) {
- CHECK(value.GetString(Store::kQualifierKey, &info.qualifier));
- } else {
- info.qualifier = mojo::GetNamePath(name_string);
- }
- CHECK(value.GetString(Store::kDisplayNameKey, &info.display_name));
- const base::DictionaryValue* capabilities = nullptr;
- CHECK(value.GetDictionary(Store::kCapabilitiesKey, &capabilities));
- info.base_filter = BuildCapabilityFilterFromDictionary(*capabilities);
- return info;
-}
-
-void SerializeEntry(const ApplicationInfo& entry,
- base::DictionaryValue** value) {
- *value = new base::DictionaryValue;
- (*value)->SetString(Store::kNameKey, entry.name);
- (*value)->SetString(Store::kDisplayNameKey, entry.display_name);
- base::DictionaryValue* capabilities = new base::DictionaryValue;
- for (const auto& pair : entry.base_filter) {
- scoped_ptr<base::ListValue> interfaces(new base::ListValue);
- for (const auto& iface_name : pair.second)
- interfaces->AppendString(iface_name);
- capabilities->Set(pair.first, std::move(interfaces));
- }
- (*value)->Set(Store::kCapabilitiesKey, make_scoped_ptr(capabilities));
-}
-
scoped_ptr<base::Value> ReadManifest(const base::FilePath& manifest_path) {
JSONFileValueDeserializer deserializer(manifest_path);
int error = 0;
@@ -81,19 +31,6 @@ scoped_ptr<base::Value> ReadManifest(const base::FilePath& manifest_path) {
} // namespace
-// static
-const char Store::kNameKey[] = "name";
-// static
-const char Store::kQualifierKey[] = "process-group";
-// static
-const char Store::kDisplayNameKey[] = "display_name";
-// static
-const char Store::kCapabilitiesKey[] = "capabilities";
-
-ApplicationInfo::ApplicationInfo() {}
-ApplicationInfo::ApplicationInfo(const ApplicationInfo& other) = default;
-ApplicationInfo::~ApplicationInfo() {}
-
Catalog::Catalog(base::TaskRunner* blocking_pool,
scoped_ptr<Store> catalog)
: blocking_pool_(blocking_pool),
@@ -180,10 +117,10 @@ void Catalog::GetEntries(mojo::Array<mojo::String> names,
for (const std::string& name : names_vec) {
if (catalog_.find(name) == catalog_.end())
continue;
- const ApplicationInfo& info = catalog_[name];
- mojom::CatalogEntryPtr entry(mojom::CatalogEntry::New());
- entry->display_name = info.display_name;
- entries[info.name] = std::move(entry);
+ const Entry& entry = catalog_[name];
+ mojom::CatalogEntryPtr entry_ptr(mojom::CatalogEntry::New());
+ entry_ptr->display_name = entry.display_name;
+ entries[entry.name] = std::move(entry_ptr);
}
callback.Run(std::move(entries));
}
@@ -192,8 +129,8 @@ void Catalog::CompleteResolveMojoName(
const std::string& resolved_name,
const std::string& qualifier,
const ResolveMojoNameCallback& callback) {
- auto info_iter = catalog_.find(resolved_name);
- CHECK(info_iter != catalog_.end());
+ auto entry_iter = catalog_.find(resolved_name);
+ CHECK(entry_iter != catalog_.end());
GURL file_url;
std::string type = mojo::GetNameType(resolved_name);
@@ -214,7 +151,7 @@ void Catalog::CompleteResolveMojoName(
mojo::shell::mojom::CapabilityFilterPtr filter(
mojo::shell::mojom::CapabilityFilter::New());
filter->filter = mojo::Map<mojo::String, mojo::Array<mojo::String>>();
- for (const auto& entry : info_iter->second.base_filter) {
+ for (const auto& entry : entry_iter->second.capabilities) {
mojo::Array<mojo::String> interfaces;
for (auto interface_name : entry.second)
interfaces.push_back(interface_name);
@@ -259,43 +196,42 @@ void Catalog::DeserializeCatalog() {
const base::DictionaryValue* dictionary = nullptr;
const base::Value* v = *it;
CHECK(v->GetAsDictionary(&dictionary));
- const ApplicationInfo app_info =
- BuildApplicationInfoFromDictionary(*dictionary);
- catalog_[app_info.name] = app_info;
+ const Entry entry = BuildEntry(*dictionary);
+ catalog_[entry.name] = entry;
}
}
void Catalog::SerializeCatalog() {
scoped_ptr<base::ListValue> catalog(new base::ListValue);
- for (const auto& info : catalog_) {
+ for (const auto& entry : catalog_) {
base::DictionaryValue* dictionary = nullptr;
- SerializeEntry(info.second, &dictionary);
+ SerializeEntry(entry.second, &dictionary);
catalog->Append(make_scoped_ptr(dictionary));
}
if (store_)
store_->UpdateStore(std::move(catalog));
}
-const ApplicationInfo& Catalog::DeserializeApplication(
+const Entry& Catalog::DeserializeApplication(
const base::DictionaryValue* dictionary) {
- ApplicationInfo info = BuildApplicationInfoFromDictionary(*dictionary);
- if (catalog_.find(info.name) == catalog_.end()) {
- catalog_[info.name] = info;
+ Entry entry = BuildEntry(*dictionary);
+ if (catalog_.find(entry.name) == catalog_.end()) {
+ catalog_[entry.name] = entry;
if (dictionary->HasKey("applications")) {
const base::ListValue* applications = nullptr;
dictionary->GetList("applications", &applications);
for (size_t i = 0; i < applications->GetSize(); ++i) {
- const base::DictionaryValue* child = nullptr;
- applications->GetDictionary(i, &child);
- const ApplicationInfo& child_info = DeserializeApplication(child);
- mojo_name_aliases_[child_info.name] =
- std::make_pair(info.name, child_info.qualifier);
+ const base::DictionaryValue* child_value = nullptr;
+ applications->GetDictionary(i, &child_value);
+ const Entry& child = DeserializeApplication(child_value);
+ mojo_name_aliases_[child.name] =
+ std::make_pair(entry.name, child.qualifier);
}
}
- qualifiers_[info.name] = info.qualifier;
+ qualifiers_[entry.name] = entry.qualifier;
}
- return catalog_[info.name];
+ return catalog_[entry.name];
}
GURL Catalog::GetManifestURL(const std::string& name) {
@@ -331,11 +267,11 @@ void Catalog::OnReadManifestImpl(const std::string& name,
CHECK(manifest->GetAsDictionary(&dictionary));
DeserializeApplication(dictionary);
} else {
- ApplicationInfo info;
- info.name = name;
- info.display_name = name;
- catalog_[info.name] = info;
- qualifiers_[info.name] = mojo::GetNamePath(name);
+ Entry entry;
+ entry.name = name;
+ entry.display_name = name;
+ catalog_[entry.name] = entry;
+ qualifiers_[entry.name] = mojo::GetNamePath(name);
}
SerializeCatalog();
« no previous file with comments | « mojo/services/catalog/catalog.h ('k') | mojo/services/catalog/data/capabilities » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698