| Index: chrome/browser/extensions/extension_service.cc
|
| diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc
|
| index a74de002987077876c71a5b99854424acaa926b9..b8a78276c18ee79503e4ae44d3a76013317fe657 100644
|
| --- a/chrome/browser/extensions/extension_service.cc
|
| +++ b/chrome/browser/extensions/extension_service.cc
|
| @@ -1065,16 +1065,19 @@ void ExtensionService::DisableUserExtensions(
|
| system_->management_policy();
|
| extensions::ExtensionList to_disable;
|
|
|
| + // TODO(rlp): Clean up this code. crbug.com/353266.
|
| const ExtensionSet& enabled_set = registry_->enabled_extensions();
|
| for (ExtensionSet::const_iterator extension = enabled_set.begin();
|
| extension != enabled_set.end(); ++extension) {
|
| - if (management_policy->UserMayModifySettings(extension->get(), NULL))
|
| + if (management_policy->UserMayModifySettings(extension->get(), NULL) &&
|
| + extension->get()->location() != Manifest::EXTERNAL_COMPONENT)
|
| to_disable.push_back(*extension);
|
| }
|
| const ExtensionSet& terminated_set = registry_->terminated_extensions();
|
| for (ExtensionSet::const_iterator extension = terminated_set.begin();
|
| extension != terminated_set.end(); ++extension) {
|
| - if (management_policy->UserMayModifySettings(extension->get(), NULL))
|
| + if (management_policy->UserMayModifySettings(extension->get(), NULL) &&
|
| + extension->get()->location() != Manifest::EXTERNAL_COMPONENT)
|
| to_disable.push_back(*extension);
|
| }
|
|
|
| @@ -2643,8 +2646,13 @@ void ExtensionService::SetBeingReloaded(const std::string& extension_id,
|
| bool ExtensionService::ShouldEnableOnInstall(const Extension* extension) {
|
| // Extensions installed by policy can't be disabled. So even if a previous
|
| // installation disabled the extension, make sure it is now enabled.
|
| - if (system_->management_policy()->MustRemainEnabled(extension, NULL))
|
| + // TODO(rlp): Clean up the special case for external components as noted
|
| + // in crbug.com/353266. For now, EXTERNAL_COMPONENT apps should be
|
| + // default enabled on install as before.
|
| + if (system_->management_policy()->MustRemainEnabled(extension, NULL) ||
|
| + extension->location() == Manifest::EXTERNAL_COMPONENT) {
|
| return true;
|
| + }
|
|
|
| if (extension_prefs_->IsExtensionDisabled(extension->id()))
|
| return false;
|
|
|