diff options
author | ben <ben@chromium.org> | 2016-03-23 09:13:27 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-03-23 16:15:02 +0000 |
commit | df052b7fede354f92354bd54bc034b0fbc0d42e1 (patch) | |
tree | 5dd4c6f615b00643c94a9e4740924494b01f3222 /mojo/services/catalog/reader.h | |
parent | dc1e6dee244efea76741c796768707fa8d58afcb (diff) | |
download | chromium_src-df052b7fede354f92354bd54bc034b0fbc0d42e1.zip chromium_src-df052b7fede354f92354bd54bc034b0fbc0d42e1.tar.gz chromium_src-df052b7fede354f92354bd54bc034b0fbc0d42e1.tar.bz2 |
Moves manifest parsing to a new class, Reader.
. Consolidate value analysis in Entry
. Catalog now just manages the various data structures that allow it to implement various flavors of Resolve().
BUG=
Review URL: https://codereview.chromium.org/1821383002
Cr-Commit-Position: refs/heads/master@{#382856}
Diffstat (limited to 'mojo/services/catalog/reader.h')
-rw-r--r-- | mojo/services/catalog/reader.h | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/mojo/services/catalog/reader.h b/mojo/services/catalog/reader.h new file mode 100644 index 0000000..d2d205f --- /dev/null +++ b/mojo/services/catalog/reader.h @@ -0,0 +1,54 @@ +// Copyright 2016 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef MOJO_SERVICES_CATALOG_READER_H_ +#define MOJO_SERVICES_CATALOG_READER_H_ + +#include "base/callback.h" +#include "base/files/file_path.h" +#include "base/macros.h" +#include "base/memory/scoped_ptr.h" +#include "base/memory/weak_ptr.h" +#include "base/values.h" + +namespace base { +class TaskRunner; +} + +namespace catalog { + +class Entry; + +// Encapsulates manifest reading. +class Reader { + public: + using ReadManifestCallback = + base::Callback<void(scoped_ptr<Entry> entry)>; + + // Loads manifests relative to |package_path|. Performs file operations on + // |file_task_runner|. + Reader(const base::FilePath& package_path, + base::TaskRunner* file_task_runner); + ~Reader(); + + // Attempts to load a manifest for |name|, and returns an Entry built from the + // metadata it contains via |callback|. + void Read(const std::string& name, + const ReadManifestCallback& callback); + + private: + // Construct a manifest path for the application named |name| within + // |package_path_|. + base::FilePath GetManifestPath(const std::string& name) const; + + base::FilePath package_path_; + base::TaskRunner* file_task_runner_; + base::WeakPtrFactory<Reader> weak_factory_; + + DISALLOW_COPY_AND_ASSIGN(Reader); +}; + +} // namespace catalog + +#endif // MOJO_SERVICES_CATALOG_READER_H_ |