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

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

Issue 1828733004: Load application manifests from resources (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
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
Index: mojo/services/catalog/reader.cc
diff --git a/mojo/services/catalog/reader.cc b/mojo/services/catalog/reader.cc
index e26b778ed3414623b38ca28b7a4e359af66cd8e6..caebb0cfc37df3ec9b3047f9f7d40938a2ffceb2 100644
--- a/mojo/services/catalog/reader.cc
+++ b/mojo/services/catalog/reader.cc
@@ -5,6 +5,7 @@
#include "mojo/services/catalog/reader.h"
#include "base/json/json_file_value_serializer.h"
+#include "base/json/json_reader.h"
#include "base/location.h"
#include "base/task_runner_util.h"
#include "mojo/services/catalog/entry.h"
@@ -13,6 +14,15 @@
namespace catalog {
namespace {
+scoped_ptr<Entry> GetEntryFromManifest(scoped_ptr<base::Value> manifest) {
+ if (manifest) {
+ const base::DictionaryValue* dictionary = nullptr;
+ CHECK(manifest->GetAsDictionary(&dictionary));
+ return Entry::Deserialize(*dictionary);
+ }
+ return nullptr;
+}
+
scoped_ptr<base::Value> ReadManifest(const base::FilePath& manifest_path) {
JSONFileValueDeserializer deserializer(manifest_path);
int error = 0;
@@ -32,13 +42,7 @@ void OnReadManifest(base::WeakPtr<Reader> reader,
callback.Run(nullptr);
return;
}
- scoped_ptr<Entry> entry;
- if (manifest) {
- const base::DictionaryValue* dictionary = nullptr;
- CHECK(manifest->GetAsDictionary(&dictionary));
- entry = Entry::Deserialize(*dictionary);
- }
- callback.Run(std::move(entry));
+ callback.Run(GetEntryFromManifest(std::move(manifest)));
}
} // namespace
@@ -65,6 +69,10 @@ void Reader::Read(const std::string& name,
base::Bind(&OnReadManifest, weak_factory_.GetWeakPtr(), name, callback));
}
+scoped_ptr<Entry> Reader::Parse(const base::StringPiece& manifest_contents) {
+ return GetEntryFromManifest(base::JSONReader::Read(manifest_contents));
+}
+
base::FilePath Reader::GetManifestPath(const std::string& name) const {
// TODO(beng): think more about how this should be done for exe targets.
std::string type = mojo::GetNameType(name);

Powered by Google App Engine
This is Rietveld 408576698