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

Side by Side Diff: extensions/common/manifest_handlers/permissions_parser.cc

Issue 1349613003: [Extensions] Un-refcount PermissionSet (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 5 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "extensions/common/manifest_handlers/permissions_parser.h" 5 #include "extensions/common/manifest_handlers/permissions_parser.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/memory/ref_counted.h" 8 #include "base/memory/ref_counted.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "base/values.h" 10 #include "base/values.h"
(...skipping 14 matching lines...) Expand all
25 #include "url/url_constants.h" 25 #include "url/url_constants.h"
26 26
27 namespace extensions { 27 namespace extensions {
28 28
29 namespace { 29 namespace {
30 30
31 namespace keys = manifest_keys; 31 namespace keys = manifest_keys;
32 namespace errors = manifest_errors; 32 namespace errors = manifest_errors;
33 33
34 struct ManifestPermissions : public Extension::ManifestData { 34 struct ManifestPermissions : public Extension::ManifestData {
35 ManifestPermissions(scoped_refptr<const PermissionSet> permissions); 35 ManifestPermissions(scoped_ptr<const PermissionSet> permissions);
36 ~ManifestPermissions() override; 36 ~ManifestPermissions() override;
37 37
38 scoped_refptr<const PermissionSet> permissions; 38 scoped_ptr<const PermissionSet> permissions;
39 }; 39 };
40 40
41 ManifestPermissions::ManifestPermissions( 41 ManifestPermissions::ManifestPermissions(
42 scoped_refptr<const PermissionSet> permissions) 42 scoped_ptr<const PermissionSet> permissions)
43 : permissions(permissions) { 43 : permissions(permissions.Pass()) {}
44 }
45 44
46 ManifestPermissions::~ManifestPermissions() { 45 ManifestPermissions::~ManifestPermissions() {
47 } 46 }
48 47
49 // Checks whether the host |pattern| is allowed for the given |extension|, 48 // Checks whether the host |pattern| is allowed for the given |extension|,
50 // given API permissions |permissions|. 49 // given API permissions |permissions|.
51 bool CanSpecifyHostPermission(const Extension* extension, 50 bool CanSpecifyHostPermission(const Extension* extension,
52 const URLPattern& pattern, 51 const URLPattern& pattern,
53 const APIPermissionSet& permissions) { 52 const APIPermissionSet& permissions) {
54 if (!pattern.match_all_urls() && 53 if (!pattern.match_all_urls() &&
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 return false; 259 return false;
261 } 260 }
262 261
263 return true; 262 return true;
264 } 263 }
265 264
266 void PermissionsParser::Finalize(Extension* extension) { 265 void PermissionsParser::Finalize(Extension* extension) {
267 ManifestHandler::AddExtensionInitialRequiredPermissions( 266 ManifestHandler::AddExtensionInitialRequiredPermissions(
268 extension, &initial_required_permissions_->manifest_permissions); 267 extension, &initial_required_permissions_->manifest_permissions);
269 268
270 scoped_refptr<const PermissionSet> required_permissions( 269 scoped_ptr<const PermissionSet> required_permissions(
271 new PermissionSet(initial_required_permissions_->api_permissions, 270 new PermissionSet(initial_required_permissions_->api_permissions,
272 initial_required_permissions_->manifest_permissions, 271 initial_required_permissions_->manifest_permissions,
273 initial_required_permissions_->host_permissions, 272 initial_required_permissions_->host_permissions,
274 initial_required_permissions_->scriptable_hosts)); 273 initial_required_permissions_->scriptable_hosts));
275 extension->SetManifestData(keys::kPermissions, 274 extension->SetManifestData(
276 new ManifestPermissions(required_permissions)); 275 keys::kPermissions, new ManifestPermissions(required_permissions.Pass()));
277 276
278 scoped_refptr<const PermissionSet> optional_permissions( 277 scoped_ptr<const PermissionSet> optional_permissions(new PermissionSet(
279 new PermissionSet(initial_optional_permissions_->api_permissions, 278 initial_optional_permissions_->api_permissions,
280 initial_optional_permissions_->manifest_permissions, 279 initial_optional_permissions_->manifest_permissions,
281 initial_optional_permissions_->host_permissions, 280 initial_optional_permissions_->host_permissions, URLPatternSet()));
282 URLPatternSet())); 281 extension->SetManifestData(
283 extension->SetManifestData(keys::kOptionalPermissions, 282 keys::kOptionalPermissions,
284 new ManifestPermissions(optional_permissions)); 283 new ManifestPermissions(optional_permissions.Pass()));
285 } 284 }
286 285
287 // static 286 // static
288 void PermissionsParser::AddAPIPermission(Extension* extension, 287 void PermissionsParser::AddAPIPermission(Extension* extension,
289 APIPermission::ID permission) { 288 APIPermission::ID permission) {
290 DCHECK(extension->permissions_parser()); 289 DCHECK(extension->permissions_parser());
291 extension->permissions_parser() 290 extension->permissions_parser()
292 ->initial_required_permissions_->api_permissions.insert(permission); 291 ->initial_required_permissions_->api_permissions.insert(permission);
293 } 292 }
294 293
(...skipping 17 matching lines...) Expand all
312 // static 311 // static
313 void PermissionsParser::SetScriptableHosts( 312 void PermissionsParser::SetScriptableHosts(
314 Extension* extension, 313 Extension* extension,
315 const URLPatternSet& scriptable_hosts) { 314 const URLPatternSet& scriptable_hosts) {
316 DCHECK(extension->permissions_parser()); 315 DCHECK(extension->permissions_parser());
317 extension->permissions_parser() 316 extension->permissions_parser()
318 ->initial_required_permissions_->scriptable_hosts = scriptable_hosts; 317 ->initial_required_permissions_->scriptable_hosts = scriptable_hosts;
319 } 318 }
320 319
321 // static 320 // static
322 scoped_refptr<const PermissionSet> PermissionsParser::GetRequiredPermissions( 321 const PermissionSet* PermissionsParser::GetRequiredPermissions(
323 const Extension* extension) { 322 const Extension* extension) {
324 DCHECK(extension->GetManifestData(keys::kPermissions)); 323 DCHECK(extension->GetManifestData(keys::kPermissions));
325 return static_cast<const ManifestPermissions*>( 324 return static_cast<const ManifestPermissions*>(
326 extension->GetManifestData(keys::kPermissions))->permissions; 325 extension->GetManifestData(keys::kPermissions))
326 ->permissions.get();
327 } 327 }
328 328
329 // static 329 // static
330 scoped_refptr<const PermissionSet> PermissionsParser::GetOptionalPermissions( 330 const PermissionSet* PermissionsParser::GetOptionalPermissions(
331 const Extension* extension) { 331 const Extension* extension) {
332 DCHECK(extension->GetManifestData(keys::kOptionalPermissions)); 332 DCHECK(extension->GetManifestData(keys::kOptionalPermissions));
333 return static_cast<const ManifestPermissions*>( 333 return static_cast<const ManifestPermissions*>(
334 extension->GetManifestData(keys::kOptionalPermissions)) 334 extension->GetManifestData(keys::kOptionalPermissions))
335 ->permissions; 335 ->permissions.get();
336 } 336 }
337 337
338 } // namespace extensions 338 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/common/manifest_handlers/permissions_parser.h ('k') | extensions/common/permissions/permission_set.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698