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

Side by Side 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 unified diff | Download patch
« no previous file with comments | « services/catalog/reader.h ('k') | services/shell/manifest.json » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "services/catalog/reader.h" 5 #include "services/catalog/reader.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/files/file_enumerator.h" 8 #include "base/files/file_enumerator.h"
9 #include "base/files/file_util.h" 9 #include "base/files/file_util.h"
10 #include "base/json/json_file_value_serializer.h" 10 #include "base/json/json_file_value_serializer.h"
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
114 } 114 }
115 115
116 original_thread_task_runner->PostTask( 116 original_thread_task_runner->PostTask(
117 FROM_HERE, 117 FROM_HERE,
118 base::Bind(read_manifest_callback, base::Passed(&entry))); 118 base::Bind(read_manifest_callback, base::Passed(&entry)));
119 } 119 }
120 120
121 original_thread_task_runner->PostTask(FROM_HERE, read_complete_closure); 121 original_thread_task_runner->PostTask(FROM_HERE, read_complete_closure);
122 } 122 }
123 123
124 std::unique_ptr<Entry> ReadManifest(const base::FilePath& package_dir, 124 std::unique_ptr<Entry> ReadManifest(
125 const std::string& mojo_name) { 125 const base::FilePath& package_dir,
126 std::unique_ptr<Entry> entry = CreateEntryForManifestAt( 126 const std::string& mojo_name,
127 GetManifestPath(package_dir, mojo_name), package_dir); 127 const base::FilePath& manifest_path_override) {
128 base::FilePath manifest_path;
129 if (manifest_path_override.empty())
130 manifest_path = GetManifestPath(package_dir, mojo_name);
131 else
132 manifest_path = manifest_path_override;
133
134 std::unique_ptr<Entry> entry = CreateEntryForManifestAt(manifest_path,
135 package_dir);
128 if (!entry) { 136 if (!entry) {
129 entry.reset(new Entry(mojo_name)); 137 entry.reset(new Entry(mojo_name));
130 entry->set_path(GetExecutablePath( 138 entry->set_path(GetExecutablePath(
131 package_dir.AppendASCII(kPackagesDirName), mojo_name)); 139 package_dir.AppendASCII(kPackagesDirName), mojo_name));
132 } 140 }
133 return entry; 141 return entry;
134 } 142 }
135 143
136 void AddEntryToCache(EntryCache* cache, std::unique_ptr<Entry> entry) { 144 void AddEntryToCache(EntryCache* cache, std::unique_ptr<Entry> entry) {
137 std::vector<std::unique_ptr<Entry>> children = entry->TakeChildren(); 145 std::vector<std::unique_ptr<Entry>> children = entry->TakeChildren();
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
185 if (manifest_root) { 193 if (manifest_root) {
186 base::PostTaskAndReplyWithResult( 194 base::PostTaskAndReplyWithResult(
187 file_task_runner_.get(), FROM_HERE, 195 file_task_runner_.get(), FROM_HERE,
188 base::Bind(&ProcessManifest, base::Passed(&manifest_root), 196 base::Bind(&ProcessManifest, base::Passed(&manifest_root),
189 system_package_dir_), 197 system_package_dir_),
190 base::Bind(&Reader::OnReadManifest, weak_factory_.GetWeakPtr(), cache, 198 base::Bind(&Reader::OnReadManifest, weak_factory_.GetWeakPtr(), cache,
191 entry_created_callback)); 199 entry_created_callback));
192 return; 200 return;
193 } 201 }
194 } 202 }
203
204 base::FilePath manifest_path_override;
205 auto override_iter = manifest_path_overrides_.find(mojo_name);
206 if (override_iter != manifest_path_overrides_.end())
207 manifest_path_override = override_iter->second;
208
195 base::PostTaskAndReplyWithResult( 209 base::PostTaskAndReplyWithResult(
196 file_task_runner_.get(), FROM_HERE, 210 file_task_runner_.get(), FROM_HERE,
197 base::Bind(&ReadManifest, system_package_dir_, mojo_name), 211 base::Bind(&ReadManifest, system_package_dir_, mojo_name,
212 manifest_path_override),
198 base::Bind(&Reader::OnReadManifest, weak_factory_.GetWeakPtr(), cache, 213 base::Bind(&Reader::OnReadManifest, weak_factory_.GetWeakPtr(), cache,
199 entry_created_callback)); 214 entry_created_callback));
200 } 215 }
201 216
217 void Reader::OverrideManifestPath(const std::string& service_name,
218 const base::FilePath& path) {
219 manifest_path_overrides_.insert(std::make_pair(service_name, path));
220 }
221
202 Reader::Reader(ManifestProvider* manifest_provider) 222 Reader::Reader(ManifestProvider* manifest_provider)
203 : manifest_provider_(manifest_provider), weak_factory_(this) { 223 : manifest_provider_(manifest_provider), weak_factory_(this) {
204 PathService::Get(base::DIR_MODULE, &system_package_dir_); 224 PathService::Get(base::DIR_MODULE, &system_package_dir_);
205 } 225 }
206 226
207 void Reader::OnReadManifest( 227 void Reader::OnReadManifest(
208 EntryCache* cache, 228 EntryCache* cache,
209 const CreateEntryForNameCallback& entry_created_callback, 229 const CreateEntryForNameCallback& entry_created_callback,
210 std::unique_ptr<Entry> entry) { 230 std::unique_ptr<Entry> entry) {
211 if (!entry) 231 if (!entry)
212 return; 232 return;
213 shell::mojom::ResolveResultPtr result = 233 shell::mojom::ResolveResultPtr result =
214 shell::mojom::ResolveResult::From(*entry); 234 shell::mojom::ResolveResult::From(*entry);
215 AddEntryToCache(cache, std::move(entry)); 235 AddEntryToCache(cache, std::move(entry));
216 entry_created_callback.Run(std::move(result)); 236 entry_created_callback.Run(std::move(result));
217 } 237 }
218 238
219 } // namespace catalog 239 } // namespace catalog
OLDNEW
« 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