| Index: chrome/browser/extensions/extension_service.cc
|
| diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc
|
| index 4735bb17bbad6c4ca6a422d0e35045121c48d5bd..fd3e8f36f63392ac57c4324e50847fa6abd6a73c 100644
|
| --- a/chrome/browser/extensions/extension_service.cc
|
| +++ b/chrome/browser/extensions/extension_service.cc
|
| @@ -869,6 +869,12 @@ void ExtensionService::DisableExtension(const std::string& extension_id,
|
| }
|
|
|
| const Extension* extension = GetInstalledExtension(extension_id);
|
| +
|
| + // Shared modules cannot be disabled, they are just resources used by other
|
| + // extensions, and are not user controlled.
|
| + if (extension && SharedModuleInfo::IsSharedModule(extension))
|
| + return;
|
| +
|
| // |extension| can be nullptr if sync disables an extension that is not
|
| // installed yet.
|
| // EXTERNAL_COMPONENT extensions are not generally modifiable by users, but
|
| @@ -1420,6 +1426,18 @@ void ExtensionService::OnLoadedInstalledExtensions() {
|
| if (updater_)
|
| updater_->Start();
|
|
|
| + // Enable any Shared Modules that incorrectly got disabled previously.
|
| + // This is temporary code to fix incorrect behavior from previous versions of
|
| + // Chrome and can be removed after several releases (perhaps M60).
|
| + extensions::ExtensionList to_enable;
|
| + for (const auto& extension : registry_->disabled_extensions()) {
|
| + if (SharedModuleInfo::IsSharedModule(extension.get()))
|
| + to_enable.push_back(extension);
|
| + }
|
| + for (const auto& extension : to_enable) {
|
| + EnableExtension(extension->id());
|
| + }
|
| +
|
| OnBlacklistUpdated();
|
| }
|
|
|
|
|