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

Unified Diff: services/catalog/reader.cc

Issue 2389133008: Mash: Replaces "exe:chrome" with "service:content_browser" (Closed)
Patch Set: rebase Created 4 years, 2 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 | « services/catalog/reader.h ('k') | services/shell/manifest.json » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: services/catalog/reader.cc
diff --git a/services/catalog/reader.cc b/services/catalog/reader.cc
index 220f691ba1e84a7edf3a2b467a51e9eb5a265618..9515cea17e47f60cf5f2457d4a6e9fb235d7cc1f 100644
--- a/services/catalog/reader.cc
+++ b/services/catalog/reader.cc
@@ -121,10 +121,18 @@ void ScanDir(
original_thread_task_runner->PostTask(FROM_HERE, read_complete_closure);
}
-std::unique_ptr<Entry> ReadManifest(const base::FilePath& package_dir,
- const std::string& mojo_name) {
- std::unique_ptr<Entry> entry = CreateEntryForManifestAt(
- GetManifestPath(package_dir, mojo_name), package_dir);
+std::unique_ptr<Entry> ReadManifest(
+ const base::FilePath& package_dir,
+ const std::string& mojo_name,
+ const base::FilePath& manifest_path_override) {
+ base::FilePath manifest_path;
+ if (manifest_path_override.empty())
+ manifest_path = GetManifestPath(package_dir, mojo_name);
+ else
+ manifest_path = manifest_path_override;
+
+ std::unique_ptr<Entry> entry = CreateEntryForManifestAt(manifest_path,
+ package_dir);
if (!entry) {
entry.reset(new Entry(mojo_name));
entry->set_path(GetExecutablePath(
@@ -192,13 +200,25 @@ void Reader::CreateEntryForName(
return;
}
}
+
+ base::FilePath manifest_path_override;
+ auto override_iter = manifest_path_overrides_.find(mojo_name);
+ if (override_iter != manifest_path_overrides_.end())
+ manifest_path_override = override_iter->second;
+
base::PostTaskAndReplyWithResult(
file_task_runner_.get(), FROM_HERE,
- base::Bind(&ReadManifest, system_package_dir_, mojo_name),
+ base::Bind(&ReadManifest, system_package_dir_, mojo_name,
+ manifest_path_override),
base::Bind(&Reader::OnReadManifest, weak_factory_.GetWeakPtr(), cache,
entry_created_callback));
}
+void Reader::OverrideManifestPath(const std::string& service_name,
+ const base::FilePath& path) {
+ manifest_path_overrides_.insert(std::make_pair(service_name, path));
+}
+
Reader::Reader(ManifestProvider* manifest_provider)
: manifest_provider_(manifest_provider), weak_factory_(this) {
PathService::Get(base::DIR_MODULE, &system_package_dir_);
« no previous file with comments | « services/catalog/reader.h ('k') | services/shell/manifest.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698