| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chrome/browser/extensions/permissions_based_management_policy_provider.h" |
| |
| #include "base/strings/string16.h" |
| #include "base/strings/utf_string_conversions.h" |
| #include "chrome/browser/extensions/extension_management.h" |
| #include "extensions/common/extension.h" |
| #include "extensions/common/manifest_handlers/permissions_parser.h" |
| #include "extensions/common/permissions/permission_set.h" |
| #include "extensions/strings/grit/extensions_strings.h" |
| #include "ui/base/l10n/l10n_util.h" |
| |
| namespace extensions { |
| |
| PermissionsBasedManagementPolicyProvider:: |
| PermissionsBasedManagementPolicyProvider(ExtensionManagement* settings) |
| : settings_(settings) { |
| } |
| |
| PermissionsBasedManagementPolicyProvider:: |
| ~PermissionsBasedManagementPolicyProvider() { |
| } |
| |
| std::string |
| PermissionsBasedManagementPolicyProvider::GetDebugPolicyProviderName() const { |
| #ifdef NDEBUG |
| NOTREACHED(); |
| return std::string(); |
| #else |
| return "Controlled by enterprise policy, restricting extension permissions."; |
| #endif |
| } |
| |
| bool PermissionsBasedManagementPolicyProvider::UserMayLoad( |
| const Extension* extension, |
| base::string16* error) const { |
| // Component extensions are always allowed. |
| if (Manifest::IsComponentLocation(extension->location())) |
| return true; |
| |
| if (!settings_->IsPermissionSetAllowed( |
| extension, PermissionsParser::GetRequiredPermissions(extension))) { |
| if (error) { |
| *error = l10n_util::GetStringFUTF16( |
| IDS_EXTENSION_CANT_INSTALL_POLICY_BLOCKED, |
| base::UTF8ToUTF16(extension->name()), |
| base::UTF8ToUTF16(extension->id()), |
| base::UTF8ToUTF16(settings_->BlockedInstallMessage(extension->id()))); |
| } |
| return false; |
| } |
| |
| return true; |
| } |
| |
| } // namespace extensions |