| Index: chrome/browser/extensions/extensions_service.cc
|
| diff --git a/chrome/browser/extensions/extensions_service.cc b/chrome/browser/extensions/extensions_service.cc
|
| index 46bce982bd6955c5ecc8a32017d690e2806ba1f6..d7cb20647a6d32c70c3f7946fde674901e583a03 100644
|
| --- a/chrome/browser/extensions/extensions_service.cc
|
| +++ b/chrome/browser/extensions/extensions_service.cc
|
| @@ -220,8 +220,11 @@ void ExtensionsService::EnableExtension(const std::string& extension_id) {
|
| return;
|
| }
|
|
|
| + // Remember that we enabled it, unless it's temporary.
|
| + if (extension->location() != Extension::LOAD)
|
| + extension_prefs_->SetExtensionState(extension, Extension::ENABLED);
|
| +
|
| // Move it over to the enabled list.
|
| - extension_prefs_->SetExtensionState(extension, Extension::ENABLED);
|
| extensions_.push_back(extension);
|
| ExtensionList::iterator iter = std::find(disabled_extensions_.begin(),
|
| disabled_extensions_.end(),
|
| @@ -237,6 +240,33 @@ void ExtensionsService::EnableExtension(const std::string& extension_id) {
|
| Details<Extension>(extension));
|
| }
|
|
|
| +void ExtensionsService::DisableExtension(const std::string& extension_id) {
|
| + Extension* extension = GetExtensionByIdInternal(extension_id, true, false);
|
| + if (!extension) {
|
| + NOTREACHED() << "Trying to disable an extension that isn't enabled.";
|
| + return;
|
| + }
|
| +
|
| + // Remember that we disabled it, unless it's temporary.
|
| + if (extension->location() != Extension::LOAD)
|
| + extension_prefs_->SetExtensionState(extension, Extension::DISABLED);
|
| +
|
| + // Move it over to the disabled list.
|
| + disabled_extensions_.push_back(extension);
|
| + ExtensionList::iterator iter = std::find(extensions_.begin(),
|
| + extensions_.end(),
|
| + extension);
|
| + extensions_.erase(iter);
|
| +
|
| + ExtensionDOMUI::UnregisterChromeURLOverrides(profile_,
|
| + extension->GetChromeURLOverrides());
|
| +
|
| + NotificationService::current()->Notify(
|
| + NotificationType::EXTENSION_UNLOADED,
|
| + Source<ExtensionsService>(this),
|
| + Details<Extension>(extension));
|
| +}
|
| +
|
| void ExtensionsService::LoadExtension(const FilePath& extension_path) {
|
| backend_loop_->PostTask(FROM_HERE, NewRunnableMethod(backend_.get(),
|
| &ExtensionsServiceBackend::LoadSingleExtension,
|
|
|