| Index: chrome/browser/extensions/extension_management_api.cc
|
| ===================================================================
|
| --- chrome/browser/extensions/extension_management_api.cc (revision 138227)
|
| +++ chrome/browser/extensions/extension_management_api.cc (working copy)
|
| @@ -17,6 +17,8 @@
|
| #include "chrome/browser/extensions/extension_event_router.h"
|
| #include "chrome/browser/extensions/extension_management_api_constants.h"
|
| #include "chrome/browser/extensions/extension_service.h"
|
| +#include "chrome/browser/extensions/extension_system.h"
|
| +#include "chrome/browser/extensions/management_policy.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| #include "chrome/browser/ui/browser.h"
|
| #include "chrome/browser/ui/webui/extensions/extension_icon_source.h"
|
| @@ -59,11 +61,17 @@
|
| bool enabled = service->IsExtensionEnabled(extension.id());
|
| extension.GetBasicInfo(enabled, info);
|
|
|
| + const extensions::ManagementPolicy* policy = ExtensionSystem::Get(
|
| + service->profile())->management_policy();
|
| + info->SetBoolean(keys::kMayDisableKey,
|
| + policy->UserMayModifySettings(&extension, NULL));
|
| +
|
| info->SetBoolean(keys::kIsAppKey, extension.is_app());
|
|
|
| if (!enabled) {
|
| - bool permissions_escalated = service->extension_prefs()->
|
| - DidExtensionEscalatePermissions(extension.id());
|
| + ExtensionPrefs* prefs = service->extension_prefs();
|
| + bool permissions_escalated =
|
| + prefs->DidExtensionEscalatePermissions(extension.id());
|
| const char* reason = permissions_escalated ?
|
| keys::kDisabledReasonPermissionsIncrease : keys::kDisabledReasonUnknown;
|
| info->SetString(keys::kDisabledReasonKey, reason);
|
| @@ -170,7 +178,7 @@
|
| const Extension* extension = service()->GetExtensionById(ext_id, true);
|
| if (!extension) {
|
| error_ = ExtensionErrorUtils::FormatErrorMessage(keys::kNoExtensionError,
|
| - ext_id);
|
| + ext_id);
|
| return false;
|
| }
|
|
|
| @@ -190,7 +198,7 @@
|
| class SafeManifestJSONParser : public UtilityProcessHostClient {
|
| public:
|
| SafeManifestJSONParser(GetPermissionWarningsByManifestFunction* client,
|
| - const std::string& manifest)
|
| + const std::string& manifest)
|
| : client_(client),
|
| manifest_(manifest) {}
|
|
|
| @@ -366,9 +374,11 @@
|
| return false;
|
| }
|
|
|
| - if (!Extension::UserMayDisable(extension->location())) {
|
| + const extensions::ManagementPolicy* policy = ExtensionSystem::Get(
|
| + profile())->management_policy();
|
| + if (!policy->UserMayModifySettings(extension, NULL)) {
|
| error_ = ExtensionErrorUtils::FormatErrorMessage(
|
| - keys::kUserCantDisableError, extension_id_);
|
| + keys::kUserCantModifyError, extension_id_);
|
| return false;
|
| }
|
|
|
| @@ -421,12 +431,11 @@
|
| return false;
|
| }
|
|
|
| - ExtensionPrefs* prefs = service()->extension_prefs();
|
| -
|
| - if (!Extension::UserMayDisable(
|
| - prefs->GetInstalledExtensionInfo(extension_id)->extension_location)) {
|
| + const Extension* extension = service()->GetExtensionById(extension_id, true);
|
| + if (!ExtensionSystem::Get(
|
| + profile())->management_policy()->UserMayModifySettings(extension, NULL)) {
|
| error_ = ExtensionErrorUtils::FormatErrorMessage(
|
| - keys::kUserCantDisableError, extension_id);
|
| + keys::kUserCantModifyError, extension_id);
|
| return false;
|
| }
|
|
|
|
|