extension_registry.cc revision 23730a6e56a168d1879203e4b3819bb36e3d8f1f
1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "extensions/browser/extension_registry.h" 6 7#include "base/strings/string_util.h" 8#include "extensions/browser/extension_registry_factory.h" 9#include "extensions/browser/extension_registry_observer.h" 10 11namespace extensions { 12 13ExtensionRegistry::ExtensionRegistry() {} 14ExtensionRegistry::~ExtensionRegistry() {} 15 16// static 17ExtensionRegistry* ExtensionRegistry::Get(content::BrowserContext* context) { 18 return ExtensionRegistryFactory::GetForBrowserContext(context); 19} 20 21scoped_ptr<ExtensionSet> ExtensionRegistry::GenerateInstalledExtensionsSet() 22 const { 23 scoped_ptr<ExtensionSet> installed_extensions(new ExtensionSet); 24 installed_extensions->InsertAll(enabled_extensions_); 25 installed_extensions->InsertAll(disabled_extensions_); 26 installed_extensions->InsertAll(terminated_extensions_); 27 installed_extensions->InsertAll(blacklisted_extensions_); 28 return installed_extensions.Pass(); 29} 30 31void ExtensionRegistry::AddObserver(ExtensionRegistryObserver* observer) { 32 observers_.AddObserver(observer); 33} 34 35void ExtensionRegistry::RemoveObserver(ExtensionRegistryObserver* observer) { 36 observers_.RemoveObserver(observer); 37} 38 39void ExtensionRegistry::TriggerOnUnloaded(const Extension* extension) { 40 DCHECK(!enabled_extensions_.Contains(extension->id())); 41 FOR_EACH_OBSERVER( 42 ExtensionRegistryObserver, observers_, OnExtensionUnloaded(extension)); 43} 44 45const Extension* ExtensionRegistry::GetExtensionById(const std::string& id, 46 int include_mask) const { 47 std::string lowercase_id = StringToLowerASCII(id); 48 if (include_mask & ENABLED) { 49 const Extension* extension = enabled_extensions_.GetByID(lowercase_id); 50 if (extension) 51 return extension; 52 } 53 if (include_mask & DISABLED) { 54 const Extension* extension = disabled_extensions_.GetByID(lowercase_id); 55 if (extension) 56 return extension; 57 } 58 if (include_mask & TERMINATED) { 59 const Extension* extension = terminated_extensions_.GetByID(lowercase_id); 60 if (extension) 61 return extension; 62 } 63 if (include_mask & BLACKLISTED) { 64 const Extension* extension = blacklisted_extensions_.GetByID(lowercase_id); 65 if (extension) 66 return extension; 67 } 68 return NULL; 69} 70 71bool ExtensionRegistry::AddEnabled( 72 const scoped_refptr<const Extension>& extension) { 73 return enabled_extensions_.Insert(extension); 74} 75 76bool ExtensionRegistry::RemoveEnabled(const std::string& id) { 77 return enabled_extensions_.Remove(id); 78} 79 80bool ExtensionRegistry::AddDisabled( 81 const scoped_refptr<const Extension>& extension) { 82 return disabled_extensions_.Insert(extension); 83} 84 85bool ExtensionRegistry::RemoveDisabled(const std::string& id) { 86 return disabled_extensions_.Remove(id); 87} 88 89bool ExtensionRegistry::AddTerminated( 90 const scoped_refptr<const Extension>& extension) { 91 return terminated_extensions_.Insert(extension); 92} 93 94bool ExtensionRegistry::RemoveTerminated(const std::string& id) { 95 return terminated_extensions_.Remove(id); 96} 97 98bool ExtensionRegistry::AddBlacklisted( 99 const scoped_refptr<const Extension>& extension) { 100 return blacklisted_extensions_.Insert(extension); 101} 102 103bool ExtensionRegistry::RemoveBlacklisted(const std::string& id) { 104 return blacklisted_extensions_.Remove(id); 105} 106 107void ExtensionRegistry::ClearAll() { 108 enabled_extensions_.Clear(); 109 disabled_extensions_.Clear(); 110 terminated_extensions_.Clear(); 111 blacklisted_extensions_.Clear(); 112} 113 114void ExtensionRegistry::SetDisabledModificationCallback( 115 const ExtensionSet::ModificationCallback& callback) { 116 disabled_extensions_.set_modification_callback(callback); 117} 118 119void ExtensionRegistry::Shutdown() { 120 // Release references to all Extension objects in the sets. 121 ClearAll(); 122} 123 124} // namespace extensions 125