| Index: extensions/browser/extension_registry.cc
|
| diff --git a/extensions/browser/extension_registry.cc b/extensions/browser/extension_registry.cc
|
| index bc5247cdce2002d9cadaf121809d15f0bcbc8e59..cb1e8cc0a872b3ea704e9ea761f88192dccf1ef1 100644
|
| --- a/extensions/browser/extension_registry.cc
|
| +++ b/extensions/browser/extension_registry.cc
|
| @@ -6,6 +6,7 @@
|
|
|
| #include "base/strings/string_util.h"
|
| #include "extensions/browser/extension_registry_factory.h"
|
| +#include "extensions/browser/extension_registry_observer.h"
|
|
|
| namespace extensions {
|
|
|
| @@ -17,6 +18,14 @@ ExtensionRegistry* ExtensionRegistry::Get(content::BrowserContext* context) {
|
| return ExtensionRegistryFactory::GetForBrowserContext(context);
|
| }
|
|
|
| +void ExtensionRegistry::AddObserver(ExtensionRegistryObserver* observer) {
|
| + observers_.AddObserver(observer);
|
| +}
|
| +
|
| +void ExtensionRegistry::RemoveObserver(ExtensionRegistryObserver* observer) {
|
| + observers_.RemoveObserver(observer);
|
| +}
|
| +
|
| const Extension* ExtensionRegistry::GetExtensionById(const std::string& id,
|
| int include_mask) const {
|
| std::string lowercase_id = StringToLowerASCII(id);
|
| @@ -43,22 +52,42 @@ const Extension* ExtensionRegistry::GetExtensionById(const std::string& id,
|
| return NULL;
|
| }
|
|
|
| -bool ExtensionRegistry::AddEnabled(
|
| +void ExtensionRegistry::UnloadExtension(
|
| const scoped_refptr<const Extension>& extension) {
|
| - return enabled_extensions_.Insert(extension);
|
| + enabled_extensions_.Remove(extension->id());
|
| + disabled_extensions_.Remove(extension->id());
|
| + FOR_EACH_OBSERVER(ExtensionRegistryObserver,
|
| + observers_,
|
| + OnExtensionUnloaded(extension.get()));
|
| }
|
|
|
| -bool ExtensionRegistry::RemoveEnabled(const std::string& id) {
|
| - return enabled_extensions_.Remove(id);
|
| +void ExtensionRegistry::EnableExtension(
|
| + const scoped_refptr<const Extension>& extension) {
|
| + DCHECK(disabled_extensions_.Contains(extension->id()));
|
| + enabled_extensions_.Insert(extension);
|
| + disabled_extensions_.Remove(extension->id());
|
| }
|
|
|
| -bool ExtensionRegistry::AddDisabled(
|
| +void ExtensionRegistry::DisableExtension(
|
| const scoped_refptr<const Extension>& extension) {
|
| - return disabled_extensions_.Insert(extension);
|
| + DCHECK(enabled_extensions_.Contains(extension->id()) ||
|
| + terminated_extensions_.Contains(extension->id()));
|
| + disabled_extensions_.Insert(extension);
|
| + enabled_extensions_.Remove(extension->id());
|
| + terminated_extensions_.Remove(extension->id());
|
| + FOR_EACH_OBSERVER(ExtensionRegistryObserver,
|
| + observers_,
|
| + OnExtensionDisabled(extension.get()));
|
| }
|
|
|
| -bool ExtensionRegistry::RemoveDisabled(const std::string& id) {
|
| - return disabled_extensions_.Remove(id);
|
| +bool ExtensionRegistry::AddEnabled(
|
| + const scoped_refptr<const Extension>& extension) {
|
| + return enabled_extensions_.Insert(extension);
|
| +}
|
| +
|
| +bool ExtensionRegistry::AddDisabled(
|
| + const scoped_refptr<const Extension>& extension) {
|
| + return disabled_extensions_.Insert(extension);
|
| }
|
|
|
| bool ExtensionRegistry::AddTerminated(
|
|
|