blob: 0dc1a7e4a8728b5dbf3dc5f7e573e0f20265e976 [file] [log] [blame]
// 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