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

Side by Side Diff: mojo/services/package_manager/package_manager.cc

Issue 1716793003: Enforce Capability Filter provided in manifest (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@9deps
Patch Set: . Created 4 years, 10 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 | « mojo/services/package_manager/manifest.json ('k') | mojo/services/tracing/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 "mojo/services/package_manager/package_manager.h" 5 #include "mojo/services/package_manager/package_manager.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/json/json_file_value_serializer.h" 8 #include "base/json/json_file_value_serializer.h"
9 #include "base/task_runner_util.h" 9 #include "base/task_runner_util.h"
10 #include "mojo/common/mojo_scheme_register.h" 10 #include "mojo/common/mojo_scheme_register.h"
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 } 144 }
145 145
146 void PackageManager::ResolveMojoURL(const mojo::String& mojo_url, 146 void PackageManager::ResolveMojoURL(const mojo::String& mojo_url,
147 const ResolveMojoURLCallback& callback) { 147 const ResolveMojoURLCallback& callback) {
148 GURL resolved_url = mojo_url.To<GURL>(); 148 GURL resolved_url = mojo_url.To<GURL>();
149 auto alias_iter = mojo_url_aliases_.find(mojo_url); 149 auto alias_iter = mojo_url_aliases_.find(mojo_url);
150 std::string qualifier; 150 std::string qualifier;
151 if (alias_iter != mojo_url_aliases_.end()) { 151 if (alias_iter != mojo_url_aliases_.end()) {
152 resolved_url = GURL(alias_iter->second.first); 152 resolved_url = GURL(alias_iter->second.first);
153 qualifier = alias_iter->second.second; 153 qualifier = alias_iter->second.second;
154 } else {
155 qualifier = resolved_url.host();
154 } 156 }
155 157
156 EnsureURLInCatalog(resolved_url, qualifier, callback); 158 EnsureURLInCatalog(resolved_url, qualifier, callback);
157 } 159 }
158 160
159 void PackageManager::GetEntries( 161 void PackageManager::GetEntries(
160 mojo::Array<mojo::String> urls, 162 mojo::Array<mojo::String> urls,
161 const GetEntriesCallback& callback) { 163 const GetEntriesCallback& callback) {
162 mojo::Map<mojo::String, mojom::CatalogEntryPtr> entries; 164 mojo::Map<mojo::String, mojom::CatalogEntryPtr> entries;
163 std::vector<mojo::String> urls_vec = urls.PassStorage(); 165 std::vector<mojo::String> urls_vec = urls.PassStorage();
(...skipping 22 matching lines...) Expand all
186 file_url = system_package_dir_.Resolve(host + "/" + host + ".mojo"); 188 file_url = system_package_dir_.Resolve(host + "/" + host + ".mojo");
187 } else if (resolved_url.SchemeIs("exe")) { 189 } else if (resolved_url.SchemeIs("exe")) {
188 #if defined OS_WIN 190 #if defined OS_WIN
189 std::string extension = ".exe"; 191 std::string extension = ".exe";
190 #else 192 #else
191 std::string extension; 193 std::string extension;
192 #endif 194 #endif
193 file_url = system_package_dir_.Resolve(resolved_url.host() + extension); 195 file_url = system_package_dir_.Resolve(resolved_url.host() + extension);
194 } 196 }
195 197
196 // TODO(beng): Use the actual capability filter from |info|!
197 mojo::shell::mojom::CapabilityFilterPtr filter( 198 mojo::shell::mojom::CapabilityFilterPtr filter(
198 mojo::shell::mojom::CapabilityFilter::New()); 199 mojo::shell::mojom::CapabilityFilter::New());
199 mojo::Array<mojo::String> all_interfaces; 200 filter->filter = mojo::Map<mojo::String, mojo::Array<mojo::String>>();
200 all_interfaces.push_back("*"); 201 for (const auto& entry : info_iter->second.base_filter) {
201 filter->filter.insert("*", std::move(all_interfaces)); 202 mojo::Array<mojo::String> interfaces;
202 203 for (auto interface_name : entry.second)
204 interfaces.push_back(interface_name);
205 filter->filter.insert(entry.first, std::move(interfaces));
206 }
203 callback.Run(resolved_url.spec(), qualifier, std::move(filter), 207 callback.Run(resolved_url.spec(), qualifier, std::move(filter),
204 file_url.spec()); 208 file_url.spec());
205 } 209 }
206 210
207 bool PackageManager::IsURLInCatalog(const GURL& url) const { 211 bool PackageManager::IsURLInCatalog(const GURL& url) const {
208 return catalog_.find(url.spec()) != catalog_.end(); 212 return catalog_.find(url.spec()) != catalog_.end();
209 } 213 }
210 214
211 void PackageManager::EnsureURLInCatalog( 215 void PackageManager::EnsureURLInCatalog(
212 const GURL& url, 216 const GURL& url,
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
322 ApplicationInfo info; 326 ApplicationInfo info;
323 info.url = url.spec(); 327 info.url = url.spec();
324 info.name = url.spec(); 328 info.name = url.spec();
325 catalog_[info.url] = info; 329 catalog_[info.url] = info;
326 } 330 }
327 SerializeCatalog(); 331 SerializeCatalog();
328 CompleteResolveMojoURL(url, qualifier, callback); 332 CompleteResolveMojoURL(url, qualifier, callback);
329 } 333 }
330 334
331 } // namespace package_manager 335 } // namespace package_manager
OLDNEW
« no previous file with comments | « mojo/services/package_manager/manifest.json ('k') | mojo/services/tracing/manifest.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698