OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "chrome/browser/extensions/admin_policy.h" | 5 #include "chrome/browser/extensions/admin_policy.h" |
6 | 6 |
7 #include "base/utf_string_conversions.h" | 7 #include "base/utf_string_conversions.h" |
8 #include "chrome/common/extensions/extension.h" | 8 #include "chrome/common/extensions/extension.h" |
| 9 #include "chrome/common/extensions/manifest.h" |
9 #include "grit/generated_resources.h" | 10 #include "grit/generated_resources.h" |
10 #include "ui/base/l10n/l10n_util.h" | 11 #include "ui/base/l10n/l10n_util.h" |
11 | 12 |
12 namespace { | 13 namespace { |
13 | 14 |
14 bool ManagementPolicyImpl(const extensions::Extension* extension, | 15 bool ManagementPolicyImpl(const extensions::Extension* extension, |
15 string16* error, | 16 string16* error, |
16 bool modifiable_value) { | 17 bool modifiable_value) { |
17 bool modifiable = | 18 bool modifiable = |
18 extension->location() != extensions::Extension::COMPONENT && | 19 extension->location() != extensions::Manifest::COMPONENT && |
19 extension->location() != extensions::Extension::EXTERNAL_POLICY_DOWNLOAD; | 20 extension->location() != extensions::Manifest::EXTERNAL_POLICY_DOWNLOAD; |
20 // Some callers equate "no restriction" to true, others to false. | 21 // Some callers equate "no restriction" to true, others to false. |
21 if (modifiable) | 22 if (modifiable) |
22 return modifiable_value; | 23 return modifiable_value; |
23 | 24 |
24 if (error) { | 25 if (error) { |
25 *error = l10n_util::GetStringFUTF16( | 26 *error = l10n_util::GetStringFUTF16( |
26 IDS_EXTENSION_CANT_MODIFY_POLICY_REQUIRED, | 27 IDS_EXTENSION_CANT_MODIFY_POLICY_REQUIRED, |
27 UTF8ToUTF16(extension->name())); | 28 UTF8ToUTF16(extension->name())); |
28 } | 29 } |
29 return !modifiable_value; | 30 return !modifiable_value; |
(...skipping 19 matching lines...) Expand all Loading... |
49 return blacklist && blacklist->Find(wildcard) != blacklist->end(); | 50 return blacklist && blacklist->Find(wildcard) != blacklist->end(); |
50 } | 51 } |
51 | 52 |
52 bool UserMayLoad(const base::ListValue* blacklist, | 53 bool UserMayLoad(const base::ListValue* blacklist, |
53 const base::ListValue* whitelist, | 54 const base::ListValue* whitelist, |
54 const base::DictionaryValue* forcelist, | 55 const base::DictionaryValue* forcelist, |
55 const base::ListValue* allowed_types, | 56 const base::ListValue* allowed_types, |
56 const Extension* extension, | 57 const Extension* extension, |
57 string16* error) { | 58 string16* error) { |
58 // Component extensions are always allowed. | 59 // Component extensions are always allowed. |
59 if (extension->location() == Extension::COMPONENT) | 60 if (extension->location() == Manifest::COMPONENT) |
60 return true; | 61 return true; |
61 | 62 |
62 // Early exit for the common case of no policy restrictions. | 63 // Early exit for the common case of no policy restrictions. |
63 if ((!blacklist || blacklist->empty()) && (!allowed_types)) | 64 if ((!blacklist || blacklist->empty()) && (!allowed_types)) |
64 return true; | 65 return true; |
65 | 66 |
66 // Check whether the extension type is allowed. | 67 // Check whether the extension type is allowed. |
67 // | 68 // |
68 // If you get a compile error here saying that the type you added is not | 69 // If you get a compile error here saying that the type you added is not |
69 // handled by the switch statement below, please consider whether enterprise | 70 // handled by the switch statement below, please consider whether enterprise |
70 // policy should be able to disallow extensions of the new type. If so, add a | 71 // policy should be able to disallow extensions of the new type. If so, add a |
71 // branch to the second block and add a line to the definition of | 72 // branch to the second block and add a line to the definition of |
72 // kExtensionAllowedTypesMap in configuration_policy_handler_list.cc. | 73 // kExtensionAllowedTypesMap in configuration_policy_handler_list.cc. |
73 switch (extension->GetType()) { | 74 switch (extension->GetType()) { |
74 case Extension::TYPE_UNKNOWN: | 75 case Manifest::TYPE_UNKNOWN: |
75 break; | 76 break; |
76 case Extension::TYPE_EXTENSION: | 77 case Manifest::TYPE_EXTENSION: |
77 case Extension::TYPE_THEME: | 78 case Manifest::TYPE_THEME: |
78 case Extension::TYPE_USER_SCRIPT: | 79 case Manifest::TYPE_USER_SCRIPT: |
79 case Extension::TYPE_HOSTED_APP: | 80 case Manifest::TYPE_HOSTED_APP: |
80 case Extension::TYPE_LEGACY_PACKAGED_APP: | 81 case Manifest::TYPE_LEGACY_PACKAGED_APP: |
81 case Extension::TYPE_PLATFORM_APP: | 82 case Manifest::TYPE_PLATFORM_APP: |
82 base::FundamentalValue type_value(extension->GetType()); | 83 base::FundamentalValue type_value(extension->GetType()); |
83 if (allowed_types && | 84 if (allowed_types && |
84 allowed_types->Find(type_value) == allowed_types->end()) | 85 allowed_types->Find(type_value) == allowed_types->end()) |
85 return ReturnLoadError(extension, error); | 86 return ReturnLoadError(extension, error); |
86 break; | 87 break; |
87 } | 88 } |
88 | 89 |
89 // Check the whitelist/forcelist first. | 90 // Check the whitelist/forcelist first. |
90 base::StringValue id_value(extension->id()); | 91 base::StringValue id_value(extension->id()); |
91 if ((whitelist && whitelist->Find(id_value) != whitelist->end()) || | 92 if ((whitelist && whitelist->Find(id_value) != whitelist->end()) || |
(...skipping 11 matching lines...) Expand all Loading... |
103 bool UserMayModifySettings(const Extension* extension, string16* error) { | 104 bool UserMayModifySettings(const Extension* extension, string16* error) { |
104 return ManagementPolicyImpl(extension, error, true); | 105 return ManagementPolicyImpl(extension, error, true); |
105 } | 106 } |
106 | 107 |
107 bool MustRemainEnabled(const Extension* extension, string16* error) { | 108 bool MustRemainEnabled(const Extension* extension, string16* error) { |
108 return ManagementPolicyImpl(extension, error, false); | 109 return ManagementPolicyImpl(extension, error, false); |
109 } | 110 } |
110 | 111 |
111 } // namespace | 112 } // namespace |
112 } // namespace | 113 } // namespace |
OLD | NEW |