Index: extensions/browser/management_policy.cc |
diff --git a/extensions/browser/management_policy.cc b/extensions/browser/management_policy.cc |
index 50183d04884cd5596df851ad43c7f58a5aaaf90b..2b107524509b4092be9b02160ca42290109d4712 100644 |
--- a/extensions/browser/management_policy.cc |
+++ b/extensions/browser/management_policy.cc |
@@ -25,6 +25,7 @@ ManagementPolicy::~ManagementPolicy() { |
} |
bool ManagementPolicy::Provider::UserMayLoad(const Extension* extension, |
+ int install_flags, |
base::string16* error) const { |
return true; |
} |
@@ -56,9 +57,18 @@ void ManagementPolicy::UnregisterProvider(Provider* provider) { |
} |
bool ManagementPolicy::UserMayLoad(const Extension* extension, |
+ int install_flags, |
base::string16* error) const { |
- return ApplyToProviderList(&Provider::UserMayLoad, "Installation", |
- true, extension, error); |
+ for (ProviderList::const_iterator it = providers_.begin(); |
+ it != providers_.end(); |
+ ++it) { |
+ const Provider* provider = *it; |
+ if (!provider->UserMayLoad(extension, install_flags, error)) { |
+ LogProhibitedOperation("Installation", extension, provider); |
+ return false; |
+ } |
+ } |
+ return true; |
} |
bool ManagementPolicy::UserMayModifySettings(const Extension* extension, |
@@ -102,16 +112,22 @@ bool ManagementPolicy::ApplyToProviderList(ProviderFunction function, |
const Provider* provider = *it; |
bool result = (provider->*function)(extension, error); |
if (result != normal_result) { |
- std::string id; |
- std::string name; |
- GetExtensionNameAndId(extension, &name, &id); |
- DVLOG(1) << debug_operation_name << " of extension " << name |
- << " (" << id << ")" |
- << " prohibited by " << provider->GetDebugPolicyProviderName(); |
+ LogProhibitedOperation(debug_operation_name, extension, provider); |
return !normal_result; |
} |
} |
return normal_result; |
} |
+void ManagementPolicy::LogProhibitedOperation(const char* debug_operation_name, |
+ const Extension* extension, |
+ const Provider* provider) const { |
+ std::string id; |
+ std::string name; |
+ GetExtensionNameAndId(extension, &name, &id); |
+ DVLOG(1) << debug_operation_name << " of extension " << name |
+ << " (" << id << ")" |
+ << " prohibited by " << provider->GetDebugPolicyProviderName(); |
+} |
+ |
} // namespace extensions |