| 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);
|
|
|