OLD | NEW |
---|---|
(Empty) | |
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 | |
3 // found in the LICENSE file. | |
4 | |
5 #include "chrome/browser/extensions/permissions_based_management_policy_provider .h" | |
6 | |
7 #include "base/strings/string16.h" | |
8 #include "base/strings/utf_string_conversions.h" | |
9 #include "chrome/browser/extensions/extension_management.h" | |
10 #include "extensions/common/extension.h" | |
11 #include "extensions/common/manifest_handlers/permissions_parser.h" | |
12 #include "extensions/common/permissions/permission_set.h" | |
13 #include "grit/extensions_strings.h" | |
14 #include "ui/base/l10n/l10n_util.h" | |
15 | |
16 namespace extensions { | |
17 | |
18 PermissionsBasedManagementPolicyProvider:: | |
19 PermissionsBasedManagementPolicyProvider(ExtensionManagement* settings) | |
20 : settings_(settings) { | |
21 } | |
22 | |
23 PermissionsBasedManagementPolicyProvider:: | |
24 ~PermissionsBasedManagementPolicyProvider() { | |
25 } | |
26 | |
27 std::string | |
28 PermissionsBasedManagementPolicyProvider::GetDebugPolicyProviderName() const { | |
29 #ifdef NDEBUG | |
30 NOTREACHED(); | |
31 return std::string(); | |
32 #else | |
33 return "Controlled by enterprise policy, restricting extension permissions."; | |
34 #endif | |
35 } | |
36 | |
37 bool PermissionsBasedManagementPolicyProvider::UserMayLoad( | |
38 const Extension* extension, | |
39 base::string16* error) const { | |
40 // Component extensions are always allowed. | |
41 if (Manifest::IsComponentLocation(extension->location())) | |
42 return true; | |
43 | |
44 scoped_refptr<const PermissionSet> required_permissions = | |
45 PermissionsParser::GetRequiredPermissions(extension); | |
46 | |
47 if (!settings_->IsPermissionSetAllowed(extension->id(), | |
48 required_permissions)) { | |
49 if (error) { | |
50 *error = | |
51 l10n_util::GetStringFUTF16(IDS_EXTENSION_CANT_INSTALL_POLICY_BLOCKED, | |
52 base::UTF8ToUTF16(extension->name()), | |
53 base::UTF8ToUTF16(extension->id())); | |
54 } | |
55 return false; | |
Joao da Silva
2014/10/15 14:39:26
What happens if a force-installed extension uses a
binjin
2014/10/16 18:13:58
It shouldn't be installed. Force installed extensi
| |
56 } | |
57 | |
58 return true; | |
59 } | |
60 | |
61 } // namespace extensions | |
OLD | NEW |