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

Side by Side Diff: extensions/common/permissions/permissions_info.cc

Issue 2379763003: Extract permission alias info from PermissionsProvider (Closed)
Patch Set: . 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/permissions/permissions_info.h" 5 #include "extensions/common/permissions/permissions_info.h"
6 6
7 #include "base/lazy_instance.h" 7 #include "base/lazy_instance.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/stl_util.h" 9 #include "base/stl_util.h"
10 #include "base/strings/string_util.h" 10 #include "base/strings/string_util.h"
11 #include "extensions/common/alias.h"
11 12
12 namespace extensions { 13 namespace extensions {
13 14
14 static base::LazyInstance<PermissionsInfo> g_permissions_info = 15 static base::LazyInstance<PermissionsInfo> g_permissions_info =
15 LAZY_INSTANCE_INITIALIZER; 16 LAZY_INSTANCE_INITIALIZER;
16 17
17 // static 18 // static
18 PermissionsInfo* PermissionsInfo::GetInstance() { 19 PermissionsInfo* PermissionsInfo::GetInstance() {
19 return g_permissions_info.Pointer(); 20 return g_permissions_info.Pointer();
20 } 21 }
21 22
22 void PermissionsInfo::AddProvider(const PermissionsProvider& provider) { 23 void PermissionsInfo::AddProvider(
23 auto permissions = provider.GetAllPermissions(); 24 const PermissionsProvider& permissions_provider,
24 auto aliases = provider.GetAllAliases(); 25 const std::vector<Alias>& aliases) {
26 auto permissions = permissions_provider.GetAllPermissions();
25 27
26 for (auto& permission : permissions) 28 for (auto& permission : permissions)
27 RegisterPermission(std::move(permission)); 29 RegisterPermission(std::move(permission));
28 for (const auto& alias : aliases) 30 for (const auto& alias : aliases)
29 RegisterAlias(alias.name, alias.alias); 31 RegisterAlias(alias);
30 } 32 }
31 33
32 const APIPermissionInfo* PermissionsInfo::GetByID(APIPermission::ID id) const { 34 const APIPermissionInfo* PermissionsInfo::GetByID(APIPermission::ID id) const {
33 IDMap::const_iterator i = id_map_.find(id); 35 IDMap::const_iterator i = id_map_.find(id);
34 return (i == id_map_.end()) ? nullptr : i->second.get(); 36 return (i == id_map_.end()) ? nullptr : i->second.get();
35 } 37 }
36 38
37 const APIPermissionInfo* PermissionsInfo::GetByName( 39 const APIPermissionInfo* PermissionsInfo::GetByName(
38 const std::string& name) const { 40 const std::string& name) const {
39 NameMap::const_iterator i = name_map_.find(name); 41 NameMap::const_iterator i = name_map_.find(name);
(...skipping 25 matching lines...) Expand all
65 return base::StartsWith(i->first, name + '.', base::CompareCase::SENSITIVE); 67 return base::StartsWith(i->first, name + '.', base::CompareCase::SENSITIVE);
66 } 68 }
67 69
68 PermissionsInfo::PermissionsInfo() 70 PermissionsInfo::PermissionsInfo()
69 : permission_count_(0) { 71 : permission_count_(0) {
70 } 72 }
71 73
72 PermissionsInfo::~PermissionsInfo() { 74 PermissionsInfo::~PermissionsInfo() {
73 } 75 }
74 76
75 void PermissionsInfo::RegisterAlias( 77 void PermissionsInfo::RegisterAlias(const Alias& alias) {
76 const char* name, 78 DCHECK(base::ContainsKey(name_map_, alias.real_name()));
77 const char* alias) { 79 DCHECK(!base::ContainsKey(name_map_, alias.name()));
78 DCHECK(base::ContainsKey(name_map_, name)); 80 name_map_[alias.name()] = name_map_[alias.real_name()];
79 DCHECK(!base::ContainsKey(name_map_, alias));
80 name_map_[alias] = name_map_[name];
81 } 81 }
82 82
83 void PermissionsInfo::RegisterPermission( 83 void PermissionsInfo::RegisterPermission(
84 std::unique_ptr<APIPermissionInfo> permission) { 84 std::unique_ptr<APIPermissionInfo> permission) {
85 DCHECK(!base::ContainsKey(id_map_, permission->id())); 85 DCHECK(!base::ContainsKey(id_map_, permission->id()));
86 DCHECK(!base::ContainsKey(name_map_, permission->name())); 86 DCHECK(!base::ContainsKey(name_map_, permission->name()));
87 87
88 name_map_[permission->name()] = permission.get(); 88 name_map_[permission->name()] = permission.get();
89 id_map_[permission->id()] = std::move(permission); 89 id_map_[permission->id()] = std::move(permission);
90 90
91 permission_count_++; 91 permission_count_++;
92 } 92 }
93 93
94 } // namespace extensions 94 } // namespace extensions
OLDNEW
« no previous file with comments | « extensions/common/permissions/permissions_info.h ('k') | extensions/common/permissions/permissions_provider.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698