| Index: chrome/browser/extensions/installed_loader.cc
|
| diff --git a/chrome/browser/extensions/installed_loader.cc b/chrome/browser/extensions/installed_loader.cc
|
| index 75241cd0d9bd71973c689354b81a22e1bcfe35c6..e92d36d0f9c5a9f5a3f999cd4e8c1f5a14a0169a 100644
|
| --- a/chrome/browser/extensions/installed_loader.cc
|
| +++ b/chrome/browser/extensions/installed_loader.cc
|
| @@ -166,11 +166,18 @@ void InstalledLoader::Load(const ExtensionInfo& info, bool write_to_prefs) {
|
| // Chrome was not running.
|
| const ManagementPolicy* policy = extensions::ExtensionSystem::Get(
|
| extension_service_->profile())->management_policy();
|
| - if (extension.get() && !policy->UserMayLoad(extension.get(), NULL)) {
|
| - // The error message from UserMayInstall() often contains the extension ID
|
| - // and is therefore not well suited to this UI.
|
| - error = errors::kDisabledByPolicy;
|
| - extension = NULL;
|
| + if (extension.get()) {
|
| + Extension::DisableReason disable_reason = Extension::DISABLE_NONE;
|
| + if (!policy->UserMayLoad(extension.get(), NULL)) {
|
| + // The error message from UserMayInstall() often contains the extension ID
|
| + // and is therefore not well suited to this UI.
|
| + error = errors::kDisabledByPolicy;
|
| + extension = NULL;
|
| + } else if (!extension_prefs_->IsExtensionDisabled(extension->id()) &&
|
| + policy->MustRemainDisabled(extension, &disable_reason, NULL)) {
|
| + extension_prefs_->SetExtensionState(extension->id(), Extension::DISABLED);
|
| + extension_prefs_->AddDisableReason(extension->id(), disable_reason);
|
| + }
|
| }
|
|
|
| if (!extension.get()) {
|
|
|