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

Unified Diff: chrome/browser/extensions/admin_policy.cc

Issue 10854009: Extension white and force lists (set by policy) should have priority over auto-updated Google black… (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Rebased and merged Created 8 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/extensions/admin_policy.h ('k') | chrome/browser/extensions/admin_policy_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/extensions/admin_policy.cc
diff --git a/chrome/browser/extensions/admin_policy.cc b/chrome/browser/extensions/admin_policy.cc
index 8ec3f53100a87f82d9e79c0c7d77e17bf5a19f9f..c25e31bc685911640ea9c7688759110c5993863e 100644
--- a/chrome/browser/extensions/admin_policy.cc
+++ b/chrome/browser/extensions/admin_policy.cc
@@ -41,24 +41,29 @@ bool BlacklistedByDefault(const base::ListValue* blacklist) {
return blacklist && blacklist->Find(wildcard) != blacklist->end();
}
-bool UserMayLoad(const base::ListValue* blacklist,
+bool UserMayLoad(bool is_google_blacklisted,
+ const base::ListValue* blacklist,
const base::ListValue* whitelist,
+ const base::ListValue* forcelist,
const Extension* extension,
string16* error) {
if (IsRequired(extension))
return true;
- if (!blacklist || blacklist->empty())
+ if ((!blacklist || blacklist->empty()) && !is_google_blacklisted)
return true;
- // Check the whitelist first.
+ // Check the whitelist/forcelist first (takes precedence over Google
+ // blacklist).
base::StringValue id_value(extension->id());
- if (whitelist && whitelist->Find(id_value) != whitelist->end())
+ if ((whitelist && whitelist->Find(id_value) != whitelist->end()) ||
+ (forcelist && forcelist->Find(id_value) != forcelist->end()))
return true;
- // Then check the blacklist (the admin blacklist, not the Google blacklist).
- bool result = blacklist->Find(id_value) == blacklist->end() &&
- !BlacklistedByDefault(blacklist);
+ // Then check both admin and Google blacklists.
+ bool result = !is_google_blacklisted &&
+ (!blacklist || blacklist->Find(id_value) == blacklist->end()) &&
+ !BlacklistedByDefault(blacklist);
if (error && !result) {
*error = l10n_util::GetStringFUTF16(
IDS_EXTENSION_CANT_INSTALL_POLICY_BLACKLIST,
« no previous file with comments | « chrome/browser/extensions/admin_policy.h ('k') | chrome/browser/extensions/admin_policy_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698